diff options
author | Geoff Levand <geoffrey.levand@am.sony.com> | 2009-01-21 16:27:00 -0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2009-02-01 11:54:15 +1100 |
commit | 285059cfed1f7572f2a46ca1385f874642db3f17 (patch) | |
tree | ca8cf3941ad4c65419f643c65c7cf8579e81a8fe | |
parent | 5a1cb18519a0140ad49c460d99be2fb399efb802 (diff) | |
download | talos-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.c | 4 | ||||
-rw-r--r-- | ui/common/discover-client.h | 12 | ||||
-rw-r--r-- | ui/test/pb-test.c | 7 |
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, }; |