es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cuando defines una función de lectura para un módulo del kernel, ¿de dónde provienen los argumentos de la función cuando es llamada?

Digamos que tengo un módulo de kernel llamado “hello”.

Por ejemplo:

static struct file_operations hello_fops = {
        .open = hello_open,
        .read = hello_read,
        .release = hello_release,
};
static ssize_t hello_read(struct file *f, char *buf, size_t len, loff_t *offset){
       // algún código aquí
}

Cuando lees desde el archivo de dispositivo de caracteres /dev/hello, se llamará a la función hello_read, pero ¿de dónde provienen los argumentos de la función?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Cuando se llama a la función hello_read para leer del archivo de dispositivo de caracteres /dev/hello, sus argumentos provienen de lo siguiente:

    • f: Este es un puntero a un objeto de archivo que representa el archivo de dispositivo abierto /dev/hello.

    • buf: Este es un puntero al búfer donde se almacenarán los datos leídos del archivo de dispositivo.

    • len: Este es el número máximo de bytes que se pueden leer del archivo de dispositivo.

    • offset: Este es un puntero a una variable que contiene la posición actual del desplazamiento del archivo. Se utiliza para realizar un seguimiento de dónde debería comenzar la próxima operación de lectura. El tipo loff_t se utiliza para representar desplazamientos de archivos grandes.

Comments are closed.