diff mbox

[7/9] petitboot: Add client ops instance arg

Message ID 20090122002653.679362110@am.sony.com
State Accepted
Delegated to: Jeremy Kerr
Headers show

Commit Message

Geoff Levand Jan. 22, 2009, 12:27 a.m. UTC
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>
---
 ui/common/discover-client.c |    4 ++--
 ui/common/discover-client.h |   12 ++++++++++--
 ui/test/pb-test.c           |    7 ++++---
 3 files changed, 16 insertions(+), 7 deletions(-)
diff mbox

Patch

--- a/ui/common/discover-client.c
+++ b/ui/common/discover-client.c
@@ -92,7 +92,7 @@  int discover_client_process(struct disco
 			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 disco
 			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);
--- 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);
--- 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 devic
 	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,
 };