当前位置: 首页>>代码示例>>C++>>正文


C++ cdev_init函数代码示例

本文整理汇总了C++中cdev_init函数的典型用法代码示例。如果您正苦于以下问题:C++ cdev_init函数的具体用法?C++ cdev_init怎么用?C++ cdev_init使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了cdev_init函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: my_mem_init

static int __init my_mem_init(void)
{
	int ret;
	dev_t dev;

	ret = alloc_chrdev_region(&dev, minor, 1, "my_mem");
	if (ret < 0) {
		printk(KERN_CRIT "fail to allocate chrdev region\n");
		return ret;
	}
	major = MAJOR(dev);

	printk("major=%d minor=%d\n", major, minor);

	cl = class_create(THIS_MODULE, "my_mem_class");
	if (IS_ERR(cl)) {
		printk(KERN_CRIT "fail to class_create\n");
		unregister_chrdev_region(dev, 1);
		return -1;
	}

	cdev_init(&my_cdev, &my_mem_fops);
	if (cdev_add(&my_cdev, dev, 1) == -1) {
		printk(KERN_CRIT "fail to cdev_add\n");
		class_destroy(cl);
		unregister_chrdev_region(dev, 1);
		return -1;
	}

	if (device_create(cl, NULL, MKDEV(major, minor), NULL, "my_mem0") == NULL) {
		printk(KERN_CRIT " fail to create device\n");
		class_destroy(cl);
		unregister_chrdev_region(MKDEV(major, minor), 1);
		cdev_del(&my_cdev);
		return -1;
	}
		
	return 0;
}
开发者ID:gurugio,项目名称:ldd,代码行数:39,代码来源:drv.c

示例2: mod_gpio_init

static int mod_gpio_init(void)
{
    S32         s32Ret;
    dev_t       dev;

    GPIO_PRINT("%s is invoked\n", __FUNCTION__);

    if (GPIODev.s32MajorGPIO)
    {
        dev = MKDEV(GPIODev.s32MajorGPIO, GPIODev.s32MinorGPIO);
        s32Ret = register_chrdev_region(dev, MOD_GPIO_DEVICE_COUNT, MOD_GPIO_NAME);
    }
    else
    {
        s32Ret = alloc_chrdev_region(&dev, GPIODev.s32MinorGPIO, MOD_GPIO_DEVICE_COUNT, MOD_GPIO_NAME);
        GPIODev.s32MajorGPIO = MAJOR(dev);
    }

    if ( 0 > s32Ret)
    {
        GPIO_PRINT("Unable to get major %d\n", GPIODev.s32MajorGPIO);
        return s32Ret;
    }

    cdev_init(&GPIODev.cDevice, &GPIODev.GPIOFop);
    if (0!= (s32Ret= cdev_add(&GPIODev.cDevice, dev, MOD_GPIO_DEVICE_COUNT)))
    {
        GPIO_PRINT("Unable add a character device\n");
        unregister_chrdev_region(dev, MOD_GPIO_DEVICE_COUNT);
        return s32Ret;
    }

	__mod_gpio_init();

	return 0;


}
开发者ID:Scorpio92,项目名称:mstar6a918,代码行数:38,代码来源:mdrv_gpio_io.c

示例3: bpamem_init

static int __init bpamem_init(void)
{
	int result;
	unsigned int i;
	for(i = 0; i < MAX_BPA_ALLOCS; i++)
	{
		bpamem_dev[i].used = 0;
		bpamem_dev[i].phys_addr = 0;
	}
	
	result = register_chrdev_region(MKDEV(BPAMEM_MAJOR, 0), MAX_BPA_ALLOCS, DEVICE_NAME);
	if (result < 0) {
		printk( KERN_ALERT "BPAMem cannot register device (%d)\n", result);
		return result;
	}

	cdev_init(&bpamem_cdev, &bpamem_devops);
	bpamem_cdev.owner = THIS_MODULE;
	bpamem_cdev.ops = &bpamem_devops;
	if (cdev_add(&bpamem_cdev, MKDEV(BPAMEM_MAJOR, 0), MAX_BPA_ALLOCS) < 0)
	{
		printk("BPAMem couldn't register '%s' driver\n", DEVICE_NAME);
		return -1;
	}

	bpamem_class = class_create(THIS_MODULE, DEVICE_NAME);
	for(i = 0; i < MAX_BPA_ALLOCS; i++)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
		device_create(bpamem_class, NULL, MKDEV(BPAMEM_MAJOR, i), NULL, "bpamem%d", i);
#else
		class_device_create(bpamem_class, NULL, MKDEV(BPAMEM_MAJOR, i), NULL, "bpamem%d", i);
#endif

	sema_init(&sem_find_dev, 1);
	
	DEBUG_PRINTK("BPAMem driver register result = %d", result);
	return result;
}
开发者ID:Vorahaz,项目名称:RUnigma,代码行数:38,代码来源:bpamem.c

示例4: test_init

static int __init test_init(void)	//模块初始化函数
{
	int result = 0;

	/*1.申请设备号*/
	if(major){						
		devno = MKDEV(major, minor);
		result = register_chrdev_region(devno, 1, "test new driver");
	}else{
		result = alloc_chrdev_region(&devno, minor, 1, "test alloc diver");
		major = MAJOR(devno);
		minor = MINOR(devno);
	}

	if(result < 0){
		P_DEBUG("register devno errno!\n");
		goto err0;
	}

	printk("major[%d] minor[%d]\n", major, minor);

	/*2.注册设备*/
	cdev_init(&test_cdev, &test_fops);
	test_cdev.owner = THIS_MODULE;
	result = cdev_add(&test_cdev, devno, 1);
	if(result < 0){
		P_DEBUG("cdev_add errno!\n");
		goto err1;
	}

	printk("hello kernel\n");
	return 0;

err1:
	unregister_chrdev_region(devno, 1);
err0:
	return result;
}
开发者ID:embedclub,项目名称:Lavender,代码行数:38,代码来源:test.c

示例5: adf_chr_drv_create

static int adf_chr_drv_create(void)
{
    dev_t dev_id;
    struct device *drv_device;

    if (alloc_chrdev_region(&dev_id, 0, 1, DEVICE_NAME)) {
        pr_err("QAT: unable to allocate chrdev region\n");
        return -EFAULT;
    }

    adf_ctl_drv.drv_class = class_create(THIS_MODULE, DEVICE_NAME);
    if (IS_ERR(adf_ctl_drv.drv_class)) {
        pr_err("QAT: class_create failed for adf_ctl\n");
        goto err_chrdev_unreg;
    }
    adf_ctl_drv.major = MAJOR(dev_id);
    cdev_init(&adf_ctl_drv.drv_cdev, &adf_ctl_ops);
    if (cdev_add(&adf_ctl_drv.drv_cdev, dev_id, 1)) {
        pr_err("QAT: cdev add failed\n");
        goto err_class_destr;
    }

    drv_device = device_create(adf_ctl_drv.drv_class, NULL,
                               MKDEV(adf_ctl_drv.major, 0),
                               NULL, DEVICE_NAME);
    if (IS_ERR(drv_device)) {
        pr_err("QAT: failed to create device\n");
        goto err_cdev_del;
    }
    return 0;
err_cdev_del:
    cdev_del(&adf_ctl_drv.drv_cdev);
err_class_destr:
    class_destroy(adf_ctl_drv.drv_class);
err_chrdev_unreg:
    unregister_chrdev_region(dev_id, 1);
    return -EFAULT;
}
开发者ID:davyb1964,项目名称:rxe-dev,代码行数:38,代码来源:adf_ctl_drv.c

示例6: zpios_init

static int
zpios_init(void)
{
	dev_t dev;
	int rc;

	dev = MKDEV(ZPIOS_MAJOR, 0);
	if ((rc = register_chrdev_region(dev, ZPIOS_MINORS, ZPIOS_NAME)))
		goto error;

	/* Support for registering a character driver */
	cdev_init(&zpios_cdev, &zpios_fops);
	zpios_cdev.owner = THIS_MODULE;
	kobject_set_name(&zpios_cdev.kobj, ZPIOS_NAME);
	if ((rc = cdev_add(&zpios_cdev, dev, ZPIOS_MINORS))) {
		printk(KERN_ERR "ZPIOS: Error adding cdev, %d\n", rc);
		kobject_put(&zpios_cdev.kobj);
		unregister_chrdev_region(dev, ZPIOS_MINORS);
		goto error;
	}

	/* Support for udev make driver info available in sysfs */
	zpios_class = spl_class_create(THIS_MODULE, ZPIOS_NAME);
	if (IS_ERR(zpios_class)) {
		rc = PTR_ERR(zpios_class);
		printk(KERN_ERR "ZPIOS: Error creating zpios class, %d\n", rc);
		cdev_del(&zpios_cdev);
		unregister_chrdev_region(dev, ZPIOS_MINORS);
		goto error;
	}

	zpios_device = spl_device_create(zpios_class, NULL,
					 dev, NULL, ZPIOS_NAME);
	return 0;
error:
	printk(KERN_ERR "ZPIOS: Error registering zpios device, %d\n", rc);
	return rc;
}
开发者ID:apgodshall,项目名称:zfs,代码行数:38,代码来源:pios.c

示例7: ib_ucm_init

static int __init ib_ucm_init(void)
{
	int result;

	result = register_chrdev_region(IB_UCM_DEV, 1, "infiniband_cm");
	if (result) {
		ucm_dbg("Error <%d> registering dev\n", result);
		goto err_chr;
	}

	cdev_init(&ib_ucm_cdev, &ib_ucm_fops);

	result = cdev_add(&ib_ucm_cdev, IB_UCM_DEV, 1);
	if (result) {
 		ucm_dbg("Error <%d> adding cdev\n", result);
		goto err_cdev;
	}

	ib_ucm_class = class_create(THIS_MODULE, "infiniband_cm");
	if (IS_ERR(ib_ucm_class)) {
		result = PTR_ERR(ib_ucm_class);
 		ucm_dbg("Error <%d> creating class\n", result);
		goto err_class;
	}

	class_device_create(ib_ucm_class, IB_UCM_DEV, NULL, "ucm");

	idr_init(&ctx_id_table);
	init_MUTEX(&ctx_id_mutex);

	return 0;
err_class:
	cdev_del(&ib_ucm_cdev);
err_cdev:
	unregister_chrdev_region(IB_UCM_DEV, 1);
err_chr:
	return result;
}
开发者ID:kzlin129,项目名称:tt-gpl,代码行数:38,代码来源:ucm.c

示例8: led_init

static int __init led_init(void)
{
	int ret;
	dev_t dev_no;

	ret = alloc_chrdev_region(&dev_no, 0, 1, "led_drv");  
	if (!!ret) {
		 printk(KERN_ERR"arrage device no erro!\n");  
		 return ret;
	}

	devp = kmalloc(sizeof(struct led_dev), GFP_KERNEL);
	if (!devp) {
		ret = -ENOMEM;
		goto out1;//goto !!
	}
	memset(devp, 0, sizeof(struct led_dev));
	
	/*init led_dev*/
	devp->major_no = MAJOR(dev_no);
	cdev_init(&devp->cdev, &led_fops);
	devp->cdev.owner = THIS_MODULE;
	ret = cdev_add(&devp->cdev, dev_no, 1);
    if(ret) {	
		goto out2;//goto !!
	}
	
	led_cls = class_create(THIS_MODULE, "led_drv");
	led_cls_dev = device_create(led_cls, NULL, dev_no, "m_led");
	
	return 0; //init successful

out2 :
	kfree(devp);	
out1 :
	unregister_chrdev_region(dev_no, 1);	
	return ret;//init failed
}
开发者ID:cheermoon,项目名称:LDD,代码行数:38,代码来源:m_led.c

示例9: init

/* module initialization and cleanup */
static int __init init(void)
{
	int i, err;

	printk(KERN_INFO PFX "reading parameters\n");
	err = read_params(DRIVER_NAME, &config);
	if (err != 0)
		return -1;
	printk(KERN_INFO PFX
		"initializing driver for %d (max %d) cards\n",
		config.num_modules, VMOD_MAX_BOARDS);

	/* fill in config data and semaphore */
	for (i = 0; i < config.num_modules; i++) {
		device_list[i].config = &config.module[i];
		init_MUTEX(&device_list[i].sem);
	}

	err = alloc_chrdev_region(&devno, 0, VMOD12E16_MAX_MODULES, DRIVER_NAME);
	if (err != 0)
		goto fail_chrdev;
	printk(KERN_INFO PFX "allocated device %d\n", MAJOR(devno));

	cdev_init(&cdev, &fops);
	cdev.owner = THIS_MODULE;
	if (cdev_add(&cdev, devno, VMOD12E16_MAX_MODULES) != 0) {
		printk(KERN_ERR PFX
			"failed to create chardev %d with err %d\n",
				MAJOR(devno), err);
		goto fail_cdev;
	}
	return 0;

fail_cdev:	
	unregister_chrdev_region(devno, VMOD12E16_MAX_MODULES);
fail_chrdev:	
	return -1;
}
开发者ID:bradomyn,项目名称:coht,代码行数:39,代码来源:vmod12e16drvr.c

示例10: BT_init

static int BT_init(void)
{
    dev_t dev = MKDEV(BT_major, 0);
    int alloc_ret = 0;
    int cdev_err = 0;

    /*static allocate chrdev*/
    alloc_ret = register_chrdev_region(dev, 1, BT_DRIVER_NAME);
    if (alloc_ret) {
        BT_ERR_FUNC("fail to register chrdev\n");
        return alloc_ret;
    }

    cdev_init(&BT_cdev, &BT_fops);
    BT_cdev.owner = THIS_MODULE;

    cdev_err = cdev_add(&BT_cdev, dev, BT_devs);
    if (cdev_err)
        goto error;

    BT_INFO_FUNC("%s driver(major %d) installed.\n", BT_DRIVER_NAME, BT_major);
    retflag = 0;
    mtk_wcn_stp_register_event_cb(BT_TASK_INDX, NULL);

    /* init wait queue */
    init_waitqueue_head(&(inq));

    return 0;

error:
    if (cdev_err == 0)
        cdev_del(&BT_cdev);

    if (alloc_ret == 0)
        unregister_chrdev_region(dev, BT_devs);

    return -1;
}
开发者ID:JaMByDev,项目名称:Fly_IQ441_kernel-3.4.5,代码行数:38,代码来源:stp_chrdev_bt.c

示例11: sleepy_init

static int sleepy_init(void)
{
	dev_t devno;
	int result;

	/*
	 * Register your major, and accept a dynamic number
	 */
	if (sleepy_major) {
		devno = MKDEV(sleepy_major, 0);
		result = register_chrdev_region(devno, 1, "sleepy");
	} else {
		result = alloc_chrdev_region(&devno, sleepy_major, 1, "sleepy");
		sleepy_major = MAJOR(devno);
	}
	if (result < 0)
		goto register_chrdev_region_failed;

	cdev = cdev_alloc();
	if (!cdev) {
		result = -ENOMEM;
		goto cdev_alloc_failed;
	}
	cdev_init(cdev, &sleepy_fops);
	cdev->owner = sleepy_fops.owner;
	result = cdev_add(cdev, devno, 1);
	if (result < 0)
		goto cdev_add_failed;

	return 0;

cdev_add_failed:
	cdev_del(cdev);
cdev_alloc_failed:
	unregister_chrdev_region(devno, 1);
register_chrdev_region_failed:
	return result;
}
开发者ID:zxbuaa,项目名称:ldd3,代码行数:38,代码来源:sleepy.c

示例12: DEMO_init_module

int DEMO_init_module(void)
{
	int result;
	dev_t dev = 0;

	dev = MKDEV(DEMO_MAJOR, DEMO_MINOR);
	result = register_chrdev_region(dev, 1, "DEMO");
	if (result < 0) 
	{
		printk(KERN_WARNING "DEMO: can't get major %d\n", DEMO_MAJOR);
		return result;
	}

	DEMO_devices = kmalloc(sizeof(struct DEMO_dev), GFP_KERNEL);
	if (!DEMO_devices)
	{
		result = -ENOMEM;
		goto fail;
	}
	memset(DEMO_devices, 0, sizeof(struct DEMO_dev));

	init_MUTEX(&DEMO_devices->sem);
	cdev_init(&DEMO_devices->cdev, &DEMO_fops);
	DEMO_devices->cdev.owner = THIS_MODULE;
	DEMO_devices->cdev.ops = &DEMO_fops;
	result = cdev_add (&DEMO_devices->cdev, dev, 1);
	if(result)
	{
		printk(KERN_NOTICE "Error %d adding DEMO\n", result);
		goto fail;
	}
	init_waitqueue_head(&DEMO_devices->wq);
	return 0;

fail:
	DEMO_cleanup_module();
	return result;
}
开发者ID:Jacob-jiangbo,项目名称:my-test,代码行数:38,代码来源:demo.c

示例13: lunix_chrdev_init

int lunix_chrdev_init(void)
{
	/*
	 * Register the character device with the kernel, asking for
	 * a range of minor numbers (number of sensors * 8 measurements / sensor)
	 * beginning with LINUX_CHRDEV_MAJOR:0
	 */
	int ret;
	dev_t dev_no;
	unsigned int lunix_minor_cnt = lunix_sensor_cnt << 3;
	
	debug("initializing character device\n");
	cdev_init(&lunix_chrdev_cdev, &lunix_chrdev_fops);
	lunix_chrdev_cdev.owner = THIS_MODULE;
	
	dev_no = MKDEV(LUNIX_CHRDEV_MAJOR, 0);
	/* ? */
	/* register_chrdev_region? */
    ret=register_chrdev_region(dev_no,lunix_minor_cnt,"Lunix:TNG");
	if (ret < 0) {
		debug("failed to register region, ret = %d\n", ret);
		goto out;
	}
	/* ? */
	/* cdev_add? */
    ret=cdev_add(&lunix_chrdev_cdev,dev_no,lunix_minor_cnt);
	if (ret < 0) {
		debug("failed to add character device\n");
		goto out_with_chrdev_region;
	}
	debug("completed successfully\n");
	return 0;
    
out_with_chrdev_region:
	unregister_chrdev_region(dev_no, lunix_minor_cnt);
out:
	return ret;
}
开发者ID:spirosmastorakis,项目名称:OSlab,代码行数:38,代码来源:lunix-chrdev.c

示例14: __hello_setup_dev

/*初始化设备*/
static int  __hello_setup_dev(struct hello_android_dev* dev) {
    int err;
    dev_t devno = MKDEV(hello_major, hello_minor);

    memset(dev, 0, sizeof(struct hello_android_dev));

    cdev_init(&(dev->dev), &hello_fops);
    dev->dev.owner = THIS_MODULE;
    dev->dev.ops = &hello_fops;

    /*注册字符设备*/
    err = cdev_add(&(dev->dev),devno, 1);
    if(err) {
        return err;
    }

    /*初始化信号量和寄存器val的值*/
    //init_MUTEX(&(dev->sem));
    sema_init(&(dev->sem), 1);
    dev->val = 0;

    return 0;
}
开发者ID:gatieme,项目名称:LDD-LinuxDeviceDrivers,代码行数:24,代码来源:hello.c

示例15: FSM_CSIOCTLModule_init

static int __init FSM_CSIOCTLModule_init(void)
{
    if(alloc_chrdev_region(&FSM_CIO_first, 0, 1, "fsmr") < 0)
        return -1;
    if((FSM_CIO_cl = class_create(THIS_MODULE, "fsm")) == NULL) {
        unregister_chrdev_region(FSM_CIO_first, 1);
        return -1;
    }
    if(device_create(FSM_CIO_cl, NULL, FSM_CIO_first, NULL, "fsmio") == NULL) {
        class_destroy(FSM_CIO_cl);
        unregister_chrdev_region(FSM_CIO_first, 1);
        return -1;
    }
    cdev_init(&FSM_CIO_c_dev, &fops);
    if(cdev_add(&FSM_CIO_c_dev, FSM_CIO_first, 1) == -1) {
        device_destroy(FSM_CIO_cl, FSM_CIO_first);
        class_destroy(FSM_CIO_cl);
        unregister_chrdev_region(FSM_CIO_first, 1);
        return -1;
    }
    printk(KERN_INFO "FSM SIOCTL module loaded\n");
    return 0;
}
开发者ID:fsmos,项目名称:FSMServer,代码行数:23,代码来源:FSMClientIOCtl.c


注:本文中的cdev_init函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。