Ejecutando Linux kernel 3.14.43, estoy leyendo desde un dispositivo CDC ACM (implementado en un LPC4330). El dispositivo aparece en /dev/ttyACM0 y puedo abrirlo y leerlo de la forma normal.
El dispositivo parece estar almacenando en búfer alrededor de 4096 bytes (obtengo lecturas de 4095 bytes, por lo general, después de un período de lecturas de casi 12 bytes durante la fase inicial de funcionamiento). Cuando se ejecuta en una elegante estación de trabajo Schmancy, todo funciona sin problemas. Sin embargo, cuando se ejecuta en un dispositivo integrado (AM3352), ocasionalmente se pierden datos si busco una velocidad de datos alta. Sospecho que el búfer de lectura se está sobrecargando: la alta velocidad de datos es lo suficientemente rápida como para llenar un búfer de 4k en no mucho más de 1 mseg (3,8 MB/s), y parece muy posible que no regrese al read() llama lo suficientemente rápido como para mantenerse al día, dado que el dispositivo está haciendo muchas otras cosas en otros subprocesos y estoy usando SCHED_OTHER en todos los ámbitos.
Entonces, primero, ¿hay alguna forma de aumentar el tamaño del búfer del dispositivo? Como complemento, ¿hay alguna forma de detectar que los búferes aquí se han desbordado? Supongo que tengo otra opción de usar la programación en tiempo real para el subproceso de lectura (), pero prefiero no entrar en eso si es posible.
Gracias.