Как вы можете очистить запись, используя файловый дескриптор?
Оказывается, все это неправильное понимание open () и fopen () происходит из-за глючного драйвера I2C в ядре Linux 2.6.14 на ARM. Backporting работающего битового драйвера решил основную причину проблемы, которую я пытался решить здесь.
Я пытаюсь выяснить проблему с драйвером последовательного устройства в Linux (I2C). Похоже, что при добавлении временных пауз ОС (снов) между записью и чтением на устройстве все работает ... (намного) лучше.
В сторону:Природа I2C заключается в том, что каждый байт, считываемый или записываемый мастером, подтверждается устройством на другом конце провода (ведомом) - вещи, улучшающие паузы, побуждают меня думать о драйвере как о асинхронной работе - что я могу » Примириться с тем, как работает автобус. Anyhoo ...
Я бы тоже хотелпромывать запись, чтобы быть уверенным (вместо использования фиксированной длительности паузы),или же каким-то образом проверить, что транзакция записи / чтения имеетзавершено многопоточным дружественным способом.
Проблема с использованиемfflush(fd);
является то, что это требует, чтобы 'fd' был указателем потока (не дескриптором файла), т.е.
FILE * fd = fopen("filename","r+");
... // do read and writes
fflush(fd);
Моя проблема в том, что мне нужно использоватьioctl()
, который не использует указатель потока. то есть
int fd = open("filename",O_RDWR);
ioctl(fd,...);
Предложения?