Beispiel #1
0
static int __init hello_init(void)
{
    int err;
    dev_t devid = 0;

    DEBUG(1, "hello world.\n");
    printf_param();

    if (helloworld_major) {
        err = register_chrdev_region(MKDEV(helloworld_major, helloworld_minor),\
                                     helloworld_nr_device, DEVICE_REGISTER_NAME);
    } else {
        err = alloc_chrdev_region(&devid, 0, helloworld_nr_device, DEVICE_REGISTER_NAME);
        helloworld_major = MAJOR (devid);
        helloworld_minor = MINOR(devid);
    }
    if (err < 0) {
        DEBUG (1, "ERR alloc_chrdev_region(or register_chrdev_region).\n");
        goto err_alloc_chrdev_region;
    }


    err = char_reg_setup_cdev();
    if (err < 0) {
        DEBUG (1, "err_char_reg_setup_cdev.\n");
        goto err_char_reg_setup_cdev;
    }

    return err;

err_char_reg_setup_cdev:
    unregister_chrdev_region(devid, helloworld_nr_device);
err_alloc_chrdev_region:
    return err;
}
Beispiel #2
0
static int __init hello_2_init (void)
{
    int result;
    dev = MKDEV (hello_major, hello_minor);
    result = register_chrdev_region (dev, number_of_devices, "test");
    if (result<0) {
        printk (KERN_WARNING "hello: can't get major number %d\n", hello_major);
        return result;
    }
    char_reg_setup_cdev ();
    printk (KERN_INFO "char device registered\n");
    return 0;
}