]> git.pld-linux.org Git - packages/kernel.git/blob - atm-07-atm_dev_lock-sem.patch
- obsolete (new driver name sym53c8xx_2 doesn't conflict now)
[packages/kernel.git] / atm-07-atm_dev_lock-sem.patch
1  
2       [PATCH][2.4] convert atm_dev_lock from spinlock to semaphore
3  
4 From: chas williams (chas@locutus.cmf.nrl.navy.mil)
5 Date: Tue Feb 18 2003 - 16:31:55 EST
6  
7 same as the 2.5 patch just for 2.4 kernels.
8  
9 Index: linux/net/atm/addr.c
10 ===================================================================
11 RCS file: /afs/cmf/project/cvsroot/linux/net/atm/addr.c,v
12 retrieving revision 1.2
13 retrieving revision 1.3
14 diff -u -d -b -w -r1.2 -r1.3
15 --- linux/net/atm/addr.c 5 Mar 2002 13:41:26 -0000 1.2
16 +++ linux/net/atm/addr.c 14 Feb 2003 17:02:40 -0000 1.3
17 @@ -42,7 +42,6 @@
18   */
19  
20  static DECLARE_MUTEX(local_lock);
21 -extern  spinlock_t atm_dev_lock;
22  
23  static void notify_sigd(struct atm_dev *dev)
24  {
25 Index: linux/net/atm/common.c
26 ===================================================================
27 RCS file: /afs/cmf/project/cvsroot/linux/net/atm/common.c,v
28 retrieving revision 1.5
29 retrieving revision 1.6
30 diff -u -d -b -w -r1.5 -r1.6
31 --- linux/net/atm/common.c 14 Feb 2003 16:59:38 -0000 1.5
32 +++ linux/net/atm/common.c 14 Feb 2003 17:02:40 -0000 1.6
33 @@ -18,6 +18,7 @@
34  #include <linux/capability.h>
35  #include <linux/mm.h>          /* verify_area */
36  #include <linux/sched.h>
37 +#include <linux/sem.h>
38  #include <linux/time.h>                /* struct timeval */
39  #include <linux/skbuff.h>
40  #include <linux/bitops.h>
41 @@ -27,6 +28,7 @@
42  #include <asm/atomic.h>
43  #include <asm/poll.h>
44  #include <asm/ioctls.h>
45 +#include <asm/semaphore.h>
46  
47  #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)
48  #include <linux/atmlec.h>
49 @@ -86,7 +88,7 @@
50  #define DPRINTK(format,args...)
51  #endif
52  
53 -spinlock_t atm_dev_lock = SPIN_LOCK_UNLOCKED;
54 +DECLARE_MUTEX(atm_dev_sem);
55  
56  static struct sk_buff *alloc_tx(struct atm_vcc *vcc,unsigned int size)
57  {
58 @@ -154,7 +156,7 @@
59                                 vcc->dev->ops->free_rx_skb(vcc,skb);
60                         else kfree_skb(skb);
61                 }
62 -               spin_lock (&atm_dev_lock);      
63 +               down(&atm_dev_sem);
64                 fops_put (vcc->dev->ops);
65                 if (atomic_read(&vcc->rx_inuse))
66                         printk(KERN_WARNING "atm_release_vcc: strange ... "
67 @@ -162,11 +164,11 @@
68                             atomic_read(&vcc->rx_inuse));
69                 bind_vcc(vcc,NULL);
70         } else
71 -               spin_lock (&atm_dev_lock);      
72 +               down(&atm_dev_sem);
73  
74         if (free_sk) free_atm_vcc_sk(sk);
75  
76 -       spin_unlock (&atm_dev_lock);
77 +       up(&atm_dev_sem);
78  }
79  
80  
81 @@ -277,14 +279,14 @@
82         struct atm_dev *dev;
83         int return_val;
84  
85 -       spin_lock (&atm_dev_lock);
86 +       down(&atm_dev_sem);
87         dev = atm_find_dev(itf);
88         if (!dev)
89                 return_val =  -ENODEV;
90         else
91                 return_val = atm_do_connect_dev(vcc,dev,vpi,vci);
92  
93 -       spin_unlock (&atm_dev_lock);
94 +       up(&atm_dev_sem);
95  
96         return return_val;
97  }
98 @@ -316,10 +318,10 @@
99         else {
100                 struct atm_dev *dev;
101  
102 -               spin_lock (&atm_dev_lock);
103 +               down(&atm_dev_sem);
104                 for (dev = atm_devs; dev; dev = dev->next)
105                         if (!atm_do_connect_dev(vcc,dev,vpi,vci)) break;
106 -               spin_unlock (&atm_dev_lock);
107 +               up(&atm_dev_sem);
108                 if (!dev) return -ENODEV;
109         }
110         if (vpi == ATM_VPI_UNSPEC || vci == ATM_VCI_UNSPEC)
111 @@ -561,7 +563,7 @@
112         int error,len,size,number, ret_val;
113  
114         ret_val = 0;
115 -       spin_lock (&atm_dev_lock);
116 +       down(&atm_dev_sem);
117         vcc = ATM_SD(sock);
118         switch (cmd) {
119                 case SIOCOUTQ:
120 @@ -961,7 +963,7 @@
121                 ret_val = 0;
122  
123   done:
124 -       spin_unlock (&atm_dev_lock); 
125 +       up(&atm_dev_sem);
126         return ret_val;
127  }
128  
129 Index: linux/net/atm/resources.c
130 ===================================================================
131 RCS file: /afs/cmf/project/cvsroot/linux/net/atm/resources.c,v
132 retrieving revision 1.2
133 retrieving revision 1.3
134 diff -u -d -b -w -r1.2 -r1.3
135 --- linux/net/atm/resources.c 2 May 2002 16:56:23 -0000 1.2
136 +++ linux/net/atm/resources.c 14 Feb 2003 17:02:40 -0000 1.3
137 @@ -25,7 +25,7 @@
138  struct atm_dev *atm_devs = NULL;
139  static struct atm_dev *last_dev = NULL;
140  struct atm_vcc *nodev_vccs = NULL;
141 -extern spinlock_t atm_dev_lock;
142 +extern struct semaphore atm_dev_sem;
143  
144  
145  static struct atm_dev *alloc_atm_dev(const char *type)
146 @@ -72,7 +72,7 @@
147  {
148         struct atm_dev *dev = NULL;
149  
150 -       spin_lock(&atm_dev_lock);
151 +       down(&atm_dev_sem);
152  
153         dev = alloc_atm_dev(type);
154         if (!dev) {
155 @@ -110,7 +110,7 @@
156  #endif
157  
158  done:
159 -       spin_unlock(&atm_dev_lock);
160 +       up(&atm_dev_sem);
161         return dev;
162  }
163  
164 @@ -120,9 +120,9 @@
165  #ifdef CONFIG_PROC_FS
166         if (dev->ops->proc_read) atm_proc_dev_deregister(dev);
167  #endif
168 -       spin_lock(&atm_dev_lock);
169 +       down(&atm_dev_sem);
170         __free_atm_dev(dev);
171 -       spin_unlock(&atm_dev_lock);
172 +       up(&atm_dev_sem);
173  }
174  
175  void shutdown_atm_dev(struct atm_dev *dev)
176 Index: linux/net/atm/signaling.c
177 ===================================================================
178 RCS file: /afs/cmf/project/cvsroot/linux/net/atm/signaling.c,v
179 retrieving revision 1.2
180 retrieving revision 1.3
181 diff -u -d -b -w -r1.2 -r1.3
182 --- linux/net/atm/signaling.c 12 Feb 2003 20:57:47 -0000 1.2
183 +++ linux/net/atm/signaling.c 14 Feb 2003 17:02:40 -0000 1.3
184 @@ -33,7 +33,7 @@
185  struct atm_vcc *sigd = NULL;
186  static DECLARE_WAIT_QUEUE_HEAD(sigd_sleep);
187  
188 -extern spinlock_t atm_dev_lock;
189 +extern struct semaphore atm_dev_sem;
190  
191  static void sigd_put_skb(struct sk_buff *skb)
192  {
193 @@ -220,9 +220,9 @@
194         skb_queue_purge(&vcc->recvq);
195         purge_vccs(nodev_vccs);
196  
197 -       spin_lock (&atm_dev_lock);
198 +       down(&atm_dev_sem);
199         for (dev = atm_devs; dev; dev = dev->next) purge_vccs(dev->vccs);
200 -       spin_unlock (&atm_dev_lock);
201 +       up(&atm_dev_sem);
202  }
203  
204  
205 To unsubscribe from this list: send the line "unsubscribe
206 linux-kernel" in
207 the body of a message to [8]majordomo@vger.kernel.org
208 More majordomo info at [9]http://vger.kernel.org/majordomo-info.html
209 Please read the FAQ at [10]http://www.tux.org/lkml/
This page took 0.07296 seconds and 3 git commands to generate.