diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2010-02-08 18:19:59 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-10 14:12:09 -0500 |
commit | b512f3d841370aedee9a2c24a14a0ab5fc0a02b2 (patch) | |
tree | ae6ade49fac29bcec19bec890fa78ce9d70d74ec /net | |
parent | 90dd7f5ace558314fa431ae0f59388ed3e5c7695 (diff) |
net: ax25: use seq_hlist_foo() helpers
Simplify seq_file code.
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ax25/af_ax25.c | 18 | ||||
-rw-r--r-- | net/ax25/ax25_uid.c | 25 |
2 files changed, 7 insertions, 36 deletions
diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c index 5588ba69c46..a5beedf43e2 100644 --- a/net/ax25/af_ax25.c +++ b/net/ax25/af_ax25.c | |||
@@ -1863,25 +1863,13 @@ static int ax25_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) | |||
1863 | static void *ax25_info_start(struct seq_file *seq, loff_t *pos) | 1863 | static void *ax25_info_start(struct seq_file *seq, loff_t *pos) |
1864 | __acquires(ax25_list_lock) | 1864 | __acquires(ax25_list_lock) |
1865 | { | 1865 | { |
1866 | struct ax25_cb *ax25; | ||
1867 | struct hlist_node *node; | ||
1868 | int i = 0; | ||
1869 | |||
1870 | spin_lock_bh(&ax25_list_lock); | 1866 | spin_lock_bh(&ax25_list_lock); |
1871 | ax25_for_each(ax25, node, &ax25_list) { | 1867 | return seq_hlist_start(&ax25_list, *pos); |
1872 | if (i == *pos) | ||
1873 | return ax25; | ||
1874 | ++i; | ||
1875 | } | ||
1876 | return NULL; | ||
1877 | } | 1868 | } |
1878 | 1869 | ||
1879 | static void *ax25_info_next(struct seq_file *seq, void *v, loff_t *pos) | 1870 | static void *ax25_info_next(struct seq_file *seq, void *v, loff_t *pos) |
1880 | { | 1871 | { |
1881 | ++*pos; | 1872 | return seq_hlist_next(v, &ax25_list, pos); |
1882 | |||
1883 | return hlist_entry( ((struct ax25_cb *)v)->ax25_node.next, | ||
1884 | struct ax25_cb, ax25_node); | ||
1885 | } | 1873 | } |
1886 | 1874 | ||
1887 | static void ax25_info_stop(struct seq_file *seq, void *v) | 1875 | static void ax25_info_stop(struct seq_file *seq, void *v) |
@@ -1892,7 +1880,7 @@ static void ax25_info_stop(struct seq_file *seq, void *v) | |||
1892 | 1880 | ||
1893 | static int ax25_info_show(struct seq_file *seq, void *v) | 1881 | static int ax25_info_show(struct seq_file *seq, void *v) |
1894 | { | 1882 | { |
1895 | ax25_cb *ax25 = v; | 1883 | ax25_cb *ax25 = hlist_entry(v, struct ax25_cb, ax25_node); |
1896 | char buf[11]; | 1884 | char buf[11]; |
1897 | int k; | 1885 | int k; |
1898 | 1886 | ||
diff --git a/net/ax25/ax25_uid.c b/net/ax25/ax25_uid.c index 832bcf092a0..9f13f6eefcb 100644 --- a/net/ax25/ax25_uid.c +++ b/net/ax25/ax25_uid.c | |||
@@ -146,31 +146,13 @@ int ax25_uid_ioctl(int cmd, struct sockaddr_ax25 *sax) | |||
146 | static void *ax25_uid_seq_start(struct seq_file *seq, loff_t *pos) | 146 | static void *ax25_uid_seq_start(struct seq_file *seq, loff_t *pos) |
147 | __acquires(ax25_uid_lock) | 147 | __acquires(ax25_uid_lock) |
148 | { | 148 | { |
149 | struct ax25_uid_assoc *pt; | ||
150 | struct hlist_node *node; | ||
151 | int i = 1; | ||
152 | |||
153 | read_lock(&ax25_uid_lock); | 149 | read_lock(&ax25_uid_lock); |
154 | 150 | return seq_hlist_start_head(&ax25_uid_list, *pos); | |
155 | if (*pos == 0) | ||
156 | return SEQ_START_TOKEN; | ||
157 | |||
158 | ax25_uid_for_each(pt, node, &ax25_uid_list) { | ||
159 | if (i == *pos) | ||
160 | return pt; | ||
161 | ++i; | ||
162 | } | ||
163 | return NULL; | ||
164 | } | 151 | } |
165 | 152 | ||
166 | static void *ax25_uid_seq_next(struct seq_file *seq, void *v, loff_t *pos) | 153 | static void *ax25_uid_seq_next(struct seq_file *seq, void *v, loff_t *pos) |
167 | { | 154 | { |
168 | ++*pos; | 155 | return seq_hlist_next(v, &ax25_uid_list, pos); |
169 | if (v == SEQ_START_TOKEN) | ||
170 | return ax25_uid_list.first; | ||
171 | else | ||
172 | return hlist_entry(((ax25_uid_assoc *)v)->uid_node.next, | ||
173 | ax25_uid_assoc, uid_node); | ||
174 | } | 156 | } |
175 | 157 | ||
176 | static void ax25_uid_seq_stop(struct seq_file *seq, void *v) | 158 | static void ax25_uid_seq_stop(struct seq_file *seq, void *v) |
@@ -186,8 +168,9 @@ static int ax25_uid_seq_show(struct seq_file *seq, void *v) | |||
186 | if (v == SEQ_START_TOKEN) | 168 | if (v == SEQ_START_TOKEN) |
187 | seq_printf(seq, "Policy: %d\n", ax25_uid_policy); | 169 | seq_printf(seq, "Policy: %d\n", ax25_uid_policy); |
188 | else { | 170 | else { |
189 | struct ax25_uid_assoc *pt = v; | 171 | struct ax25_uid_assoc *pt; |
190 | 172 | ||
173 | pt = hlist_entry(v, struct ax25_uid_assoc, uid_node); | ||
191 | seq_printf(seq, "%6d %s\n", pt->uid, ax2asc(buf, &pt->call)); | 174 | seq_printf(seq, "%6d %s\n", pt->uid, ax2asc(buf, &pt->call)); |
192 | } | 175 | } |
193 | return 0; | 176 | return 0; |