• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ register_blkdev函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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

示例1: tc01

static int tc01(void)
{
	int major1, major2;
	int pass = 1;

	prk_info("Test Case 1: register_blkdev() with auto allocating "
		"major numbers (major=0)\n");

	major1 = register_blkdev(0, BLK_DEV_NAME);
	prk_debug("major1 = %i\n", major1);

	major2 = register_blkdev(0, BLK_DEV_NAME);
	prk_debug("major2 = %i\n", major2);

	if (major1 >= 0) {
		unregister_blkdev(major1, BLK_DEV_NAME);
	} else {
		pass = 0;
		prk_debug("1st call to register_blkdev() failed, error %i\n",
			major1);
	}

	if (major2 >= 0) {
		unregister_blkdev(major2, BLK_DEV_NAME);
	} else {
		pass = 0;
		prk_debug("2nd call to register_blkdev() failed, error %i\n",
			major2);
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
开发者ID:1587,项目名称:ltp,代码行数:33,代码来源:ltp_block_dev.c


示例2: tc05

static int tc05(void)
{
	int major, pass = 16;
	unsigned int i, test_major[2] = {512, UINT_MAX};

	prk_info("Test Case 5: register_blkdev() with major=%u/%u\n",
		 test_major[0], test_major[1]);

	for (i = 0; i < sizeof(test_major) / sizeof(unsigned int); i++) {
		major = register_blkdev(test_major[i], BLK_DEV_NAME);
		prk_debug("major = %i\n", major);

		if (major == 0) {
			unregister_blkdev(test_major[i], BLK_DEV_NAME);
#ifdef BLKDEV_MAJOR_MAX
			pass = 0;
#endif
		} else {
			prk_debug("register_blkdev() with major %u got error %i\n",
				  test_major[i], major);
#ifndef BLKDEV_MAJOR_MAX
			pass = 0;
#endif
		}
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
开发者ID:kraj,项目名称:ltp,代码行数:29,代码来源:ltp_block_dev.c


示例3: tc04

static int tc04(void)
{
	int major, pass = 8;
	unsigned int i, test_major[2] = {256, 511};

	prk_info("Test Case 4: register_blkdev() with major=%u/%u\n",
		 test_major[0], test_major[1]);

	for (i = 0; i < sizeof(test_major) / sizeof(unsigned int); i++) {
		major = register_blkdev(test_major[i], BLK_DEV_NAME);
		prk_debug("major = %i\n", major);

		if (major == 0) {
			unregister_blkdev(test_major[i], BLK_DEV_NAME);
		} else if (major == -EBUSY) {
			prk_debug("device was busy, register_blkdev() with major %u skipped\n",
				  test_major[i]);
		} else {
			pass = 0;
			prk_debug("register_blkdev() with major %u got error %i\n",
				  test_major[i], major);
		}
	}

	prk_info("Test Case Result: %s\n", result_str(pass));
	return pass;
}
开发者ID:kraj,项目名称:ltp,代码行数:27,代码来源:ltp_block_dev.c


示例4: register_block_driver

void register_block_driver(unsigned int major, const char *name,
		struct block_device *(*get_device)(unsigned int),
		struct file_operations *fops)
{
	blkdev[major].get_device = get_device;
	register_blkdev(major, name, fops ? fops : &blkdev_generic_fops);
}
开发者ID:drewt,项目名称:Telos,代码行数:7,代码来源:rw_block.c


示例5: ramblock_init

static int __init ramblock_init(void)
{
    /* 1. Allocate gendisk struct */
    ramblock_disk = alloc_disk(16);

    /* 2. Configure */
    /* 2.1 Allocate/Configure a queue which supporting read/write capabilities */
	if (!(ramblock_queue = blk_init_queue(do_ramblock_request, &ramblock_lock)))
		return -ENOMEM;
	ramblock_disk->queue = ramblock_queue;


    /* 2.2 Configure other properties: such as volume, etc */
    major = register_blkdev(0, "ramblock");
    
	ramblock_disk->major = major;
	ramblock_disk->first_minor = 0;
	sprintf(ramblock_disk->disk_name, "ramblock");
	ramblock_disk->fops = &ramblock_fops;
	set_capacity(ramblock_disk, RAMBLOCK_SIZE / 512);  /* 512 bytes per sector */


    /* 3. Register */
    add_disk(ramblock_disk);
    
    return 0;
}
开发者ID:uwyyk,项目名称:LINUX_DRIVERS,代码行数:27,代码来源:ramblock.c


示例6: tzmem_blkdev_init

static int __init tzmem_blkdev_init(void)
{
#ifdef MTEE_TZMEM_DBG
	pr_warn("====> tzmem_blkdev_init\n");
#endif

	if (register_blkdev(IO_NODE_MAJOR_TZMEM, DEV_TZMEM)) {
		pr_debug(MTEE_TZMEM_TAG "[%s] tzmem_blkdev_init: register_blkdev error\n", MODULE_NAME);
		return -EFAULT;
	}

	tz_client_dev = MKDEV(IO_NODE_MAJOR_TZMEM, IO_NODE_MINOR_TZMEM);
	blk_register_region(tz_client_dev, IO_NODE_NUMBER_TZMEM,
		THIS_MODULE, tzmem_blk_probe, NULL, NULL);

#if 0
	/* create /dev/tzmem automaticly */
	pTzClass = class_create(THIS_MODULE, DEV_TZMEM);
	if (IS_ERR(pTzClass)) {
		int ret = PTR_ERR(pTzClass);
		pr_debug(MTEE_TZMEM_TAG "[%s] could not create class for the device, ret:%d\n", MODULE_NAME, ret);
		return ret;
	}
	pTzDevice = device_create(pTzClass, NULL, tz_client_dev, NULL, DEV_TZMEM);
#endif

	return 0;
}
开发者ID:John677,项目名称:Kernal_k3note,代码行数:28,代码来源:tz_mem.c


示例7: ace_init

/* ---------------------------------------------------------------------
 * Module init/exit routines
 */
static int __init ace_init(void)
{
	int rc;

	ace_major = register_blkdev(ace_major, "xsysace");
	if (ace_major <= 0) {
		rc = -ENOMEM;
		goto err_blk;
	}

	rc = ace_of_register();
	if (rc)
		goto err_of;

	pr_debug("xsysace: registering platform binding\n");
	rc = platform_driver_register(&ace_platform_driver);
	if (rc)
		goto err_plat;

	pr_info("Xilinx SystemACE device driver, major=%i\n", ace_major);
	return 0;

err_plat:
	ace_of_unregister();
err_of:
	unregister_blkdev(ace_major, "xsysace");
err_blk:
	printk(KERN_ERR "xsysace: registration failed; err=%i\n", rc);
	return rc;
}
开发者ID:Aaroneke,项目名称:galaxy-2636,代码行数:33,代码来源:xsysace.c


示例8: osprd_init

static int __init osprd_init(void)
{
	int i, r;

	// shut up the compiler
	(void) for_each_open_file;
#ifndef osp_spin_lock
	(void) osp_spin_lock;
	(void) osp_spin_unlock;
#endif

	/* Register the block device name. */
	if (register_blkdev(OSPRD_MAJOR, "osprd") < 0) {
		printk(KERN_WARNING "osprd: unable to get major number\n");
		return -EBUSY;
	}

	/* Initialize the device structures. */
	for (i = r = 0; i < NOSPRD; i++)
		if (setup_device(&osprds[i], i) < 0)
			r = -EINVAL;

	if (r < 0) {
		printk(KERN_EMERG "osprd: can't set up device structures\n");
		osprd_exit();
		return -EBUSY;
	} else
		return 0;
}
开发者ID:metropolisDT,项目名称:CS111,代码行数:29,代码来源:osprd.c


示例9: ramblock_init

static int ramblock_init(void)
{
	/* 1. 分配一个gendisk结构体 */
	ramblock_disk = alloc_disk(16); /* 次设备号个数: 分区个数+1 */

	/* 2. 设置 */
	/* 2.1 分配/设置队列: 提供读写能力 */
	ramblock_queue = blk_init_queue(do_ramblock_request, &ramblock_lock);
	ramblock_disk->queue = ramblock_queue;
	
	/* 2.2 设置其他属性: 比如容量 */
	major = register_blkdev(0, "ramblock");  /* cat /proc/devices */	
	ramblock_disk->major       = major;
	ramblock_disk->first_minor = 0;
	sprintf(ramblock_disk->disk_name, "ramblock");
	ramblock_disk->fops        = &ramblock_fops;
	set_capacity(ramblock_disk, RAMBLOCK_SIZE / 512);

	/* 3. 硬件相关操作 */
	ramblock_buf = kzalloc(RAMBLOCK_SIZE, GFP_KERNEL);

	/* 4. 注册 */
	add_disk(ramblock_disk);

	return 0;
}
开发者ID:commshare,项目名称:ARMDriver,代码行数:26,代码来源:ramblock.c


示例10: sbull_init

static int __init sbull_init(void)
{
	int i;
	/*
	* Get registered.
	*/
	sbull_major = register_blkdev(sbull_major, "sbull");
	if (sbull_major <= 0) {
	   printk(KERN_WARNING "sbull: unable to get major number\n");
	   return -EBUSY;
	}
	/*
	* Allocate the device array, and initialize each one.
	*/
	Devices = kmalloc(ndevices*sizeof (struct sbull_dev), GFP_KERNEL);
	if (Devices == NULL)
	   goto out_unregister;
	for (i = 0; i < ndevices; i++) 
	   setup_device(Devices + i, i);
	    
	return 0;

	out_unregister:
	unregister_blkdev(sbull_major, "sbd");
	return -ENOMEM;
}
开发者ID:zhu8920253,项目名称:linux_driver,代码行数:26,代码来源:sbull.c


示例11: trd_init

static int trd_init(void)
{
	int i;

	trd_pages = (TRD_SIZE + (PAGE_SIZE-1)) >> PAGE_SHIFT;

	if (register_blkdev(MAJOR_NR, DEVICE_NAME, &trd_fops)) {
		printk(KERN_ERR DEVICE_NAME ": Unable to register_blkdev(%d)\n", MAJOR_NR);
		return -EBUSY;
	}

	blk_queue_make_request(BLK_DEFAULT_QUEUE(MAJOR_NR), trd_make_request);
	for (i=0;i<MAX_DEVS;i++) {
		trd_blocksizes[i] = TRD_BLOCK_SIZE;
		trd_blk_sizes[i] = trd_size;
	}

	blksize_size[MAJOR_NR] = trd_blocksizes;
	blk_size[MAJOR_NR] = trd_blk_sizes;

	printk(KERN_DEBUG DEVICE_NAME ": trd initialised size=%dk\n", 
	       trd_size);

	return 0;
}
开发者ID:tridge,项目名称:junkcode,代码行数:25,代码来源:trd.c


示例12: ramhd_init

static int __init ramhd_init(void)
{
	int i;

	ramhd_space_init();
	alloc_ramdev();

	ramhd_major = register_blkdev(0, RAMHD_NAME);

	for (i=0; i<RAMHD_MAX_DEVICE; i++)
	{
		rdev[i]->data = sdisk[i];
		rdev[i]->queue = blk_alloc_queue(GFP_KERNEL);
		blk_queue_make_request(rdev[i]->queue, ramhd_make_request);
		rdev[i]->gd = alloc_disk(RAMHD_MAX_PARTITIONS);
		rdev[i]->gd->major = ramhd_major;
		rdev[i]->gd->first_minor = i*RAMHD_MAX_PARTITIONS;
		rdev[i]->gd->fops = &ramhd_fops;
		rdev[i]->gd->queue = rdev[i]->queue;
		rdev[i]->gd->private_data = rdev[i];
		sprintf(rdev[i]->gd->disk_name, "ramhd%c", 'a'+i);
		rdev[i]->gd->flags |= GENHD_FL_SUPPRESS_PARTITION_INFO;
		set_capacity(rdev[i]->gd, RAMHD_SECTOR_TOTAL);
		add_disk(rdev[i]->gd);
	}
	return 0;
}
开发者ID:TUSSON,项目名称:Coding,代码行数:27,代码来源:ramhd_mkreq.c


示例13: imgrement_init

static int __init imgrement_init(void)
{
    char* err;
    struct imgrement_device *dev;

    imgrement_device = kzalloc(sizeof(struct imgrement_device), GFP_KERNEL);
    _astgo(imgrement_device != NULL, "Error allocating", err, init_error);
    dev = imgrement_device;

    dev->major = register_blkdev(0, DRIVER_NAME);
    _astgo(dev->major > 0, "Error register block device", err, init_error);

    dev->base_dev = blkdev_get_by_path("/dev/sdb", FMODE_READ, NULL);
    _astgo(dev->base_dev != NULL, "Error getting base block device", err, init_error);

    dev->base_queue = bdev_get_queue(dev->base_dev);
    _astgo(dev->base_queue != NULL, "Error getting queue", err, init_error);
    dev->orig_req_fn = dev->base_queue->make_request_fn;
    dev->base_queue->make_request_fn = trace_request_fn;

    LOG("%s trace initialization succeeded", dev->base_dev->bd_disk->disk_name);
    return 0;

init_error:
    LOG_VAR(err);
    imgrement_exit();
    return -1;
}
开发者ID:yleong,项目名称:imgrement-proto,代码行数:28,代码来源:main.c


示例14: ramblock_init

static int ramblock_init(void)
{
    major = register_blkdev(0, "ramblock");
	
	/* 1.分配一个gendisk结构体 */
	/* 这里的16表示分区的个数 15个分区 */
    ramblock_gendisk = alloc_disk(16);
	
	/* 2. 设置 */
    ramblock_gendisk->major = major;
    ramblock_gendisk->first_minor = 0;
	sprintf(ramblock_gendisk->disk_name, "ramblock");
    ramblock_gendisk->fops = &ramblock_fops;

	/* 2.1 分配/设置队列:提供读写能力 */
    ramblock_request_queue = blk_init_queue(do_ramblock_request, &ramblock_lock);
    ramblock_gendisk->queue = ramblock_request_queue;
	
	/* 2.2 设置其它属性:比如容量 */
	set_capacity(ramblock_gendisk, RAMBLOCK_SIZE / 512);

	/* 3. 硬件相关操作 */
	if (NULL == (ramblock_buf = kzalloc(RAMBLOCK_SIZE, GFP_KERNEL)))
		return -ENOMEM;
	
	/* 4. 注册 */
    add_disk(ramblock_gendisk);
	
	return 0;
}
开发者ID:54shady,项目名称:mini2440_drv,代码行数:30,代码来源:ramblock.c


示例15: dm3730logic_cf_init

/* ---------------------------------------------------------------------
 * Module init/exit routines
 */
static int __init dm3730logic_cf_init(void)
{
	int rc;

	// printk(KERN_INFO "%s:%d\n", __FUNCTION__, __LINE__);

	cf_major = register_blkdev(cf_major, "omap-cf");
	if (cf_major <= 0) {
		rc = -ENOMEM;
		goto err_blk;
	}

#if defined(CONFIG_DEBUG_FS) && defined(DEBUG)
	(void)debugfs_create_file("cf-debug", S_IRUGO | S_IFREG, NULL,
				NULL, &dm3730logic_cf_debug_fops);
#endif

	pr_info("omap-cf: registering platform binding\n");
	rc = platform_driver_register(&dm3730logic_cf_platform_driver);
	if (rc)
		goto err_plat;

	printk(KERN_INFO "DM3730 SOM LV memory CompactFlash device driver, major=%i\n", cf_major);

	return 0;

err_plat:
	unregister_blkdev(cf_major, "dm3730logic-cf");
err_blk:
	printk(KERN_ERR "omap-cf: registration failed; err=%i\n", rc);
	return rc;
}
开发者ID:Aircell,项目名称:asp-kernel,代码行数:35,代码来源:dm3730logic-cf.c


示例16: init_mtdblock

int __init init_mtdblock(void)
{
	int i;

	if (register_blkdev(MAJOR_NR,DEVICE_NAME,&mtd_fops)) {
		printk(KERN_NOTICE "Can't allocate major number %d for Memory Technology Devices.\n",
		       MTD_BLOCK_MAJOR);
		return -EAGAIN;
	}
	DEBUG(MTD_DEBUG_LEVEL3,
		"init_mtdblock: allocated major number %d (read only).\n", 
		MTD_BLOCK_MAJOR);
	
	/* We fill it in at open() time. */
	for (i=0; i< MAX_MTD_DEVICES; i++) {
		mtd_sizes[i] = 0;
	}
	
	/* Allow the block size to default to BLOCK_SIZE. */
	blksize_size[MAJOR_NR] = NULL;
	blk_size[MAJOR_NR] = mtd_sizes;
	
	blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), &mtdblock_request);
	return 0;
}
开发者ID:iPodLinux,项目名称:linux-2.4.24-ipod,代码行数:25,代码来源:mtdblock_ro.c


示例17: zvol_init

int
zvol_init(void)
{
	int error;

	list_create(&zvol_state_list, sizeof (zvol_state_t),
	    offsetof(zvol_state_t, zv_next));
	mutex_init(&zvol_state_lock, NULL, MUTEX_DEFAULT, NULL);

	error = register_blkdev(zvol_major, ZVOL_DRIVER);
	if (error) {
		printk(KERN_INFO "ZFS: register_blkdev() failed %d\n", error);
		goto out;
	}

	blk_register_region(MKDEV(zvol_major, 0), 1UL << MINORBITS,
	    THIS_MODULE, zvol_probe, NULL, NULL);

	return (0);

out:
	mutex_destroy(&zvol_state_lock);
	list_destroy(&zvol_state_list);

	return (SET_ERROR(error));
}
开发者ID:alek-p,项目名称:zfs,代码行数:26,代码来源:zvol.c


示例18: block_demo_init

static int __init block_demo_init(void)
{
    spin_lock_init(&g_lock);
    int err = register_blkdev(BLK_DEV_MAJOR,"blk-dev-demo");
    if(err != 0)
    {
        Log("[Error] register_blkdev failed.");
        return -1;
    }
    gp_blk_dev_disk = alloc_disk(1);
    if(!gp_blk_dev_disk)
    {
        Log("[Error] alloc_disk failed.");
        err = -1;
        goto FAIL_ALLOC_DISK;
    }

    gp_blk_dev_disk->major = BLK_DEV_MAJOR;
    gp_blk_dev_disk->first_minor = 0;
    
    sprintf(gp_blk_dev_disk->disk_name,DISK_NAME);
    set_capacity(gp_blk_dev_disk, DISK_SIZE >> 9);
	
	gp_blk_dev_disk->fops = &g_mem_fops;
    gp_blk_dev_disk->queue = blk_init_queue(mem_block_requeut_fn,&g_lock);
	
    add_disk(gp_blk_dev_disk);

    return 0;
FAIL_ALLOC_DISK:
    unregister_blkdev(BLK_DEV_MAJOR,"blk-dev-demo");
    return err;
}
开发者ID:laitianli,项目名称:loongson-linux-2.6.36-3_mips,代码行数:33,代码来源:block_demo.c


示例19: local_init

static __init int local_init(void)
{
	int r;

	/* allocate a slab for the dm_ios */
	_io_cache = kmem_cache_create("dm_io",
				      sizeof(struct dm_io), 0, 0, NULL, NULL);
	if (!_io_cache)
		return -ENOMEM;

	/* allocate a slab for the target ios */
	_tio_cache = kmem_cache_create("dm_tio", sizeof(struct target_io),
				       0, 0, NULL, NULL);
	if (!_tio_cache) {
		kmem_cache_destroy(_io_cache);
		return -ENOMEM;
	}

	_major = major;
	r = register_blkdev(_major, _name);
	if (r < 0) {
		kmem_cache_destroy(_tio_cache);
		kmem_cache_destroy(_io_cache);
		return r;
	}

	if (!_major)
		_major = r;

	return 0;
}
开发者ID:wxlong,项目名称:Test,代码行数:31,代码来源:dm.c


示例20: cyasblkdev_blk_initialize

/*init west bridge block device */
static int cyasblkdev_blk_initialize(void)
{
	struct cyasblkdev_blk_data *bd;
	int res;

	DBGPRN_FUNC_NAME;

	res = register_blkdev(major, "cyasblkdev");

	if (res < 0) {
		#ifndef WESTBRIDGE_NDEBUG
		cy_as_hal_print_message(KERN_WARNING
			"%s unable to get major %d for cyasblkdev media: %d\n",
			__func__, major, res);
		#endif
		return res;
	}

	if (major == 0)
		major = res;

	#ifndef WESTBRIDGE_NDEBUG
	cy_as_hal_print_message(
		"%s cyasblkdev registered with major number: %d\n",
		__func__, major);
	#endif

	bd = cyasblkdev_blk_alloc();
	if (IS_ERR(bd))
		return PTR_ERR(bd);

	return 0;
}
开发者ID:119-org,项目名称:hi3518-osdrv,代码行数:34,代码来源:cyasblkdev_block.c



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ register_callback函数代码示例发布时间:2022-05-30
下一篇:
C++ register_all_packages函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap