LINUX.ORG.RU

libuv+pipe+device file


0

1

Добрый день.
С использованием libuv пишу библиотеку, которая работает с файлом устройства. Сперва все было сделано на uv_fs_read/uv_fs_write, но оказалось слишком медленным, поэтому было предложено заменить запись/чтение на запись/чтение с помощью пайпов.
Использование libuv обосновано необходимостью асинхронности и наличием nodejs на борту
Вот отсюда содрал код: http://nikhilm.github.io/uvbook/filesystem.html#buffers-and-streams
Теперь о проблеме:
Если попробовать записать данные в обычный файл, то все корректно запишется, вызовется коллбек и программа завершится нормально.
Если же писать в файл устройства, то запись будет происходить бесконечно: то есть содержимое буффера будет корректно записываться в устройство(по логам устройства видно), коллбек не вызывается, программа не завершается.
Все еще усложняется тем, что драйвер для армоплаты, поэтому отладка на нем затруднена: при попытке запустить программу в гдб на плате, оно выдает ООМ.
Мне кажется целесообразным сформулировать вопрос таким образом: чем отличаются обычный файл и файл устройства с точки зрения записи в него с помощью пайпов?

Deleted

Смог запустить удаленный гдб: проблема была в том, что я запускал run_loop() сразу после вызова функции с пайпами.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.