aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/connector/cn_test.c
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-07-17 13:14:26 -0400
committerDavid S. Miller <davem@davemloft.net>2009-07-17 13:14:26 -0400
commit37cf2b8d1622897cf57e70cdab9eba57feb5ff6c (patch)
treed0805cda3bcf71cc2bed8f7c51fd37f3c575ad27 /Documentation/connector/cn_test.c
parent41144ca3dda6d55b10c46d5b7d86502ccffa1c97 (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.c31
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
30static struct cb_id cn_test_id = { 0x123, 0x456 }; 32static struct cb_id cn_test_id = { CN_NETLINK_USERS + 3, 0x456 };
31static char cn_test_name[] = "cn_test"; 33static char cn_test_name[] = "cn_test";
32static struct sock *nls; 34static struct sock *nls;
33static struct timer_list cn_test_timer; 35static struct timer_list cn_test_timer;
34 36
35void cn_test_callback(struct cn_msg *msg) 37static 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
119nlmsg_failure: 120nlmsg_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
154static int cn_test_init(void) 157static 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