Как вы можете очистить запись, используя файловый дескриптор?

Оказывается, все это неправильное понимание 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,...);

Предложения?

Ответы на вопрос(6)

Ваш ответ на вопрос