diff options
author | Jan Kiszka <jan.kiszka@web.de> | 2010-02-08 05:12:14 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-16 19:01:22 -0500 |
commit | 0ca3a017a7373a4545dd7b345a8a0cecc16bc7e2 (patch) | |
tree | a739bfb8ddd0c7fcfdcd40ab6fcd990570c716bf /drivers/isdn/capi/kcapi.h | |
parent | ef69bb2ec6036945da1d3d3f07b75253f484f693 (diff) |
CAPI: Rework locking of controller data structures
This patch applies the mutex so far only protecting the controller list
to (almost) all accesses of controller data structures. It also reworks
waiting on state changes in old_capi_manufacturer so that it no longer
poll and holds a module reference to the controller owner while waiting
(the latter was partly done already). Modification and checking of the
blocked state remains racy by design, the caller is responsible for
dealing with this.
Signed-off-by: Jan Kiszka <jan.kiszka@web.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/isdn/capi/kcapi.h')
-rw-r--r-- | drivers/isdn/capi/kcapi.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/isdn/capi/kcapi.h b/drivers/isdn/capi/kcapi.h index 07c58500fe48..f4620b38ec51 100644 --- a/drivers/isdn/capi/kcapi.h +++ b/drivers/isdn/capi/kcapi.h | |||
@@ -24,6 +24,7 @@ printk(KERN_DEBUG "%s: " format "\n" , __func__ , ## arg); \ | |||
24 | #endif | 24 | #endif |
25 | 25 | ||
26 | enum { | 26 | enum { |
27 | CAPI_CTR_DETACHED = 0, | ||
27 | CAPI_CTR_DETECTED = 1, | 28 | CAPI_CTR_DETECTED = 1, |
28 | CAPI_CTR_LOADING = 2, | 29 | CAPI_CTR_LOADING = 2, |
29 | CAPI_CTR_RUNNING = 3, | 30 | CAPI_CTR_RUNNING = 3, |
@@ -32,8 +33,10 @@ enum { | |||
32 | extern struct list_head capi_drivers; | 33 | extern struct list_head capi_drivers; |
33 | extern struct mutex capi_drivers_lock; | 34 | extern struct mutex capi_drivers_lock; |
34 | 35 | ||
35 | extern struct capi20_appl *capi_applications[CAPI_MAXAPPL]; | ||
36 | extern struct capi_ctr *capi_controller[CAPI_MAXCONTR]; | 36 | extern struct capi_ctr *capi_controller[CAPI_MAXCONTR]; |
37 | extern struct mutex capi_controller_lock; | ||
38 | |||
39 | extern struct capi20_appl *capi_applications[CAPI_MAXAPPL]; | ||
37 | 40 | ||
38 | #ifdef CONFIG_PROC_FS | 41 | #ifdef CONFIG_PROC_FS |
39 | 42 | ||