// SPDX-License-Identifier: GPL-2.0-or-later /* * item.c - library routines for handling generic config items * * Based on kobject: * kobject is Copyright (c) 2002-2003 Patrick Mochel * * configfs Copyright (C) 2005 Oracle. All rights reserved. * * Please see the file Documentation/filesystems/configfs.rst for * critical information about using the config_item interface.
*/
/** * config_item_set_name - Set the name of an item * @item: item. * @fmt: The vsnprintf()'s format string. * * If strlen(name) >= CONFIGFS_ITEM_NAME_LEN, then use a * dynamically allocated string that @item->ci_name points to. * Otherwise, use the static @item->ci_namebuf array.
*/ int config_item_set_name(struct config_item *item, constchar *fmt, ...)
{ int limit = CONFIGFS_ITEM_NAME_LEN; int need;
va_list args; char *name;
/* * First, try the static array
*/
va_start(args, fmt);
need = vsnprintf(item->ci_namebuf, limit, fmt, args);
va_end(args); if (need < limit)
name = item->ci_namebuf; else {
va_start(args, fmt);
name = kvasprintf(GFP_KERNEL, fmt, args);
va_end(args); if (!name) return -ENOMEM;
}
/* Free the old name, if necessary. */ if (item->ci_name && item->ci_name != item->ci_namebuf)
kfree(item->ci_name);
/* Now, set the new name */
item->ci_name = name; return 0;
}
EXPORT_SYMBOL(config_item_set_name);
/** * config_item_put - decrement refcount for item. * @item: item. * * Decrement the refcount, and if 0, call config_item_cleanup().
*/ void config_item_put(struct config_item *item)
{ if (item)
kref_put(&item->ci_kref, config_item_release);
}
EXPORT_SYMBOL(config_item_put);
/** * config_group_init - initialize a group for use * @group: config_group
*/ void config_group_init(struct config_group *group)
{
config_item_init(&group->cg_item);
INIT_LIST_HEAD(&group->cg_children);
INIT_LIST_HEAD(&group->default_groups);
}
EXPORT_SYMBOL(config_group_init);
/** * config_group_find_item - search for item in group. * @group: group we're looking in. * @name: item's name. * * Iterate over @group->cg_list, looking for a matching config_item. * If matching item is found take a reference and return the item. * Caller must have locked group via @group->cg_subsys->su_mtx.
*/ struct config_item *config_group_find_item(struct config_group *group, constchar *name)
{ struct list_head *entry; struct config_item *ret = NULL;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.