summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/afb-api-dyn.c4
-rw-r--r--src/afb-api-dyn.h1
-rw-r--r--src/afb-export.c6
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