Я написал драйвер устройства, который создает 3 устройства с одинаковой файловой системой. Таким образом, в основном все 3 устройства при вызове перенаправляют на одни и те же файловые операции. Есть еще одна пользовательская программа, которая открывает отдельные устройства одно за другим для доступа к данным из него. Предположим, что я не закрываю устройство перед доступом к другому, каковы будут последствия?
fd1 = open("/dev/dummy1", O_RDWR);
if(fd1 < 0){
printf("Cannot open file");
return -1;
}
if(ioctl(fd1, DV_DAT, data) == -1){
printf("issue in getting data\n");
}
else{
printf("%d\n", data);
}
fd2 = open("/dev/dummy2", O_RDWR);
if(fd2 < 0){
printf("Cannot open file");
return -1;
}
if(ioctl(fd2, DV_DAT, data) == -1){
printf("issue in getting data\n");
}
else{
printf("%d\n", data);
}
close(fd2);
fd3 = open("/dev/dummy3", O_RDWR);
if(fd3 < 0){
printf("Cannot open file");
return -1;
}
if(ioctl(fd3, DV_DAT, data) == -1){
printf("issue in getting data\n");
}
else{
printf("%d\n", data);
}
close(fd3);
close(fd1);
Эта попытка состоит в том, чтобы проверить реальный сценарий, в котором все три узла устройства считаются независимыми и могут быть доступны для разные программы одновременно. Это когда программа уже открыла файл и работает с ним, когда другая программа открывает файл.
Какое решение этой проблемы? Как я могу убедиться, что у меня нет сбоев в работе ядра?