next up previous contents index
Next: Un módulo algo más Up: Mi primer módulo Previous: Exportando nuestros propios símbolos   Índice General   Índice de Materias

Nota sobre como dar de alta servicios en init_module()

Con lo que sabemos ya casi estamos preparados para empezar a programar módulos en serio. Aun así, no puedo resistirme a repetir una última advertencia acerca de como dar de alta y de baja correctamente servicios en el kernel.

Como ya he explicado antes no se nos debe olvidar dar de baja todos los servicios registrados. Aún con todo, si por alguna razón el módulo no da de alta correctamente todos sus servicios, pueden suceder cosas desagradables, la manera correcta de manejar la política de registros de servicios la encontramos en [9], pág. 26:

int init_module(void) {
        int err;
        
        /* doy de alta todos las funcionalidades de mi módulo */
        err = register_this(ptr1, "mi_modulo");
        if (err) goto fail_this;
        err = register_that(ptr2, "mi_modulo");
        if (err) goto fail_that;
        err = register_those(ptr3, "mi_modulo");
        if (err) goto fail_those;
        
        ...

         return 0; /* si a salido bien */

        fail_those: unregister_those(ptr2, "mi_modulo");
        fail_that: unregister_that(ptr1, "mi_modulo");
        fail_this: return err; /* retornamos el código de error */
}

void cleanup_module(void) {
        unregister_those(ptr3, "mi_modulo");
        unregister_that(ptr2, "mi_modulo");
        unregister_this(ptr1, "mi_modulo");
        return;
}

Puede que sea el único sitio donde está bien visto el uso de un "goto'', así que ¡qué nadie lo tome por costumbre!.

Ahora mismo no sabemos como funcionan los mecanismos de registro de servicios, pues nuestro sencillo módulo no usaba ninguno de ellos, pero lo que interesa de este ejemplo es el diagrama de flujo del mismo. Recuérdelo cuando en la siguiente sección empecemos a implementar módulos funcionales.


next up previous contents index
Next: Un módulo algo más Up: Mi primer módulo Previous: Exportando nuestros propios símbolos   Índice General   Índice de Materias
Alberto Cortés 2001-03-26