aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/capi/kcapi_proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/isdn/capi/kcapi_proc.c')
-rw-r--r--drivers/isdn/capi/kcapi_proc.c41
1 files changed, 24 insertions, 17 deletions
diff --git a/drivers/isdn/capi/kcapi_proc.c b/drivers/isdn/capi/kcapi_proc.c
index 09d4db764d22..ea2dff602e49 100644
--- a/drivers/isdn/capi/kcapi_proc.c
+++ b/drivers/isdn/capi/kcapi_proc.c
@@ -15,13 +15,12 @@
15#include <linux/seq_file.h> 15#include <linux/seq_file.h>
16#include <linux/init.h> 16#include <linux/init.h>
17 17
18static char * 18static char *state2str(unsigned short state)
19cardstate2str(unsigned short cardstate)
20{ 19{
21 switch (cardstate) { 20 switch (state) {
22 case CARD_DETECTED: return "detected"; 21 case CAPI_CTR_DETECTED: return "detected";
23 case CARD_LOADING: return "loading"; 22 case CAPI_CTR_LOADING: return "loading";
24 case CARD_RUNNING: return "running"; 23 case CAPI_CTR_RUNNING: return "running";
25 default: return "???"; 24 default: return "???";
26 } 25 }
27} 26}
@@ -36,9 +35,12 @@ cardstate2str(unsigned short cardstate)
36// --------------------------------------------------------------------------- 35// ---------------------------------------------------------------------------
37 36
38static void *controller_start(struct seq_file *seq, loff_t *pos) 37static void *controller_start(struct seq_file *seq, loff_t *pos)
38 __acquires(capi_controller_lock)
39{ 39{
40 mutex_lock(&capi_controller_lock);
41
40 if (*pos < CAPI_MAXCONTR) 42 if (*pos < CAPI_MAXCONTR)
41 return &capi_cards[*pos]; 43 return &capi_controller[*pos];
42 44
43 return NULL; 45 return NULL;
44} 46}
@@ -47,13 +49,15 @@ static void *controller_next(struct seq_file *seq, void *v, loff_t *pos)
47{ 49{
48 ++*pos; 50 ++*pos;
49 if (*pos < CAPI_MAXCONTR) 51 if (*pos < CAPI_MAXCONTR)
50 return &capi_cards[*pos]; 52 return &capi_controller[*pos];
51 53
52 return NULL; 54 return NULL;
53} 55}
54 56
55static void controller_stop(struct seq_file *seq, void *v) 57static void controller_stop(struct seq_file *seq, void *v)
58 __releases(capi_controller_lock)
56{ 59{
60 mutex_unlock(&capi_controller_lock);
57} 61}
58 62
59static int controller_show(struct seq_file *seq, void *v) 63static int controller_show(struct seq_file *seq, void *v)
@@ -65,7 +69,7 @@ static int controller_show(struct seq_file *seq, void *v)
65 69
66 seq_printf(seq, "%d %-10s %-8s %-16s %s\n", 70 seq_printf(seq, "%d %-10s %-8s %-16s %s\n",
67 ctr->cnr, ctr->driver_name, 71 ctr->cnr, ctr->driver_name,
68 cardstate2str(ctr->cardstate), 72 state2str(ctr->state),
69 ctr->name, 73 ctr->name,
70 ctr->procinfo ? ctr->procinfo(ctr) : ""); 74 ctr->procinfo ? ctr->procinfo(ctr) : "");
71 75
@@ -135,9 +139,11 @@ static const struct file_operations proc_contrstats_ops = {
135// applid nrecvctlpkt nrecvdatapkt nsentctlpkt nsentdatapkt 139// applid nrecvctlpkt nrecvdatapkt nsentctlpkt nsentdatapkt
136// --------------------------------------------------------------------------- 140// ---------------------------------------------------------------------------
137 141
138static void * 142static void *applications_start(struct seq_file *seq, loff_t *pos)
139applications_start(struct seq_file *seq, loff_t *pos) 143 __acquires(capi_controller_lock)
140{ 144{
145 mutex_lock(&capi_controller_lock);
146
141 if (*pos < CAPI_MAXAPPL) 147 if (*pos < CAPI_MAXAPPL)
142 return &capi_applications[*pos]; 148 return &capi_applications[*pos];
143 149
@@ -154,9 +160,10 @@ applications_next(struct seq_file *seq, void *v, loff_t *pos)
154 return NULL; 160 return NULL;
155} 161}
156 162
157static void 163static void applications_stop(struct seq_file *seq, void *v)
158applications_stop(struct seq_file *seq, void *v) 164 __releases(capi_controller_lock)
159{ 165{
166 mutex_unlock(&capi_controller_lock);
160} 167}
161 168
162static int 169static int
@@ -239,9 +246,9 @@ static const struct file_operations proc_applstats_ops = {
239// --------------------------------------------------------------------------- 246// ---------------------------------------------------------------------------
240 247
241static void *capi_driver_start(struct seq_file *seq, loff_t *pos) 248static void *capi_driver_start(struct seq_file *seq, loff_t *pos)
242 __acquires(&capi_drivers_list_lock) 249 __acquires(&capi_drivers_lock)
243{ 250{
244 read_lock(&capi_drivers_list_lock); 251 mutex_lock(&capi_drivers_lock);
245 return seq_list_start(&capi_drivers, *pos); 252 return seq_list_start(&capi_drivers, *pos);
246} 253}
247 254
@@ -251,9 +258,9 @@ static void *capi_driver_next(struct seq_file *seq, void *v, loff_t *pos)
251} 258}
252 259
253static void capi_driver_stop(struct seq_file *seq, void *v) 260static void capi_driver_stop(struct seq_file *seq, void *v)
254 __releases(&capi_drivers_list_lock) 261 __releases(&capi_drivers_lock)
255{ 262{
256 read_unlock(&capi_drivers_list_lock); 263 mutex_unlock(&capi_drivers_lock);
257} 264}
258 265
259static int capi_driver_show(struct seq_file *seq, void *v) 266static int capi_driver_show(struct seq_file *seq, void *v)