int init_module(void) { cbuffer = create_cbuffer_t(MAX_ITEMS_CBUF); if (!cbuffer) { return -ENOMEM; } sema_init(&sem_cons, 0); sema_init(&sem_prod, 0); sema_init(&mutex, 1); proc_entry = proc_create_data("fifoproc",0666, NULL, &proc_entry_fops, NULL); if (proc_entry == NULL) { destroy_cbuffer_t(cbuffer); printk(KERN_INFO "Fifoproc: No puedo crear la entrada en proc\n"); return -ENOMEM; } printk(KERN_INFO "Fifoproc: Cargado el Modulo.\n"); return 0; }
/* Función exit module */ void cleanup_module( void ) { /* Eliminamos el dispositivo de tipo char */ unregister_chrdev(Major, DEVICE_NAME); destroy_cbuffer_t(cbuffer); /* Informamos */ printk(KERN_INFO "fifoproc: Module unloaded.\n"); }
void cleanup_module( void ) { destroy_cbuffer_t(cbuffer); unregister_chrdev(Major, DEVICE_NAME); printk(KERN_INFO "Fifoproc: Module unloaded.\n"); }
/*-----------------------------------------------------------------------------------*/ void mbox_free(struct sys_mbox *mbox) { if ((mbox != NULL )) { sys_sem_free(mbox->not_empty); sys_sem_free(mbox->not_full); pthread_mutex_destroy(mbox->mutex); free(mbox->mutex); destroy_cbuffer_t(mbox->cbuffer); mbox->not_empty = mbox->not_full = NULL; mbox->mutex = NULL; mbox->cbuffer = NULL; free(mbox); } }
void cleanup_module(void) { remove_proc_entry("fifoproc", NULL); destroy_cbuffer_t(cbuffer); printk(KERN_INFO "Fifoproc: Modulo descargado.\n"); }