diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/afb-api-dyn.c | 4 | ||||
-rw-r--r-- | src/afb-api-dyn.h | 1 | ||||
-rw-r--r-- | src/afb-export.c | 6 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/afb-api-dyn.c b/src/afb-api-dyn.c index 0667f519..2ef1b1a5 100644 --- a/src/afb-api-dyn.c +++ b/src/afb-api-dyn.c @@ -235,7 +235,7 @@ static struct afb_api_itf dyn_api_itf = { .describe = describe_cb }; -int afb_api_dyn_add(struct afb_apiset *apiset, const char *name, const char *info, int (*preinit)(void*, struct afb_dynapi*), void *closure) +int afb_api_dyn_add(struct afb_apiset *apiset, const char *name, const char *info, int noconcurrency, int (*preinit)(void*, struct afb_dynapi*), void *closure) { int rc; struct afb_api_dyn *dynapi; @@ -266,7 +266,7 @@ int afb_api_dyn_add(struct afb_apiset *apiset, const char *name, const char *inf /* records the binding */ afb_api.closure = dynapi; afb_api.itf = &dyn_api_itf; - afb_api.group = NULL; + afb_api.group = noconcurrency ? dynapi : NULL; if (afb_apiset_add(apiset, afb_export_apiname(dynapi->export), afb_api) < 0) { ERROR("dynamic api %s can't be registered to set %s, ABORTING it!", afb_export_apiname(dynapi->export), diff --git a/src/afb-api-dyn.h b/src/afb-api-dyn.h index 35464c6e..21626eed 100644 --- a/src/afb-api-dyn.h +++ b/src/afb-api-dyn.h @@ -40,6 +40,7 @@ extern int afb_api_dyn_add( struct afb_apiset *apiset, const char *name, const char *info, + int noconcurrency, int (*preinit)(void*, struct afb_dynapi*), void *closure); diff --git a/src/afb-export.c b/src/afb-export.c index 19aab0ce..ea783b8b 100644 --- a/src/afb-export.c +++ b/src/afb-export.c @@ -255,11 +255,12 @@ static int api_new_api_cb( void *closure, const char *api, const char *info, + int noconcurrency, int (*preinit)(void*, struct afb_dynapi *), void *preinit_closure) { struct afb_export *export = closure; - return afb_api_dyn_add(export->apiset, api, info, preinit, preinit_closure); + return afb_api_dyn_add(export->apiset, api, info, noconcurrency, preinit, preinit_closure); } /********************************************** @@ -376,11 +377,12 @@ static int hooked_api_new_api_cb( void *closure, const char *api, const char *info, + int noconcurrency, int (*preinit)(void*, struct afb_dynapi *), void *preinit_closure) { /* TODO */ - return api_new_api_cb(closure, api, info, preinit, preinit_closure); + return api_new_api_cb(closure, api, info, noconcurrency, preinit, preinit_closure); } /********************************************** * vectors |