LinuxÒÁµéÔ°ÂÛ̳'s Archiver

linkstack ·¢±íÓÚ 2008-3-28 13:31

ÈçºÎÐ¶ÔØÕâ¸öÄ£¿é(µ÷ÓÃÁËtry_module_getº¯Êý)?

Ä£¿éΪchrdev.ko,ÄÚºËΪ2.6.22.6
Ä£¿éµÄinit_moduleºÍcleanup_module:
int init_module(void){
        Major=register_chrdev(0,"hello",&fops);
        if(Major<0){
                printk(KERN_ALERT"failure\n");
        }else{
                printk(KERN_ALERT"success\n");
                printk(KERN_ALERT"The major number is %d\n",Major);
        }
        try_module_get(THIS_MODULE);
        return 0;
}

void cleanup_module(void){
        int ret=unregister_chrdev(Major,"hello");
        if(ret<0) printk(KERN_ALERT"failure\n");
        else printk(KERN_ALERT"success\n");
}
±àÒëÖ®ºó,È»ºóinsmod chrdev.ko
È»ºólsmod|grep chrdev
Êä³öΪ:chrdev         6148    1
½Ó×Årmmod -f chrdev
Êä³öΪ:resource temporarily unavailable

Ë­ÄܸæËßÎÒÈçºÎÐ¶ÔØÕâ¸öÄ£¿é£¿Ð»Ð»£¡

zltjiangshi ·¢±íÓÚ 2008-3-29 16:33

Ð¶ÔØÄ£¿éº¯ÊýÓ¦¸Ã¼õÉÙÒýÓüÆÊý¡£

linkstack ·¢±íÓÚ 2008-3-29 17:00

лл£¡
¼õÉÙÒýÓüÆÊýÊÇдÔÚÄ£¿éÀï(try_module_put(THIS_MODULE))»¹ÊÇʹÓÃÃüÁî(²»ÖªµÀ)£¿

zltjiangshi ·¢±íÓÚ 2008-3-29 19:12

µ±È»ÊÇдÔÚÄ£¿éÀÖÁÓÚÊDz»ÊÇtry_module_put(THIS_MODULE)ÎÒ²»ÖªµÀ£¬È¥¿´¿´Êé¡£

linkstack ·¢±íÓÚ 2008-3-30 02:01

лл°æÖ÷£¡
¸Ð¼¤²»¾¡£¡

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.