本文整理汇总了C++中cdev_alloc函数的典型用法代码示例。如果您正苦于以下问题:C++ cdev_alloc函数的具体用法?C++ cdev_alloc怎么用?C++ cdev_alloc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cdev_alloc函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: complete_init
static int __init complete_init(void)
{
int ret;
ret = alloc_chrdev_region(&complete_dev, 0, 1, "complete");
if (ret < 0) {
printk(KERN_WARNING "complete: can't alloc chrdev\n");
return ret;
}
complete_cdev = cdev_alloc();
if (!complete_cdev) {
ret = -ENOMEM;
goto fail;
}
complete_cdev->ops = &complete_fops;
ret = cdev_add(complete_cdev, complete_dev, 1);
if (ret < 0) {
printk(KERN_NOTICE "complete: Error adding cdev\n");
goto fail_cdev;
}
return 0;
fail_cdev:
kfree(complete_cdev);
fail:
unregister_chrdev_region(complete_dev, 1);
return ret;
}
开发者ID:jiangy,项目名称:ldd3,代码行数:29,代码来源:complete.c
示例2: uio_major_init
static int uio_major_init(void)
{
static const char name[] = "uio";
struct cdev *cdev = NULL;
dev_t uio_dev = 0;
int result;
result = alloc_chrdev_region(&uio_dev, 0, UIO_MAX_DEVICES, name);
if (result)
goto out;
result = -ENOMEM;
cdev = cdev_alloc();
if (!cdev)
goto out_unregister;
cdev->owner = THIS_MODULE;
cdev->ops = &uio_fops;
kobject_set_name(&cdev->kobj, "%s", name);
result = cdev_add(cdev, uio_dev, UIO_MAX_DEVICES);
if (result)
goto out_put;
uio_major = MAJOR(uio_dev);
uio_cdev = cdev;
return 0;
out_put:
kobject_put(&cdev->kobj);
out_unregister:
unregister_chrdev_region(uio_dev, UIO_MAX_DEVICES);
out:
return result;
}
开发者ID:kamarush,项目名称:caf_kernel_mm,代码行数:34,代码来源:uio.c
示例3: at91_adc_cdev_setup
static int at91_adc_cdev_setup(void){
int status;
/* alloc a new device number (major: dynamic, minor: 0) */
status = alloc_chrdev_region(&at91_adc_devno,0,1,at91_adc_device.name);
if(status){
goto err;
}
/* create a new char device */
at91_adc_cdev = cdev_alloc();
if(at91_adc_cdev == NULL){ status=-ENOMEM; goto err; }
at91_adc_cdev->owner = THIS_MODULE;
at91_adc_cdev->ops = &at91_adc_fops;
status = cdev_add(at91_adc_cdev,at91_adc_devno,1);
if(status){
goto err;
}
/* register the class */
at91_adc_class = class_create(THIS_MODULE, DRV_CLASS);
if(IS_ERR(at91_adc_class)){ status=-EFAULT; goto err; }
device_create(at91_adc_class, NULL, at91_adc_devno, NULL, at91_adc_device.name);
printk(KERN_INFO "Major: %u; minor: %u\n", \
MAJOR(at91_adc_devno), MINOR(at91_adc_devno) \
);
return 0;
err:
at91_adc_cdev_teardown();
return status;
}
开发者ID:jampy,项目名称:at91-adc,代码行数:34,代码来源:at91-adc.c
示例4: lcd_module_init
int __init lcd_module_init(void)
{
int ret = 0, err;
__inf("lcd_module_init\n");
alloc_chrdev_region(&devid, 0, 1, "lcd");
my_cdev = cdev_alloc();
cdev_init(my_cdev, &lcd_fops);
my_cdev->owner = THIS_MODULE;
err = cdev_add(my_cdev, devid, 1);
if (err)
{
__wrn("cdev_add fail.\n");
return -1;
}
lcd_class = class_create(THIS_MODULE, "lcd");
if (IS_ERR(lcd_class))
{
__wrn("class_create fail\n");
return -1;
}
device_create(lcd_class, NULL, devid, NULL, "lcd");
lcd_init();
return ret;
}
开发者ID:mantrid,项目名称:linux-allwinner,代码行数:30,代码来源:dev_lcd.c
示例5: cs598_create_char_dev
static int cs598_create_char_dev(void)
{
int result = 0;
/* Dynamically allocate a major number for the device */
result = alloc_chrdev_region(&cs598_dev,
cs598_dev_minor,
cs598_nr_devs,
"my_char_dev");
cs598_dev_major = result;
if (result < 0) {
printk(KERN_INFO "cs598: Char dev cannot get major\n");
return result;
}
/* Allocate a character device structure */
cs598_cdev = cdev_alloc();
/* Assign the function pointers */
cs598_cdev->ops = &cs598_dev_fops;
cs598_cdev->owner = THIS_MODULE;
/* Add this character device */
result = cdev_add(cs598_cdev, cs598_dev, 1);
if (result) {
printk(KERN_INFO "cs598: Error adding device\n");
return result;
}
return result;
}
开发者ID:furquans,项目名称:cs598mcc,代码行数:30,代码来源:page_hash.c
示例6: pa_dev_init
static int __init pa_dev_init(void)
{
// int status = 0;
int err = 0;
printk("[pa_drv] start!!!\n");
if((platform_device_register(&sw_device_pa))<0)
return err;
if ((err = platform_driver_register(&sw_pa_driver)) < 0)
return err;
alloc_chrdev_region(&dev_num, 0, 1, "pa_chrdev");
pa_dev = cdev_alloc();
cdev_init(pa_dev, &pa_dev_fops);
pa_dev->owner = THIS_MODULE;
err = cdev_add(pa_dev, dev_num, 1);
if (err){
printk(KERN_NOTICE"Error %d adding pa_dev!\n", err);
return -1;
}
pa_dev_class = class_create(THIS_MODULE, "pa_cls");
device_create(pa_dev_class, NULL,
dev_num, NULL, "pa_dev");
printk("[pa_drv] init end!!!\n");
return 0;
}
开发者ID:godark,项目名称:A10-Linux-2.6.36,代码行数:28,代码来源:sun4i_pa.c
示例7: devapc_init
/*
* devapc_init: module init function.
*/
static int __init devapc_init(void)
{
int ret;
/*You do not need to open the clock for Rainier*/
//enable_clock(MT_CG_INFRA_DEVICE_APC,"DEVAPC");
pr_warn("[DEVAPC] module init. \n");
ret = platform_device_register(&devapc_device);
if (ret) {
pr_warn("[DEVAPC] Unable to do device register(%d)\n", ret);
return ret;
}
ret = platform_driver_register(&devapc_driver);
if (ret) {
pr_warn("[DEVAPC] Unable to register driver (%d)\n", ret);
platform_device_unregister(&devapc_device);
return ret;
}
g_devapc_ctrl = cdev_alloc();
if (!g_devapc_ctrl) {
pr_warn("[DEVAPC] Failed to add devapc device! (%d)\n", ret);
platform_driver_unregister(&devapc_driver);
platform_device_unregister(&devapc_device);
return ret;
}
g_devapc_ctrl->owner = THIS_MODULE;
return 0;
}
开发者ID:ramgar,项目名称:mt6577-kernel-3.10.65,代码行数:36,代码来源:devapc.c
示例8: capture_module_init
int capture_module_init(void)
{
int ret = 0, err;
pr_info("[DISP]capture_module_init\n");
alloc_chrdev_region(&devid, 0, 1, "capture");
my_cdev = cdev_alloc();
my_cdev->owner = THIS_MODULE;
err = cdev_add(my_cdev, devid, 1);
if (err) {
__wrn("cdev_add fail\n");
return -1;
}
capture_class = class_create(THIS_MODULE, "capture");
if (IS_ERR(capture_class)) {
__wrn("class_create fail\n");
return -1;
}
device_create(capture_class, NULL, devid, NULL, "capture");
ret = platform_device_register(&capture_device);
if (ret == 0) {
ret = platform_driver_register(&capture_driver);
}
pr_info("[DISP]==capture finish==\n");
return ret;
}
开发者ID:GREYFOXRGR,项目名称:BPI-M3-bsp,代码行数:33,代码来源:dev_capture.c
示例9: createDevice
static int createDevice(void)
{
/*Alocciert platz für device*/
if(alloc_chrdev_region(&my_dev,0, DEV_COUNT, DEV_NAME) < 0)
{
printk (KERN_ERR "Alloc device fehler\n");
return -EIO;
}
printk (KERN_INFO "MAJOR NUMBER: %d/n", MAJOR(my_dev));
my_cdev = cdev_alloc();
if(my_cdev == NULL){
printk (KERN_ERR "cdev alloc FAIL!/n");
}
my_cdev->owner = THIS_MODULE;
my_cdev->ops = &my_fops;
printk (KERN_INFO "cdev alloc SUCCESSFUL\n");
if(cdev_add(my_cdev, my_dev, DEV_COUNT)){
printk (KERN_ERR "add device FAILD\n");
my_cdev = NULL;
return -EIO;
}
return 0;
}
开发者ID:rabertol,项目名称:system_software,代码行数:29,代码来源:template.c
示例10: driver_entry_init
static int __init driver_entry_init(void)
{
printk(KERN_WARNING "Gilc: The moudle has been loaded!\n");
ret = alloc_chrdev_region(&dev_num,0,1,DEVICE_NAME);
if (ret < 0){
printk(KERN_WARNING "Gilc: Failed to allocate a major number\n");
return ret;
}
major_number = MAJOR(dev_num);
printk(KERN_WARNING "Gilc: major number is %d", major_number);
printk(KERN_WARNING "\tuse \"mknod /dev/%s c %d 0\" for device file", DEVICE_NAME,major_number);
my_cdev = cdev_alloc();
my_cdev->ops = &fops;
my_cdev->owner = THIS_MODULE;
ret = cdev_add(my_cdev,dev_num,1);
if (ret < 0){
printk(KERN_WARNING "Gilc: unable to add cdev to kernel\n");
return ret;
}
sema_init(&virtual_device.sem , 1);
return 0;
}
开发者ID:codingforpleasure,项目名称:Kernel_tutorials,代码行数:25,代码来源:my_example_for_char_device.c
示例11: my_init
static int __init my_init(void)
{
if (alloc_chrdev_region(&first, 0, count, MYDEV_NAME) < 0) {
printk(KERN_ERR ME
"failed to allocate character device region\n");
return -1;
}
if (!(my_cdev = cdev_alloc())) {
printk(KERN_ERR ME "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 ME "cdev_add() failed\n");
cdev_del(my_cdev);
unregister_chrdev_region(first, count);
return -1;
}
my_sysfs_class = class_create(THIS_MODULE, "my_class");
device_create(my_sysfs_class, NULL, first, NULL, "%s", "mycdrv");
printk(KERN_INFO ME "simple ioctl chrdrv created, major %d\n",
MAJOR(first));
printk(KERN_INFO ME "sizeof(uint32_t) is %d\n", sizeof(uint32_t));
return 0;
}
开发者ID:KimHyoJin,项目名称:driver-samples,代码行数:27,代码来源:lab0_chrdrv.c
示例12: mtk_ext_disp_mgr_probe
static int mtk_ext_disp_mgr_probe(struct platform_device *pdev)
{
int ret = 0;
struct class_device *class_dev = NULL;
printk("[EXTD]%s\n", __func__);
/* Allocate device number for hdmi driver */
ret = alloc_chrdev_region(&hdmi_devno, 0, 1, HDMI_DEVNAME);
if (ret)
{
printk("[EXTD]alloc_chrdev_region fail\n");
return -1;
}
/* For character driver register to system, device number binded to file operations */
hdmi_cdev = cdev_alloc();
hdmi_cdev->owner = THIS_MODULE;
hdmi_cdev->ops = &external_display_fops;
ret = cdev_add(hdmi_cdev, hdmi_devno, 1);
/* For device number binded to device name(hdmitx), one class is corresponeded to one node */
hdmi_class = class_create(THIS_MODULE, HDMI_DEVNAME);
/* mknod /dev/hdmitx */
class_dev = (struct class_device *)device_create(hdmi_class, NULL, hdmi_devno, NULL, HDMI_DEVNAME);
printk("[EXTD][%s] out\n", __func__);
return 0;
}
开发者ID:iuncuim,项目名称:A476_V1B_5.1_kernel,代码行数:31,代码来源:mtk_ext_disp_mgr.c
示例13: SYSRAM_RegCharDrv
//------------------------------------------------------------------------------
static inline int SYSRAM_RegCharDrv(void)
{
LOG_MSG("E");
if(alloc_chrdev_region(&Sysram.DevNo, 0, 1,SYSRAM_DEV_NAME) )
{
LOG_ERR("allocate device no failed");
return -EAGAIN;
}
//allocate driver
Sysram.pCharDrv = cdev_alloc();
if(Sysram.pCharDrv == NULL)
{
unregister_chrdev_region(Sysram.DevNo, 1);
LOG_ERR("allocate mem for kobject failed");
return -ENOMEM;
}
//Attatch file operation.
cdev_init(Sysram.pCharDrv, &SysramFileOper);
Sysram.pCharDrv->owner = THIS_MODULE;
//Add to system
if(cdev_add(Sysram.pCharDrv, Sysram.DevNo, 1))
{
LOG_ERR("Attatch file operation failed");
unregister_chrdev_region(Sysram.DevNo, 1);
return -EAGAIN;
}
LOG_MSG("X");
return 0;
}
开发者ID:huyparody,项目名称:OT_7047D,代码行数:30,代码来源:camera_sysram.c
示例14: init__
int init__ (void)
{
buffer = kmalloc(PAGE_SIZE, GFP_KERNEL);
if (buffer==NULL)
{
printk (KERN_INFO "Create buffer error\n");
return -ENOMEM;
}
register_chrdev (866, "myeth", &chardev_fops);
first_node = MKDEV(866, 50);
register_chrdev_region (first_node, 1, "myeth");
my_cdev = cdev_alloc();
cdev_init(my_cdev, &chardev_fops);
cdev_add (my_cdev,first_node, 1);
printk (KERN_INFO "loaded: %s\n", NIITM_NAME);
//eth *****
myeth_dev = alloc_netdev(sizeof(struct myeth_dev), NDEV_NAME,
NET_NAME_UNKNOWN, &mynet_init);
if(register_netdev(myeth_dev)) {
printk(KERN_ERR "netdev register failed\n");
return -ENODEV;
}
printk(KERN_INFO "netdev registered success\n");
return 0;
}
开发者ID:hfjgfbjhbfbvhju7854tjdfh,项目名称:kur,代码行数:33,代码来源:myeth.c
示例15: hdmi_probe
static int hdmi_probe(struct platform_device *pdev)
{
int ret = 0;
struct class_device *class_dev = NULL;
printk("[hdmi]%s\n", __func__);
/* Allocate device number for hdmi driver */
ret = alloc_chrdev_region(&hdmi_devno, 0, 1, HDMI_DEVNAME);
if(ret)
{
printk("[hdmi]alloc_chrdev_region fail\n");
return -1;
}
/* For character driver register to system, device number binded to file operations */
hdmi_cdev = cdev_alloc();
hdmi_cdev->owner = THIS_MODULE;
hdmi_cdev->ops = &hdmi_fops;
ret = cdev_add(hdmi_cdev, hdmi_devno, 1);
/* For device number binded to device name(hdmitx), one class is corresponeded to one node */
hdmi_class = class_create(THIS_MODULE, HDMI_DEVNAME);
/* mknod /dev/hdmitx */
class_dev = (struct class_device *)device_create(hdmi_class, NULL, hdmi_devno, NULL, HDMI_DEVNAME);
printk("[hdmi][%s] current=0x%08x\n", __func__, (unsigned int)current);
init_waitqueue_head(&hdmi_update_wq);
hdmi_update_task = kthread_create(hdmi_update_kthread, NULL, "hdmi_update_kthread");
wake_up_process(hdmi_update_task);
return 0;
}
开发者ID:JustAndroids,项目名称:ZTEBladeL2,代码行数:34,代码来源:hdmitx_test.c
示例16: driver_entry
static int driver_entry(void){
// register our device with the system; a 2 step process
//step 1: use dynamic allocation to assign our device
// a major number-- alloc_chrdev_region(dev_t*,uint fminor,uint count,char* name)
ret = alloc_chrdev_region(&dev_num,0,1,DEVICE_NAME);
if(ret<0) {
// at times kernel functions return negatives,there is an error
printk(KERN_ALERT "sunilcode: failed to allocate a amajor number");
return ret;
}
major_number = MAJOR(dev_num); //extracts the major number and store in our variable (MACRO)
printk(KERN_INFO "sunilcode: major number is %d",major_number);
printk(KERN_INFO "\tuse \"mknod /dev/%s c %d 0\" for device file",DEVICE_NAME,major_number);
//step (2)
mcdev = cdev_alloc(); // create our cdev structure, initialized our cdev
mcdev->ops = &fops; // struct file_operation
mcdev->owner = THIS_MODULE;
//now that we create cdev,we have to add it to the kernel
//int cdev_add(struct cdev* dev,dev_t num,unsigned intcount)
ret = cdev_add(mcdev,dev_num,1);
if(ret<0) {
//always check errors
printk(KERN_ALERT "sunilcode: unable to add cdev to kernel");
return ret;
}
// initialize our semaphore
sema_init(&virtual_device.sem,1); //initial value of one
return 0;
}
开发者ID:sunilkallur,项目名称:devicedriver,代码行数:35,代码来源:kernelmodule.c
示例17: 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);
kbuf = kmalloc (KBUF_SIZE, GFP_KERNEL);
if (cdev_add (my_cdev, first, count) < 0) {
printk (KERN_ERR "cdev_add() failed\n");
cdev_del (my_cdev);
unregister_chrdev_region (first, count);
kfree (kbuf);
return -1;
}
printk (KERN_INFO "\nSucceeded in registering character device %s\n",
MYDEV_NAME);
return 0;
}
开发者ID:YorkZ,项目名称:docs_utils,代码行数:26,代码来源:lab3_module1.c
示例18: template_init
static int __init template_init(void)
{
printk( "\t registering %s\n", TEMPLATE);
if (alloc_chrdev_region(&template_dev_number, 0, 1, TEMPLATE)<0)
return -EIO;
driver_object = cdev_alloc();
if (driver_object==NULL)
goto free_device_number;
driver_object->owner = THIS_MODULE;
driver_object->ops = &fops;
if(cdev_add(driver_object, template_dev_number, 1))
goto free_cdev;
template_class = class_create(THIS_MODULE, TEMPLATE);
if(IS_ERR(template_class))
goto free_cdev;
template_dev=device_create(template_class, NULL, template_dev_number, NULL, "%s", TEMPLATE);
if(IS_ERR(template_dev)){
pr_err("hello: device create failed\n");
goto free_class;
}
printk( "\t registering %s complete\n", TEMPLATE);
return 0;
free_class:
class_destroy(template_class);
free_cdev:
kobject_put(&driver_object->kobj);
free_device_number:
unregister_chrdev_region(template_dev_number, 1);
return -EIO;
}
开发者ID:briediz,项目名称:lte,代码行数:31,代码来源:bsp5_8.c
示例19: my_init
static int __init my_init (void)
{
if (alloc_chrdev_region (&first, 0, count, MYDEV_NAME) < 0) {
printk (KERN_ERR "failed to allocate 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);
kbuf = kmalloc (KBUF_SIZE, GFP_KERNEL);
if (cdev_add (my_cdev, first, count) < 0) {
printk (KERN_ERR "cdev_add() failed\n");
cdev_del (my_cdev);
unregister_chrdev_region (first, count);
kfree (kbuf);
return -1;
}
foo_class = class_create (THIS_MODULE, "my_class");
device_create (foo_class, NULL, first, "%s", "mycdrv");
printk (KERN_INFO "\nSucceeded in registering character device %s\n",
MYDEV_NAME);
printk (KERN_INFO "Major number = %d, Minor number = %d\n", MAJOR (first),
MINOR (first));
return 0;
}
开发者ID:YorkZ,项目名称:docs_utils,代码行数:30,代码来源:lab5_dynamic_udev.c
示例20: bootkey_init
static int __init bootkey_init(void)
{
printk(KERN_ALERT "BOOT_KEY interrupt driver loaded\n");
//Make device number
devno = MKDEV(BOOTKEYK_MAJOR, BOOTKEY_MINOR);
//Request GPIO
int err = 0;
err = gpio_request(BOOTKEY_GPIO, "BOOT_KEY");
if(err < 0)
{
printk(KERN_ALERT "ERROR requesting GPIO: %d\n", err);
goto err_exit;
}
//Set GPIO direction (in or out)
err = gpio_direction_input(BOOTKEY_GPIO);
if(err < 0)
{
printk(KERN_ALERT "ERROR changing GPIO direction: %d\n", err);
goto err_freegpio;
}
//Register device
err = register_chrdev_region(devno, 1, "BOOT_KEY");
if(err < 0)
{
printk(KERN_ALERT "ERROR register cdev: %d\n", err);
goto err_freegpio;
}
//Cdev init
cdevStruct = cdev_alloc();
cdev_init(cdevStruct, &bootkey_fops);
//Add Cdev
err = cdev_add(cdevStruct, devno, 1);
if(err < 0)
{
printk(KERN_ALERT "ERROR adding cdev: %d\n", err);
goto err_unregister_chardev;
}
//Succes
printk(KERN_ALERT "BOOT_KEY interrupt driver loaded successfully\n");
return 0;
//Goto erros
err_unregister_chardev:
unregister_chrdev_region(devno, 1);
err_freegpio:
gpio_free(BOOTKEY_GPIO);
err_exit:
return err;
}
开发者ID:CasperHeller,项目名称:MPS_Exercise6,代码行数:60,代码来源:interrupt.c
注:本文中的cdev_alloc函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论