diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-07-17 13:14:26 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-07-17 13:14:26 -0400 |
commit | 37cf2b8d1622897cf57e70cdab9eba57feb5ff6c (patch) | |
tree | d0805cda3bcf71cc2bed8f7c51fd37f3c575ad27 /Documentation/connector/cn_test.c | |
parent | 41144ca3dda6d55b10c46d5b7d86502ccffa1c97 (diff) |
connector: get test code working by default
The connector test code currently does not work out of the box. This is
because it uses a connector id that is above the registered limit. So
rather than force people to stumble through undocumented code wondering
why it isn't working, have the test code use one of the "private" ids by
default. While I'm in here, clean up the code (kernel and user app) so
that it's a bit more user friendly and verbose in significant things that
it does. Terse test code wastes people time as they simply enumerate it
with all the same kind of debug messages to get a better feel of what code
is running at any time.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'Documentation/connector/cn_test.c')
-rw-r--r-- | Documentation/connector/cn_test.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/Documentation/connector/cn_test.c b/Documentation/connector/cn_test.c index 50d5ce4899c8..6e73190af0be 100644 --- a/Documentation/connector/cn_test.c +++ b/Documentation/connector/cn_test.c | |||
@@ -19,6 +19,8 @@ | |||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #define pr_fmt(fmt) "cn_test: " fmt | ||
23 | |||
22 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
23 | #include <linux/module.h> | 25 | #include <linux/module.h> |
24 | #include <linux/moduleparam.h> | 26 | #include <linux/moduleparam.h> |
@@ -27,16 +29,17 @@ | |||
27 | 29 | ||
28 | #include <linux/connector.h> | 30 | #include <linux/connector.h> |
29 | 31 | ||
30 | static struct cb_id cn_test_id = { 0x123, 0x456 }; | 32 | static struct cb_id cn_test_id = { CN_NETLINK_USERS + 3, 0x456 }; |
31 | static char cn_test_name[] = "cn_test"; | 33 | static char cn_test_name[] = "cn_test"; |
32 | static struct sock *nls; | 34 | static struct sock *nls; |
33 | static struct timer_list cn_test_timer; | 35 | static struct timer_list cn_test_timer; |
34 | 36 | ||
35 | void cn_test_callback(struct cn_msg *msg) | 37 | static void cn_test_callback(struct cn_msg *msg) |
36 | { | 38 | { |
37 | printk("%s: %lu: idx=%x, val=%x, seq=%u, ack=%u, len=%d: %s.\n", | 39 | pr_info("%s: %lu: idx=%x, val=%x, seq=%u, ack=%u, len=%d: %s.\n", |
38 | __func__, jiffies, msg->id.idx, msg->id.val, | 40 | __func__, jiffies, msg->id.idx, msg->id.val, |
39 | msg->seq, msg->ack, msg->len, (char *)msg->data); | 41 | msg->seq, msg->ack, msg->len, |
42 | msg->len ? (char *)msg->data : ""); | ||
40 | } | 43 | } |
41 | 44 | ||
42 | /* | 45 | /* |
@@ -61,9 +64,7 @@ static int cn_test_want_notify(void) | |||
61 | 64 | ||
62 | skb = alloc_skb(size, GFP_ATOMIC); | 65 | skb = alloc_skb(size, GFP_ATOMIC); |
63 | if (!skb) { | 66 | if (!skb) { |
64 | printk(KERN_ERR "Failed to allocate new skb with size=%u.\n", | 67 | pr_err("failed to allocate new skb with size=%u\n", size); |
65 | size); | ||
66 | |||
67 | return -ENOMEM; | 68 | return -ENOMEM; |
68 | } | 69 | } |
69 | 70 | ||
@@ -112,12 +113,12 @@ static int cn_test_want_notify(void) | |||
112 | //netlink_broadcast(nls, skb, 0, ctl->group, GFP_ATOMIC); | 113 | //netlink_broadcast(nls, skb, 0, ctl->group, GFP_ATOMIC); |
113 | netlink_unicast(nls, skb, 0, 0); | 114 | netlink_unicast(nls, skb, 0, 0); |
114 | 115 | ||
115 | printk(KERN_INFO "Request was sent. Group=0x%x.\n", ctl->group); | 116 | pr_info("request was sent: group=0x%x\n", ctl->group); |
116 | 117 | ||
117 | return 0; | 118 | return 0; |
118 | 119 | ||
119 | nlmsg_failure: | 120 | nlmsg_failure: |
120 | printk(KERN_ERR "Failed to send %u.%u\n", msg->seq, msg->ack); | 121 | pr_err("failed to send %u.%u\n", msg->seq, msg->ack); |
121 | kfree_skb(skb); | 122 | kfree_skb(skb); |
122 | return -EINVAL; | 123 | return -EINVAL; |
123 | } | 124 | } |
@@ -129,6 +130,8 @@ static void cn_test_timer_func(unsigned long __data) | |||
129 | struct cn_msg *m; | 130 | struct cn_msg *m; |
130 | char data[32]; | 131 | char data[32]; |
131 | 132 | ||
133 | pr_debug("%s: timer fired with data %lu\n", __func__, __data); | ||
134 | |||
132 | m = kzalloc(sizeof(*m) + sizeof(data), GFP_ATOMIC); | 135 | m = kzalloc(sizeof(*m) + sizeof(data), GFP_ATOMIC); |
133 | if (m) { | 136 | if (m) { |
134 | 137 | ||
@@ -148,7 +151,7 @@ static void cn_test_timer_func(unsigned long __data) | |||
148 | 151 | ||
149 | cn_test_timer_counter++; | 152 | cn_test_timer_counter++; |
150 | 153 | ||
151 | mod_timer(&cn_test_timer, jiffies + HZ); | 154 | mod_timer(&cn_test_timer, jiffies + msecs_to_jiffies(1000)); |
152 | } | 155 | } |
153 | 156 | ||
154 | static int cn_test_init(void) | 157 | static int cn_test_init(void) |
@@ -166,8 +169,10 @@ static int cn_test_init(void) | |||
166 | } | 169 | } |
167 | 170 | ||
168 | setup_timer(&cn_test_timer, cn_test_timer_func, 0); | 171 | setup_timer(&cn_test_timer, cn_test_timer_func, 0); |
169 | cn_test_timer.expires = jiffies + HZ; | 172 | mod_timer(&cn_test_timer, jiffies + msecs_to_jiffies(1000)); |
170 | add_timer(&cn_test_timer); | 173 | |
174 | pr_info("initialized with id={%u.%u}\n", | ||
175 | cn_test_id.idx, cn_test_id.val); | ||
171 | 176 | ||
172 | return 0; | 177 | return 0; |
173 | 178 | ||