Allow an application to attach private data to the context. The initial
motivate is passing the ndctl_test instance into deeper leaf functions
of the unit test.

Signed-off-by: Dan Williams <[email protected]>
---
 ndctl/lib/libndctl-private.h |    1 +
 ndctl/lib/libndctl.c         |   10 ++++++++++
 ndctl/lib/libndctl.sym       |    2 ++
 ndctl/libndctl.h.in          |    2 ++
 4 files changed, 15 insertions(+)

diff --git a/ndctl/lib/libndctl-private.h b/ndctl/lib/libndctl-private.h
index 778dbb508ead..3e67db058f04 100644
--- a/ndctl/lib/libndctl-private.h
+++ b/ndctl/lib/libndctl-private.h
@@ -144,6 +144,7 @@ struct ndctl_ctx {
        struct kmod_ctx *kmod_ctx;
        struct daxctl_ctx *daxctl_ctx;
        unsigned long timeout;
+       void *private_data;
 };
 
 /**
diff --git a/ndctl/lib/libndctl.c b/ndctl/lib/libndctl.c
index ff74c483076e..ea3111eb6c93 100644
--- a/ndctl/lib/libndctl.c
+++ b/ndctl/lib/libndctl.c
@@ -434,6 +434,16 @@ NDCTL_EXPORT int ndctl_new(struct ndctl_ctx **ctx)
        return rc;
 }
 
+NDCTL_EXPORT void ndctl_set_private_data(struct ndctl_ctx *ctx, void *data)
+{
+       ctx->private_data = data;
+}
+
+NDCTL_EXPORT void *ndctl_get_private_data(struct ndctl_ctx *ctx)
+{
+       return ctx->private_data;
+}
+
 NDCTL_EXPORT struct daxctl_ctx *ndctl_get_daxctl_ctx(struct ndctl_ctx *ctx)
 {
        return ctx->daxctl_ctx;
diff --git a/ndctl/lib/libndctl.sym b/ndctl/lib/libndctl.sym
index 603c386cc2a1..506bf0d67aab 100644
--- a/ndctl/lib/libndctl.sym
+++ b/ndctl/lib/libndctl.sym
@@ -12,6 +12,8 @@ global:
        ndctl_set_log_priority;
        ndctl_new;
        ndctl_get_daxctl_ctx;
+       ndctl_set_private_data;
+       ndctl_get_private_data;
        ndctl_invalidate;
 local:
         *;
diff --git a/ndctl/libndctl.h.in b/ndctl/libndctl.h.in
index 9d7219894ed7..d45111775525 100644
--- a/ndctl/libndctl.h.in
+++ b/ndctl/libndctl.h.in
@@ -77,6 +77,8 @@ struct ndctl_ctx;
 struct ndctl_ctx *ndctl_ref(struct ndctl_ctx *ctx);
 struct ndctl_ctx *ndctl_unref(struct ndctl_ctx *ctx);
 int ndctl_new(struct ndctl_ctx **ctx);
+void ndctl_set_private_data(struct ndctl_ctx *ctx, void *data);
+void *ndctl_get_private_data(struct ndctl_ctx *ctx);
 struct daxctl_ctx;
 struct daxctl_ctx *ndctl_get_daxctl_ctx(struct ndctl_ctx *ctx);
 void ndctl_invalidate(struct ndctl_ctx *ctx);

_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to