summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeoff Levand <geoffrey.levand@am.sony.com>2009-01-21 16:27:00 -0800
committerJeremy Kerr <jk@ozlabs.org>2009-02-01 11:54:15 +1100
commit285059cfed1f7572f2a46ca1385f874642db3f17 (patch)
treeca8cf3941ad4c65419f643c65c7cf8579e81a8fe
parent5a1cb18519a0140ad49c460d99be2fb399efb802 (diff)
downloadtalos-petitboot-285059cfed1f7572f2a46ca1385f874642db3f17.tar.gz
talos-petitboot-285059cfed1f7572f2a46ca1385f874642db3f17.zip
Add client ops instance arg
Add a user supplied agument to the struct discover_client_ops callback routines that is suitable for managing client instance data. Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r--ui/common/discover-client.c4
-rw-r--r--ui/common/discover-client.h12
-rw-r--r--ui/test/pb-test.c7
3 files changed, 16 insertions, 7 deletions
diff --git a/ui/common/discover-client.c b/ui/common/discover-client.c
index 422c182..112fa65 100644
--- a/ui/common/discover-client.c
+++ b/ui/common/discover-client.c
@@ -92,7 +92,7 @@ int discover_client_process(struct discover_client *client)
pb_log("%s: no device?\n", __func__);
return 0;
}
- client->ops.add_device(dev);
+ client->ops.add_device(dev, client->ops.cb_arg);
talloc_free(dev);
break;
case PB_PROTOCOL_ACTION_REMOVE:
@@ -101,7 +101,7 @@ int discover_client_process(struct discover_client *client)
pb_log("%s: no device id?\n", __func__);
return 0;
}
- client->ops.remove_device(dev_id);
+ client->ops.remove_device(dev_id, client->ops.cb_arg);
break;
default:
pb_log("%s: unknown action %d\n", __func__, message->action);
diff --git a/ui/common/discover-client.h b/ui/common/discover-client.h
index 50bea6c..bc2294a 100644
--- a/ui/common/discover-client.h
+++ b/ui/common/discover-client.h
@@ -5,9 +5,17 @@
struct discover_client;
+/**
+ * struct discover_client_ops - Application supplied client info.
+ * @add_device: PB_PROTOCOL_ACTION_ADD event callback.
+ * @remove_device: PB_PROTOCOL_ACTION_REMOVE event callback.
+ * @cb_arg: Client managed convenience variable passed to callbacks.
+ */
+
struct discover_client_ops {
- int (*add_device)(struct device *);
- void (*remove_device)(char *);
+ int (*add_device)(struct device *device, void *arg);
+ void (*remove_device)(char *dev_id, void *arg);
+ void *cb_arg;
};
struct discover_client *discover_client_init(struct discover_client_ops *ops);
diff --git a/ui/test/pb-test.c b/ui/test/pb-test.c
index 5f021ff..b6ff627 100644
--- a/ui/test/pb-test.c
+++ b/ui/test/pb-test.c
@@ -3,7 +3,8 @@
#include "ui/common/discover-client.h"
-static int print_device_add(struct device *device)
+static int print_device_add(struct device *device,
+ void __attribute__((unused)) *arg)
{
struct boot_option *opt;
@@ -27,13 +28,13 @@ static int print_device_add(struct device *device)
return 0;
}
-static void print_device_remove(char *dev_id)
+static void print_device_remove(char *dev_id, void __attribute__((unused)) *arg)
{
printf("removed device:\n");
printf("\tid: %s\n", dev_id);
}
-struct discover_client_ops client_ops = {
+static struct discover_client_ops client_ops = {
.add_device = print_device_add,
.remove_device = print_device_remove,
};
OpenPOWER on IntegriCloud