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

C++ config_item_put函数代码示例

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

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



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

示例1: target_fabric_drop_lun

static void target_fabric_drop_lun(
	struct config_group *group,
	struct config_item *item)
{
	struct se_lun *lun = container_of(to_config_group(item),
				struct se_lun, lun_group);
	struct config_item *df_item;
	struct config_group *lun_cg, *port_stat_grp;
	int i;

	port_stat_grp = &lun->port_stat_grps.stat_group;
	for (i = 0; port_stat_grp->default_groups[i]; i++) {
		df_item = &port_stat_grp->default_groups[i]->cg_item;
		port_stat_grp->default_groups[i] = NULL;
		config_item_put(df_item);
	}
	kfree(port_stat_grp->default_groups);

	lun_cg = &lun->lun_group;
	for (i = 0; lun_cg->default_groups[i]; i++) {
		df_item = &lun_cg->default_groups[i]->cg_item;
		lun_cg->default_groups[i] = NULL;
		config_item_put(df_item);
	}
	kfree(lun_cg->default_groups);

	config_item_put(item);
}
开发者ID:AeroGirl,项目名称:VAR-SOM-AM33-SDK7-Kernel,代码行数:28,代码来源:target_core_fabric_configfs.c


示例2: target_fabric_drop_mappedlun

static void target_fabric_drop_mappedlun(
	struct config_group *group,
	struct config_item *item)
{
	struct se_lun_acl *lacl = container_of(to_config_group(item),
			struct se_lun_acl, se_lun_group);
	struct config_item *df_item;
	struct config_group *lacl_cg = NULL, *ml_stat_grp = NULL;
	int i;

	ml_stat_grp = &lacl->ml_stat_grps.stat_group;
	for (i = 0; ml_stat_grp->default_groups[i]; i++) {
		df_item = &ml_stat_grp->default_groups[i]->cg_item;
		ml_stat_grp->default_groups[i] = NULL;
		config_item_put(df_item);
	}
	kfree(ml_stat_grp->default_groups);

	lacl_cg = &lacl->se_lun_group;
	for (i = 0; lacl_cg->default_groups[i]; i++) {
		df_item = &lacl_cg->default_groups[i]->cg_item;
		lacl_cg->default_groups[i] = NULL;
		config_item_put(df_item);
	}
	kfree(lacl_cg->default_groups);

	config_item_put(item);
}
开发者ID:AeroGirl,项目名称:VAR-SOM-AM33-SDK7-Kernel,代码行数:28,代码来源:target_core_fabric_configfs.c


示例3: configfs_symlink

int configfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
{
	int ret;
	struct path path;
	struct configfs_dirent *sd;
	struct config_item *parent_item;
	struct config_item *target_item = NULL;
	struct config_item_type *type;

	ret = -EPERM;  /* What lack-of-symlink returns */
	if (dentry->d_parent == configfs_sb->s_root)
		goto out;

	sd = dentry->d_parent->d_fsdata;
	/*
	 * Fake invisibility if dir belongs to a group/default groups hierarchy
	 * being attached
	 */
	ret = -ENOENT;
	if (!configfs_dirent_is_ready(sd))
		goto out;

	parent_item = configfs_get_config_item(dentry->d_parent);
	type = parent_item->ci_type;

	ret = -EPERM;
	if (!type || !type->ct_item_ops ||
	    !type->ct_item_ops->allow_link)
		goto out_put;

	ret = get_target(symname, &path, &target_item);
	if (ret)
		goto out_put;

	ret = type->ct_item_ops->allow_link(parent_item, target_item);
	if (!ret) {
		mutex_lock(&configfs_symlink_mutex);
		ret = create_link(parent_item, target_item, dentry);
		mutex_unlock(&configfs_symlink_mutex);
		if (ret && type->ct_item_ops->drop_link)
			type->ct_item_ops->drop_link(parent_item,
						     target_item);
	}

	config_item_put(target_item);
	path_put(&path);

out_put:
	config_item_put(parent_item);

out:
	return ret;
}
开发者ID:rrowicki,项目名称:Chrono_Kernel-1,代码行数:53,代码来源:symlink.c


示例4: configfs_unlink

int configfs_unlink(struct inode *dir, struct dentry *dentry)
{
	struct configfs_dirent *sd = dentry->d_fsdata;
	struct configfs_symlink *sl;
	struct config_item *parent_item;
	struct config_item_type *type;
	int ret;

	ret = -EPERM;  /* What lack-of-symlink returns */
	if (!(sd->s_type & CONFIGFS_ITEM_LINK))
		goto out;

	BUG_ON(dentry->d_parent == configfs_sb->s_root);

	sl = sd->s_element;

	parent_item = configfs_get_config_item(dentry->d_parent);
	type = parent_item->ci_type;

	spin_lock(&configfs_dirent_lock);
	list_del_init(&sd->s_sibling);
	spin_unlock(&configfs_dirent_lock);
	configfs_drop_dentry(sd, dentry->d_parent);
	dput(dentry);
	configfs_put(sd);

	/*
	 * drop_link() must be called before
	 * list_del_init(&sl->sl_list), so that the order of
	 * drop_link(this, target) and drop_item(target) is preserved.
	 */
	if (type && type->ct_item_ops &&
	    type->ct_item_ops->drop_link)
		type->ct_item_ops->drop_link(parent_item,
					       sl->sl_target);

	spin_lock(&configfs_dirent_lock);
	list_del_init(&sl->sl_list);
	spin_unlock(&configfs_dirent_lock);

	/* Put reference from create_link() */
	config_item_put(sl->sl_target);
	kfree(sl);

	config_item_put(parent_item);

	ret = 0;

out:
	return ret;
}
开发者ID:rrowicki,项目名称:Chrono_Kernel-1,代码行数:51,代码来源:symlink.c


示例5: configfs_unlink

int configfs_unlink(struct inode *dir, struct dentry *dentry)
{
	struct configfs_dirent *sd = dentry->d_fsdata;
	struct configfs_symlink *sl;
	struct config_item *parent_item;
	struct config_item_type *type;
	int ret;

	ret = -EPERM;  /*                              */
	if (!(sd->s_type & CONFIGFS_ITEM_LINK))
		goto out;

	sl = sd->s_element;

	parent_item = configfs_get_config_item(dentry->d_parent);
	type = parent_item->ci_type;

	spin_lock(&configfs_dirent_lock);
	list_del_init(&sd->s_sibling);
	spin_unlock(&configfs_dirent_lock);
	configfs_drop_dentry(sd, dentry->d_parent);
	dput(dentry);
	configfs_put(sd);

	/*
                                     
                                                     
                                                               
  */
	if (type && type->ct_item_ops &&
	    type->ct_item_ops->drop_link)
		type->ct_item_ops->drop_link(parent_item,
					       sl->sl_target);

	spin_lock(&configfs_dirent_lock);
	list_del_init(&sl->sl_list);
	spin_unlock(&configfs_dirent_lock);

	/*                                  */
	config_item_put(sl->sl_target);
	kfree(sl);

	config_item_put(parent_item);

	ret = 0;

out:
	return ret;
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:49,代码来源:symlink.c


示例6: configfs_symlink

int configfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
{
	int ret;
	struct path path;
	struct configfs_dirent *sd;
	struct config_item *parent_item;
	struct config_item *target_item = NULL;
	struct config_item_type *type;

	sd = dentry->d_parent->d_fsdata;
	/*
                                                                        
                  
  */
	ret = -ENOENT;
	if (!configfs_dirent_is_ready(sd))
		goto out;

	parent_item = configfs_get_config_item(dentry->d_parent);
	type = parent_item->ci_type;

	ret = -EPERM;
	if (!type || !type->ct_item_ops ||
	    !type->ct_item_ops->allow_link)
		goto out_put;

	ret = get_target(symname, &path, &target_item, dentry->d_sb);
	if (ret)
		goto out_put;

	ret = type->ct_item_ops->allow_link(parent_item, target_item);
	if (!ret) {
		mutex_lock(&configfs_symlink_mutex);
		ret = create_link(parent_item, target_item, dentry);
		mutex_unlock(&configfs_symlink_mutex);
		if (ret && type->ct_item_ops->drop_link)
			type->ct_item_ops->drop_link(parent_item,
						     target_item);
	}

	config_item_put(target_item);
	path_put(&path);

out_put:
	config_item_put(parent_item);

out:
	return ret;
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:49,代码来源:symlink.c


示例7: device_drop_group

static void device_drop_group(struct config_group *group,
			       struct config_item *item)
{
 	iio_dummy_remove(item->ci_name);
	printk(KERN_ALERT "device drop group called\n");
	config_item_put(item);	
}
开发者ID:cristina2689,项目名称:iio_evgen_local,代码行数:7,代码来源:industrialio-configfs.c


示例8: create_link

static int create_link(struct config_item *parent_item,
               struct config_item *item,
               struct dentry *dentry)
{
    struct configfs_dirent *target_sd = item->ci_dentry->d_fsdata;
    struct configfs_symlink *sl;
    int ret;

    ret = -ENOMEM;
    sl = kmalloc(sizeof(struct configfs_symlink), GFP_KERNEL);
    if (sl) {
        sl->sl_target = config_item_get(item);
        /* FIXME: needs a lock, I'd bet */
        list_add(&sl->sl_list, &target_sd->s_links);
        ret = configfs_create_link(sl, parent_item->ci_dentry,
                       dentry);
        if (ret) {
            list_del_init(&sl->sl_list);
            config_item_put(item);
            kfree(sl);
        }
    }

    return ret;
}
开发者ID:274914765,项目名称:C,代码行数:25,代码来源:symlink.c


示例9: dtbocfg_overlay_group_drop_item

/**
 * dtbocfg_overlay_group_drop_item() - Drop Device Tree Overlay Group Item
 * @group: Pointer to Configuration Group
 * @item : Pointer to Device Tree Overlay Group Item
 */
static void dtbocfg_overlay_group_drop_item(struct config_group *group, struct config_item *item)
{
    struct dtbocfg_overlay_item *overlay = container_of_dtbocfg_overlay_item(item);

    pr_debug("%s\n", __func__);

    config_item_put(&overlay->item);
}
开发者ID:na1pir,项目名称:FPGA-SoC-Linux,代码行数:13,代码来源:dtbocfg.c


示例10: device_drop_group

static void device_drop_group(struct config_group *group,
			      struct config_item *item)
{
	struct iio_sw_device *d = to_iio_sw_device(item);

	iio_sw_device_destroy(d);
	config_item_put(item);
}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:8,代码来源:industrialio-sw-device.c


示例11: target_fabric_drop_tpg

static void target_fabric_drop_tpg(
	struct config_group *group,
	struct config_item *item)
{
	struct se_portal_group *se_tpg = container_of(to_config_group(item),
				struct se_portal_group, tpg_group);
	struct config_group *tpg_cg = &se_tpg->tpg_group;
	struct config_item *df_item;
	int i;
	for (i = 0; tpg_cg->default_groups[i]; i++) {
		df_item = &tpg_cg->default_groups[i]->cg_item;
		tpg_cg->default_groups[i] = NULL;
		config_item_put(df_item);
	}

	config_item_put(item);
}
开发者ID:mjduddin,项目名称:B14CKB1RD_kernel_m8,代码行数:17,代码来源:target_core_fabric_configfs.c


示例12: target_fabric_drop_wwn

static void target_fabric_drop_wwn(
	struct config_group *group,
	struct config_item *item)
{
	struct se_wwn *wwn = container_of(to_config_group(item),
				struct se_wwn, wwn_group);
	struct config_item *df_item;
	struct config_group *cg = &wwn->wwn_group;
	int i;

	for (i = 0; cg->default_groups[i]; i++) {
		df_item = &cg->default_groups[i]->cg_item;
		cg->default_groups[i] = NULL;
		config_item_put(df_item);
	}

	config_item_put(item);
}
开发者ID:AeroGirl,项目名称:VAR-SOM-AM33-SDK7-Kernel,代码行数:18,代码来源:target_core_fabric_configfs.c


示例13: target_fabric_drop_np

static void target_fabric_drop_np(
	struct config_group *group,
	struct config_item *item)
{
	/*
	 * struct se_tpg_np is released via target_fabric_np_base_release()
	 */
	config_item_put(item);
}
开发者ID:AeroGirl,项目名称:VAR-SOM-AM33-SDK7-Kernel,代码行数:9,代码来源:target_core_fabric_configfs.c


示例14: trigger_drop_group

static void trigger_drop_group(struct config_group *group,
			       struct config_item *item)
{
	struct iio_sw_trigger *t = to_iio_sw_trigger(item);

	printk(KERN_ALERT "Called drop_group");
	iio_sw_trigger_destroy(t);
	config_item_put(item);
}
开发者ID:cristina2689,项目名称:iio_evgen_local,代码行数:9,代码来源:industrialio-configfs.c


示例15: target_fabric_drop_nodeacl

static void target_fabric_drop_nodeacl(
	struct config_group *group,
	struct config_item *item)
{
	struct se_node_acl *se_nacl = container_of(to_config_group(item),
			struct se_node_acl, acl_group);
	struct config_item *df_item;
	struct config_group *nacl_cg;
	int i;

	nacl_cg = &se_nacl->acl_group;
	for (i = 0; nacl_cg->default_groups[i]; i++) {
		df_item = &nacl_cg->default_groups[i]->cg_item;
		nacl_cg->default_groups[i] = NULL;
		config_item_put(df_item);
	}
	config_item_put(item);
}
开发者ID:mjduddin,项目名称:B14CKB1RD_kernel_m8,代码行数:18,代码来源:target_core_fabric_configfs.c


示例16: target_fabric_drop_tpg

static void target_fabric_drop_tpg(
	struct config_group *group,
	struct config_item *item)
{
	struct se_portal_group *se_tpg = container_of(to_config_group(item),
				struct se_portal_group, tpg_group);
	struct config_group *tpg_cg = &se_tpg->tpg_group;
	struct config_item *df_item;
	int i;
	/*
	 * Release default groups, but do not release tpg_cg->default_groups
	 * memory as it is statically allocated at se_tpg->tpg_default_groups.
	 */
	for (i = 0; tpg_cg->default_groups[i]; i++) {
		df_item = &tpg_cg->default_groups[i]->cg_item;
		tpg_cg->default_groups[i] = NULL;
		config_item_put(df_item);
	}

	config_item_put(item);
}
开发者ID:AeroGirl,项目名称:VAR-SOM-AM33-SDK7-Kernel,代码行数:21,代码来源:target_core_fabric_configfs.c


示例17: create_link

static int create_link(struct config_item *parent_item,
		       struct config_item *item,
		       struct dentry *dentry)
{
	struct configfs_dirent *target_sd = item->ci_dentry->d_fsdata;
	struct configfs_symlink *sl;
	int ret;

	ret = -ENOENT;
	if (!configfs_dirent_is_ready(target_sd))
		goto out;
	ret = -ENOMEM;
	sl = kmalloc(sizeof(struct configfs_symlink), GFP_KERNEL);
	if (sl) {
		sl->sl_target = config_item_get(item);
		spin_lock(&configfs_dirent_lock);
		if (target_sd->s_type & CONFIGFS_USET_DROPPING) {
			spin_unlock(&configfs_dirent_lock);
			config_item_put(item);
			kfree(sl);
			return -ENOENT;
		}
		list_add(&sl->sl_list, &target_sd->s_links);
		spin_unlock(&configfs_dirent_lock);
		ret = configfs_create_link(sl, parent_item->ci_dentry,
					   dentry);
		if (ret) {
			spin_lock(&configfs_dirent_lock);
			list_del_init(&sl->sl_list);
			spin_unlock(&configfs_dirent_lock);
			config_item_put(item);
			kfree(sl);
		}
	}

out:
	return ret;
}
开发者ID:rrowicki,项目名称:Chrono_Kernel-1,代码行数:38,代码来源:symlink.c


示例18: configfs_symlink

int configfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
{
    int ret;
    struct nameidata nd;
    struct config_item *parent_item;
    struct config_item *target_item;
    struct config_item_type *type;

    ret = -EPERM;  /* What lack-of-symlink returns */
    if (dentry->d_parent == configfs_sb->s_root)
        goto out;

    parent_item = configfs_get_config_item(dentry->d_parent);
    type = parent_item->ci_type;

    if (!type || !type->ct_item_ops ||
        !type->ct_item_ops->allow_link)
        goto out_put;

    ret = get_target(symname, &nd, &target_item);
    if (ret)
        goto out_put;

    ret = type->ct_item_ops->allow_link(parent_item, target_item);
    if (!ret)
        ret = create_link(parent_item, target_item, dentry);

    config_item_put(target_item);
    path_put(&nd.path);

out_put:
    config_item_put(parent_item);

out:
    return ret;
}
开发者ID:274914765,项目名称:C,代码行数:36,代码来源:symlink.c


示例19: configfs_getlink

static int configfs_getlink(struct dentry *dentry, char * path)
{
	struct config_item *item, *target_item;
	int error = 0;

	item = configfs_get_config_item(dentry->d_parent);
	if (!item)
		return -EINVAL;

	target_item = configfs_get_config_item(dentry);
	if (!target_item) {
		config_item_put(item);
		return -EINVAL;
	}

	down_read(&configfs_rename_sem);
	error = configfs_get_target_path(item, target_item, path);
	up_read(&configfs_rename_sem);

	config_item_put(item);
	config_item_put(target_item);
	return error;

}
开发者ID:rrowicki,项目名称:Chrono_Kernel-1,代码行数:24,代码来源:symlink.c


示例20: do_release

static int do_release(struct inode *inode, struct file *filp,
                      struct config_item *item, struct configfs_attribute *attr,
                      int type)
{
    struct module *owner = attr->ca_owner;
    struct configfs_buffer *buffer = filp->private_data;

    if (item)
        config_item_put(item);
    /* After this point, attr should not be accessed. */
    module_put(owner);

    if (buffer) {
        if (buffer->page)
            free_page((unsigned long)buffer->page);
        mutex_destroy(&buffer->mutex);
        kfree(buffer);
    }
    return 0;
}
开发者ID:vmayoral,项目名称:snappy-kernel,代码行数:20,代码来源:file.c



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
C++ config_load函数代码示例发布时间:2022-05-30
下一篇:
C++ config_item_name函数代码示例发布时间: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