Добрый день.
С использованием libuv пишу библиотеку, которая работает с файлом устройства. Сперва все было сделано на uv_fs_read/uv_fs_write, но оказалось слишком медленным, поэтому было предложено заменить запись/чтение на запись/чтение с помощью пайпов.
Использование libuv обосновано необходимостью асинхронности и наличием nodejs на борту
Вот отсюда содрал код: http://nikhilm.github.io/uvbook/filesystem.html#buffers-and-streams
Теперь о проблеме:
Если попробовать записать данные в обычный файл, то все корректно запишется, вызовется коллбек и программа завершится нормально.
Если же писать в файл устройства, то запись будет происходить бесконечно: то есть содержимое буффера будет корректно записываться в устройство(по логам устройства видно), коллбек не вызывается, программа не завершается.
Все еще усложняется тем, что драйвер для армоплаты, поэтому отладка на нем затруднена: при попытке запустить программу в гдб на плате, оно выдает ООМ.
Мне кажется целесообразным сформулировать вопрос таким образом: чем отличаются обычный файл и файл устройства с точки зрения записи в него с помощью пайпов?
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум device file -> device structure (2010)
- Форум libuv & *BSD (2012)
- Форум libev или libuv (2016)
- Форум Связка /dev/file с /proc/devices/file (2018)
- Форум Освобождение памяти в libuv (2017)