diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-07-17 13:13:21 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-07-17 13:13:21 -0400 |
commit | 0741241c6b80bfd58417e95de984d60c9e9ef2a0 (patch) | |
tree | 9fa70e5e918e0735c531988f64b92cb5655baf28 | |
parent | e36aa25a533962b08402530e8443ac804a454e27 (diff) |
connector: make callback argument type explicit
The connector documentation states that the argument to the callback
function is always a pointer to a struct cn_msg, but rather than encode it
in the API itself, it uses a void pointer everywhere. This doesn't make
much sense to encode the pointer in documentation as it prevents proper C
type checking from occurring and can easily allow people to use the wrong
pointer type. So convert the argument type to an explicit struct cn_msg
pointer.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | Documentation/connector/cn_test.c | 4 | ||||
-rw-r--r-- | drivers/connector/cn_proc.c | 3 | ||||
-rw-r--r-- | drivers/connector/cn_queue.c | 7 | ||||
-rw-r--r-- | drivers/connector/connector.c | 6 | ||||
-rw-r--r-- | drivers/staging/dst/dcore.c | 3 | ||||
-rw-r--r-- | drivers/video/uvesafb.c | 3 | ||||
-rw-r--r-- | drivers/w1/w1_netlink.c | 3 | ||||
-rw-r--r-- | include/linux/connector.h | 6 |
8 files changed, 16 insertions, 19 deletions
diff --git a/Documentation/connector/cn_test.c b/Documentation/connector/cn_test.c index f688eba87704..50d5ce4899c8 100644 --- a/Documentation/connector/cn_test.c +++ b/Documentation/connector/cn_test.c | |||
@@ -32,10 +32,8 @@ static char cn_test_name[] = "cn_test"; | |||
32 | static struct sock *nls; | 32 | static struct sock *nls; |
33 | static struct timer_list cn_test_timer; | 33 | static struct timer_list cn_test_timer; |
34 | 34 | ||
35 | void cn_test_callback(void *data) | 35 | void cn_test_callback(struct cn_msg *msg) |
36 | { | 36 | { |
37 | struct cn_msg *msg = (struct cn_msg *)data; | ||
38 | |||
39 | printk("%s: %lu: idx=%x, val=%x, seq=%u, ack=%u, len=%d: %s.\n", | 37 | printk("%s: %lu: idx=%x, val=%x, seq=%u, ack=%u, len=%d: %s.\n", |
40 | __func__, jiffies, msg->id.idx, msg->id.val, | 38 | __func__, jiffies, msg->id.idx, msg->id.val, |
41 | msg->seq, msg->ack, msg->len, (char *)msg->data); | 39 | msg->seq, msg->ack, msg->len, (char *)msg->data); |
diff --git a/drivers/connector/cn_proc.c b/drivers/connector/cn_proc.c index c5afc98e2675..85e5dc0431fe 100644 --- a/drivers/connector/cn_proc.c +++ b/drivers/connector/cn_proc.c | |||
@@ -202,9 +202,8 @@ static void cn_proc_ack(int err, int rcvd_seq, int rcvd_ack) | |||
202 | * cn_proc_mcast_ctl | 202 | * cn_proc_mcast_ctl |
203 | * @data: message sent from userspace via the connector | 203 | * @data: message sent from userspace via the connector |
204 | */ | 204 | */ |
205 | static void cn_proc_mcast_ctl(void *data) | 205 | static void cn_proc_mcast_ctl(struct cn_msg *msg) |
206 | { | 206 | { |
207 | struct cn_msg *msg = data; | ||
208 | enum proc_cn_mcast_op *mc_op = NULL; | 207 | enum proc_cn_mcast_op *mc_op = NULL; |
209 | int err = 0; | 208 | int err = 0; |
210 | 209 | ||
diff --git a/drivers/connector/cn_queue.c b/drivers/connector/cn_queue.c index c769ef269fb5..d478aefcd3be 100644 --- a/drivers/connector/cn_queue.c +++ b/drivers/connector/cn_queue.c | |||
@@ -87,7 +87,9 @@ void cn_queue_wrapper(struct work_struct *work) | |||
87 | kfree(d->free); | 87 | kfree(d->free); |
88 | } | 88 | } |
89 | 89 | ||
90 | static struct cn_callback_entry *cn_queue_alloc_callback_entry(char *name, struct cb_id *id, void (*callback)(void *)) | 90 | static struct cn_callback_entry * |
91 | cn_queue_alloc_callback_entry(char *name, struct cb_id *id, | ||
92 | void (*callback)(struct cn_msg *)) | ||
91 | { | 93 | { |
92 | struct cn_callback_entry *cbq; | 94 | struct cn_callback_entry *cbq; |
93 | 95 | ||
@@ -120,7 +122,8 @@ int cn_cb_equal(struct cb_id *i1, struct cb_id *i2) | |||
120 | return ((i1->idx == i2->idx) && (i1->val == i2->val)); | 122 | return ((i1->idx == i2->idx) && (i1->val == i2->val)); |
121 | } | 123 | } |
122 | 124 | ||
123 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)) | 125 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, |
126 | void (*callback)(struct cn_msg *)) | ||
124 | { | 127 | { |
125 | struct cn_callback_entry *cbq, *__cbq; | 128 | struct cn_callback_entry *cbq, *__cbq; |
126 | int found = 0; | 129 | int found = 0; |
diff --git a/drivers/connector/connector.c b/drivers/connector/connector.c index fd336c5a9057..3f45669f5d76 100644 --- a/drivers/connector/connector.c +++ b/drivers/connector/connector.c | |||
@@ -269,7 +269,8 @@ static void cn_notify(struct cb_id *id, u32 notify_event) | |||
269 | * | 269 | * |
270 | * May sleep. | 270 | * May sleep. |
271 | */ | 271 | */ |
272 | int cn_add_callback(struct cb_id *id, char *name, void (*callback)(void *)) | 272 | int cn_add_callback(struct cb_id *id, char *name, |
273 | void (*callback)(struct cn_msg *)) | ||
273 | { | 274 | { |
274 | int err; | 275 | int err; |
275 | struct cn_dev *dev = &cdev; | 276 | struct cn_dev *dev = &cdev; |
@@ -351,9 +352,8 @@ static int cn_ctl_msg_equals(struct cn_ctl_msg *m1, struct cn_ctl_msg *m2) | |||
351 | * | 352 | * |
352 | * Used for notification of a request's processing. | 353 | * Used for notification of a request's processing. |
353 | */ | 354 | */ |
354 | static void cn_callback(void *data) | 355 | static void cn_callback(struct cn_msg *msg) |
355 | { | 356 | { |
356 | struct cn_msg *msg = data; | ||
357 | struct cn_ctl_msg *ctl; | 357 | struct cn_ctl_msg *ctl; |
358 | struct cn_ctl_entry *ent; | 358 | struct cn_ctl_entry *ent; |
359 | u32 size; | 359 | u32 size; |
diff --git a/drivers/staging/dst/dcore.c b/drivers/staging/dst/dcore.c index fad25b753042..84724187ec3e 100644 --- a/drivers/staging/dst/dcore.c +++ b/drivers/staging/dst/dcore.c | |||
@@ -846,10 +846,9 @@ static dst_command_func dst_commands[] = { | |||
846 | /* | 846 | /* |
847 | * Configuration parser. | 847 | * Configuration parser. |
848 | */ | 848 | */ |
849 | static void cn_dst_callback(void *data) | 849 | static void cn_dst_callback(struct cn_msg *msg) |
850 | { | 850 | { |
851 | struct dst_ctl *ctl; | 851 | struct dst_ctl *ctl; |
852 | struct cn_msg *msg = data; | ||
853 | int err; | 852 | int err; |
854 | struct dst_ctl_ack ack; | 853 | struct dst_ctl_ack ack; |
855 | struct dst_node *n = NULL, *tmp; | 854 | struct dst_node *n = NULL, *tmp; |
diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c index ca5b4643a401..e98baf6916b8 100644 --- a/drivers/video/uvesafb.c +++ b/drivers/video/uvesafb.c | |||
@@ -67,9 +67,8 @@ static DEFINE_MUTEX(uvfb_lock); | |||
67 | * find the kernel part of the task struct, copy the registers and | 67 | * find the kernel part of the task struct, copy the registers and |
68 | * the buffer contents and then complete the task. | 68 | * the buffer contents and then complete the task. |
69 | */ | 69 | */ |
70 | static void uvesafb_cn_callback(void *data) | 70 | static void uvesafb_cn_callback(struct cn_msg *msg) |
71 | { | 71 | { |
72 | struct cn_msg *msg = data; | ||
73 | struct uvesafb_task *utask; | 72 | struct uvesafb_task *utask; |
74 | struct uvesafb_ktask *task; | 73 | struct uvesafb_ktask *task; |
75 | 74 | ||
diff --git a/drivers/w1/w1_netlink.c b/drivers/w1/w1_netlink.c index fdf72851c574..52ccb3d3a963 100644 --- a/drivers/w1/w1_netlink.c +++ b/drivers/w1/w1_netlink.c | |||
@@ -306,9 +306,8 @@ static int w1_netlink_send_error(struct cn_msg *rcmsg, struct w1_netlink_msg *rm | |||
306 | return error; | 306 | return error; |
307 | } | 307 | } |
308 | 308 | ||
309 | static void w1_cn_callback(void *data) | 309 | static void w1_cn_callback(struct cn_msg *msg) |
310 | { | 310 | { |
311 | struct cn_msg *msg = data; | ||
312 | struct w1_netlink_msg *m = (struct w1_netlink_msg *)(msg + 1); | 311 | struct w1_netlink_msg *m = (struct w1_netlink_msg *)(msg + 1); |
313 | struct w1_netlink_cmd *cmd; | 312 | struct w1_netlink_cmd *cmd; |
314 | struct w1_slave *sl; | 313 | struct w1_slave *sl; |
diff --git a/include/linux/connector.h b/include/linux/connector.h index b68d27850d51..47ebf416f512 100644 --- a/include/linux/connector.h +++ b/include/linux/connector.h | |||
@@ -136,7 +136,7 @@ struct cn_callback_data { | |||
136 | void *ddata; | 136 | void *ddata; |
137 | 137 | ||
138 | void *callback_priv; | 138 | void *callback_priv; |
139 | void (*callback) (void *); | 139 | void (*callback) (struct cn_msg *); |
140 | 140 | ||
141 | void *free; | 141 | void *free; |
142 | }; | 142 | }; |
@@ -167,11 +167,11 @@ struct cn_dev { | |||
167 | struct cn_queue_dev *cbdev; | 167 | struct cn_queue_dev *cbdev; |
168 | }; | 168 | }; |
169 | 169 | ||
170 | int cn_add_callback(struct cb_id *, char *, void (*callback) (void *)); | 170 | int cn_add_callback(struct cb_id *, char *, void (*callback) (struct cn_msg *)); |
171 | void cn_del_callback(struct cb_id *); | 171 | void cn_del_callback(struct cb_id *); |
172 | int cn_netlink_send(struct cn_msg *, u32, gfp_t); | 172 | int cn_netlink_send(struct cn_msg *, u32, gfp_t); |
173 | 173 | ||
174 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)); | 174 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(struct cn_msg *)); |
175 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); | 175 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); |
176 | 176 | ||
177 | int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work); | 177 | int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work); |