int __init nvramdrv_init(void) { int r; r = register_chrdev(nvram_major, NVRAM_DEVNAME, &nvramdrv_fops); if (r < 0) { printk(KERN_CRIT "nvramdrv: unable to register %s(%d)\n", NVRAM_DEVNAME, nvram_major); return r; } if (nvram_major == 0) { nvram_major = r; printk(KERN_DEBUG "nvramdrv: got dynamic major %d\n", r); } #if LINUX_VERSION_CODE > KERNEL_VERSION(3,3,0) sema_init(&nvram_sem, 1); #else init_MUTEX(&nvram_sem); #endif down(&nvram_sem); init_nvram_block(); up(&nvram_sem); return 0; }
int ra_nvram_init(void) { int i, r = 0, ret = 0; printk("NVRAM: Kernel NVRAM start init.\n"); r = register_chrdev(ralink_nvram_major, RALINK_NVRAM_DEVNAME, &ralink_nvram_fops); if (r < 0) { printk(KERN_ERR "NVRAM: unable to register character device\n"); return r; } if (ralink_nvram_major == 0) { ralink_nvram_major = r; printk(KERN_DEBUG "NVRAM: got dynamic major %d\n", r); } sema_init(&nvram_sem, 1); #ifdef AUTO_REBUILD_NVRAM reinit: #endif down(&nvram_sem); for (i = 0; i < FLASH_BLOCK_NUM; i++) ret=init_nvram_block(i); #ifdef AUTO_REBUILD_NVRAM if (ret == NEED_REINIT) { /* try flash cleanup */ goto reinit; } #endif up(&nvram_sem); return 0; }
int __init ra_nvram_init(void) { int i; #ifndef CONFIG_DEVFS_FS int r = 0; #endif #ifdef CONFIG_DEVFS_FS if (devfs_register_chrdev(ralink_nvram_major, RALINK_NVRAM_DEVNAME, &ralink_nvram_fops)) { printk(KERN_ERR NAME ": unable to register character device\n"); return -EIO; } devfs_handle = devfs_register(NULL, RALINK_NVRAM_DEVNAME, DEVFS_FL_DEFAULT, ralink_nvram_major, 0, S_IFCHR | S_IRUGO | S_IWUGO, &ralink_nvram_fops, NULL); #else r = register_chrdev(ralink_nvram_major, RALINK_NVRAM_DEVNAME, &ralink_nvram_fops); if (r < 0) { printk(KERN_ERR "ralink_nvram: unable to register character device\n"); return r; } if (ralink_nvram_major == 0) { ralink_nvram_major = r; printk(KERN_DEBUG "ralink_nvram: got dynamic major %d\n", r); } #endif init_MUTEX(&nvram_sem); down(&nvram_sem); for (i = 0; i < FLASH_BLOCK_NUM; i++) init_nvram_block(i); up(&nvram_sem); return 0; }