Продолжаю читать Linux Device Drivers 3 edВопрос про чтение фиксированного числа отсчетов из драйвера. Данные прибывают квантами по 4096 байт. Если пользователь запросил из драйвера точно 128 кБайт, что должен делать драйвер? Хотелось бы, чтобы драйвер попеременно спал и получал данные до тех пор пока не наберётся запрошенное юзером число байт.
Но Рубини в 6 Главе утверждает, что это не соглачуется с юниксной семантикой, а правильное поведенеие должно быть таким:
If a process calls read but no data is (yet) available, the process must block. The process is awakened as soon as some data arrives, and that data is returned to the caller, even if there is less than the amount requested in the count argument to the method.
Как в этом случае выходить из положения? Буферизовать данные в user-land? Хочется ятобы последовательность собранных данных была непрерывной.