kunit: add support for named resources
The kunit resources API allows for custom initialization and cleanup code (init/fini); here a new resource add function sets the "struct kunit_resource" "name" field, and calls the standard add function. Having a simple way to name resources is useful in cases such as multithreaded tests where a set of resources are shared among threads; a pointer to the "struct kunit *" test state then is all that is needed to retrieve and use named resources. Support is provided to add, find and destroy named resources; the latter two are simply wrappers that use a "match-by-name" callback. If an attempt to add a resource with a name that already exists is made kunit_add_named_resource() will return -EEXIST. Signed-off-by: Alan Maguire <alan.maguire@oracle.com> Reviewed-by: Brendan Higgins <brendanhiggins@google.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
@@ -441,6 +441,30 @@ int kunit_add_resource(struct kunit *test,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kunit_add_resource);
|
||||
|
||||
int kunit_add_named_resource(struct kunit *test,
|
||||
kunit_resource_init_t init,
|
||||
kunit_resource_free_t free,
|
||||
struct kunit_resource *res,
|
||||
const char *name,
|
||||
void *data)
|
||||
{
|
||||
struct kunit_resource *existing;
|
||||
|
||||
if (!name)
|
||||
return -EINVAL;
|
||||
|
||||
existing = kunit_find_named_resource(test, name);
|
||||
if (existing) {
|
||||
kunit_put_resource(existing);
|
||||
return -EEXIST;
|
||||
}
|
||||
|
||||
res->name = name;
|
||||
|
||||
return kunit_add_resource(test, init, free, res, data);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kunit_add_named_resource);
|
||||
|
||||
struct kunit_resource *kunit_alloc_and_get_resource(struct kunit *test,
|
||||
kunit_resource_init_t init,
|
||||
kunit_resource_free_t free,
|
||||
|
Reference in New Issue
Block a user