3.1. Leyendo Datos

La función de lectura es una función de retrollamada que permite a los procesos de usuario leer datos del núcleo. La función de lectura debe de tener el siguiente formato:

int read_func(char* page, char** start, off_t off, int count, int* eof, void* data);

La función de lectura debería de escribir su información en page. Para un uso adecuado, la función debería de empezar escribiendo en un desplazamiento de off en page y escribir al menos count bytes, como la mayoría de las funciones de lectura son bastante simples y sólo retornarán una pequeña cantidad de información, estos dos parámetros son usualmente ignorados (y rompe paginadores como more y less, pero cat todavía trabaja).

Si los parámetros off y count son usados de una forma adecuada, eof debería de ser utilizado para señalar que el final del archivo ha llegado escribiendo 1 en la localización de memoria a donde apunta eof.

El parámetro start no parece ser usado en ningún sitio en el núcleo. El parámetro data puede ser usado para crear una función simple de retrollamada para varios archivos, ver Sección 3.3.

La función read_func debe de retornar el número de bytes escritos en page.

Capítulo 5 muestra cómo usar la función de retrollamada de lectura.