本文整理汇总了C++中cdev_init函数的典型用法代码示例。如果您正苦于以下问题:C++ cdev_init函数的具体用法?C++ cdev_init怎么用?C++ cdev_init使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cdev_init函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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
示例16: chr_init
static int chr_init(void){
if(alloc_chrdev_region(&dev_alloc,0,count,DEVICE)<0){
printk("ERROR IN ALLOCATION OF CHRDEV\n");
return -1;
}
if((cdev_naresh=cdev_alloc())==NULL){
printk("ERROR IN DEVICE ALLOCATION\n");
unregister_chrdev_region(dev_alloc,count);
return -1;
}
cdev_init(cdev_naresh,&fops_alloc);
if(cdev_add(cdev_naresh,dev_alloc,count)<0){
printk("ERROR IN DEVICE CHAR DEVICE ADDTION\n");
cdev_del(cdev_naresh);
unregister_chrdev_region(dev_alloc,count);
return -1;
}
naresh_alloc_class = class_create(THIS_MODULE, "DYNAMICALLY_CONFIG");
device_create(naresh_alloc_class, NULL, dev_alloc, NULL, "%s", "alloc_naresh");
printk("SUCCESSFULLY CREATED ALLOC_CHRDEVICE of major=%d DEVICE NAME=%s \n",MAJOR(dev_alloc),DEVICE);
return 0;
}
开发者ID:innovationsony,项目名称:krn,代码行数:23,代码来源:2_alloc_chrdev_virtual.c
示例17: devone_init
static int devone_init(void)
{
dev_t dev = MKDEV(devone_major, 0);
int ret;
int major;
int err;
ret = alloc_chrdev_region(&dev, 0, devone_devs, "devone");
if (ret < 0)
return ret;
devone_major = major = MAJOR(dev);
cdev_init(&devone_cdev, &devone_fops);
devone_cdev.owner = THIS_MODULE;
devone_cdev.ops = &devone_fops;
err = cdev_add(&devone_cdev, MKDEV(devone_major, 0), 1);
if (err)
return err;
printk(KERN_ALERT "devone driver(major %d) installed.\n", major);
return 0;
}
开发者ID:0x1abin,项目名称:linux_kernel_driver,代码行数:23,代码来源:devone.c
示例18: pi_led_init
//内核加载后的初始化函数.
static int __init pi_led_init(void)
{
struct device *dev;
int major; //自动分配主设备号
major = alloc_chrdev_region(&pi_led_devno,0,1,DRIVER_NAME);
//register_chrdev 注册字符设备使系统知道有LED这个模块在.
cdev_init(&pi_led_class_dev, &pi_led_dev_fops);
major = cdev_add(&pi_led_class_dev,pi_led_devno,1);
//注册class
pi_led_class = class_create(THIS_MODULE,DRIVER_NAME);
dev = device_create(pi_led_class ,NULL,pi_led_devno,NULL,DRIVER_NAME);
gpiochip = gpiochip_find("bcm2708_gpio", is_right_chip);
gpiochip->direction_output(gpiochip, led_pin, 1);
gpiochip->set(gpiochip, led_pin, 1);
msleep(500);
gpiochip->set(gpiochip, led_pin, 0);
interval = 500;
printk("pi led init ok!\n");
return 0;
}
开发者ID:zoech,项目名称:led_driver_for_raspberry,代码行数:24,代码来源:driver_led.c
示例19: ela_init
static int ela_init(void)
{
int ret_val;
ret_val=alloc_chrdev_region(&dev,7,3,"Char_dvr"); //dynamic allocation of major number
if(ret_val<0)
{
printk("error in allocating character driver..\n");
}
cdev_init(&my_char_driver,&fopz); //connect file operations with cdev
cdev_add(&my_char_driver,dev,3); //connect major&minor number with cdev
class_var=class_create(THIS_MODULE,"Char_dvr"); //populate sysfs entries
device_create(class_var,NULL,dev,NULL,"Char_dvr"); //send uevents to udev // dev/char_dvr will be created
printk("ELA: In init function ... \n");
return 0;
}
开发者ID:elangoelinuxer,项目名称:Driver_practice,代码行数:23,代码来源:simple_char_driver.c
示例20: my_init
static int __init my_init (void)
{
first = MKDEV (my_major, my_minor);
if (register_chrdev_region (first, count, MYDEV_NAME) < 0) {
printk (KERN_ERR "failed to register character device region\n");
return -1;
}
if (!(my_cdev = cdev_alloc ())) {
printk (KERN_ERR "cdev_alloc() failed\n");
unregister_chrdev_region (first, count);
return -1;
}
cdev_init (my_cdev, &mycdrv_fops);
if (cdev_add (my_cdev, first, count) < 0) {
printk (KERN_ERR "cdev_add() failed\n");
cdev_del (my_cdev);
unregister_chrdev_region (first, count);
return -1;
}
printk (KERN_INFO "\nSucceeded in registering character device %s\n",
MYDEV_NAME);
return 0;
}
开发者ID:YorkZ,项目名称:docs_utils,代码行数:23,代码来源:lab2_priv.c
注:本文中的cdev_init函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论