本文整理汇总了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;未经允许,请勿转载。 |
请发表评论