blindman писал(а):С чего это оно сбрасывает? Драйвер то отдал уже данные - может они еще валидны, откуда ядро-то об этом знает?
Пусть сбрасывает. У нас же 2 случая:
1. Пофик, теряем байты или нет. АЦП то же.
2. Не пофик - какой-то ЖКИ.
Если жестко прописываем, что происходит сброс, то АЦП надо будет сказать, что не только разрядность поменяли, но и читать хотим с 4-го канала. Если не указали откуда читать - читаем сначала. Точно так же и с ХКИ. Что-то поменяли в регистрах - будем указывать по-новой откуда читать и что.
Зато все системы будут работать однотипно и прозрачно.
А иначе: "тут играем, тут не играем, а тут рыбу заворачивали..."
Добавлено спустя 37 секунд:в общем, вы тут быстрее успеваете договариваться, чем я - формулировать
Добавлено спустя 3 минуты 3 секунды:blindman писал(а):Пример. Читаем АЦП в 16-битном режиме. Нужно прочитать 4 канала, от 0 до 3. Ядро запросило 10 байт, в результате драйвер выдал данные 5 каналов. Теперь надо прочитать каналы 4-7 в 8-битном режиме. Пишем значение в регистр конфигурации, начинаем читать 4 байта. В результате получаем лажу в первых 2 прочитанных байтах.
Пример не очень, кстати. С чего вдруг ядро запросило 10 байт, а не 2 или 20? И задачи 16-битного запроса и 8-битного - это разные задачи. Логично их разделять.
Это я к тому, что задач что-то не густо, где сохранение буфера необходимо.