From 4b3c9315834e561b5bd21be04f013e8717150797 Mon Sep 17 00:00:00 2001 From: Dongwoo Lee Date: Thu, 18 Aug 2022 20:23:56 +0900 Subject: [PATCH] resource: Add the new device ops create/delete To separate initialization and instance creation on resource driver, the new ops create/delete are introduced. Now, each operation is used as below: - init: Setup the common contexts for resource (called once) - exit: Clear the init-ed contexts (called once) - create: Create resource instance with an individual context - delete: Free own context and remove resource instance Change-Id: I4987f26afd6de7e7ec0b1d8ed6a724acbf55e374 Signed-off-by: Dongwoo Lee --- include/util/resource.h | 6 ++++-- src/util/resource.c | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/include/util/resource.h b/include/util/resource.h index 596f414..d47db5a 100644 --- a/include/util/resource.h +++ b/include/util/resource.h @@ -92,8 +92,10 @@ struct resource_control { }; struct resource_driver_ops { - int (*init)(struct resource *res); - void (*exit)(struct resource *res); + int (*init)(void); + void (*exit)(void); + int (*create)(struct resource *res); + void (*delete)(struct resource *res); /* * If prepare_update is specified, it will be called * at every update_resource_attrs(). diff --git a/src/util/resource.c b/src/util/resource.c index fa68256..02e5ff9 100644 --- a/src/util/resource.c +++ b/src/util/resource.c @@ -184,8 +184,8 @@ void delete_resource(struct resource *resource) if (!resource) return; - if (resource->driver && resource->driver->ops.exit) - resource->driver->ops.exit(resource); + if (resource->driver && resource->driver->ops.delete) + resource->driver->ops.delete(resource); unset_resource_attr_interest(resource, RESOURCE_ATTR_MASK); @@ -257,8 +257,8 @@ struct resource *create_resource(int resource_type) resource->ctrls = driver->ctrls; resource->num_ctrls = driver->num_ctrls; - if (driver->ops.init) { - ret = driver->ops.init(resource); + if (driver->ops.create) { + ret = driver->ops.create(resource); if (ret < 0) { _E("failed to initialize resource driver, res:type(%s)id(%d)\n", resource->name, resource->id); -- 2.7.4