summaryrefslogtreecommitdiff
path: root/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_c
blob: ab96e31890ebaff28a0cf4f18edf10621abbbcab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
	- old lock initialisers got renamed
	- init_MUTEX_LOCKED got dropped, use the real sema_init instead
	- force sysfs-object creation
--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/core.c	2009-06-09 10:08:45.000000000 +0200
+++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/core.c	2011-07-20 16:42:18.342001559 +0200
@@ -23,10 +23,10 @@ static char		*mISDN_core_version = MISDN
 static void (*dt_new_frame) (mISDNstack_t *stack, enum mISDN_dt_type type, struct sk_buff *skb, int duplicate_skb) = NULL;
 
 LIST_HEAD(mISDN_objectlist);
-static rwlock_t		mISDN_objects_lock = RW_LOCK_UNLOCKED;
+static rwlock_t		mISDN_objects_lock =  __RW_LOCK_UNLOCKED(old_style_rw_init);
 
 LIST_HEAD(mISDN_modulelist);
-static rwlock_t		mISDN_modules_lock = RW_LOCK_UNLOCKED;
+static rwlock_t		mISDN_modules_lock =  __RW_LOCK_UNLOCKED(old_style_rw_init);
 struct modulelist {
 	struct list_head list;
 	struct module *module;
@@ -35,7 +35,7 @@ struct modulelist {
 int core_debug;
 
 static u_char		entityarray[MISDN_MAX_ENTITY/8];
-static spinlock_t	entity_lock = SPIN_LOCK_UNLOCKED;
+static spinlock_t	entity_lock = __SPIN_LOCK_UNLOCKED(old_style_spin_init);
 
 static uint debug;
 static int obj_id;
@@ -724,7 +724,7 @@ int mISDN_register(mISDNobject_t *obj) {
 			obj->id);
 	if (core_debug & DEBUG_CORE_FUNC)
 		printk(KERN_DEBUG "mISDN_register: obj(%p)\n", obj);
-#ifndef SYSFS_SUPPORT_2_6_24
+//#ifndef SYSFS_SUPPORT_2_6_24
 	retval = mISDN_register_sysfs_obj(obj);
 	if (retval) {
 		printk(KERN_ERR "mISDN_register class_device_register return(%d)\n", retval);
@@ -732,7 +732,7 @@ int mISDN_register(mISDNobject_t *obj) {
 		list_del(&obj->list);
 		write_unlock_irqrestore(&mISDN_objects_lock, flags);
 	}
-#endif
+//#endif
 	return(retval);
 }
 
@@ -758,9 +758,10 @@ int mISDN_unregister(mISDNobject_t *obj)
 	if (core_debug & DEBUG_CORE_FUNC)
 		printk(KERN_DEBUG "mISDN_unregister: mISDN_objectlist(%p<-%p->%p)\n",
 			mISDN_objectlist.prev, &mISDN_objectlist, mISDN_objectlist.next);
+	mISDN_unregister_sysfs_obj(obj);
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
 #ifdef SYSFS_SUPPORT
-        device_unregister(&obj->class_dev);
+        //device_unregister(&obj->class_dev);
 #endif
 #else
         class_device_unregister(&obj->class_dev);
@@ -774,7 +775,7 @@ mISDNInit(void)
 	struct semaphore sem;
 	int err;
 
-	init_MUTEX_LOCKED(&sem);
+	sema_init(&sem, 0);
 
 	printk(KERN_INFO "Modular ISDN Stack core version (%s) revision (%s)\n", mISDN_core_version, mISDN_core_revision);
 	core_debug = debug;
@@ -817,7 +818,7 @@ sysfs_fail:
 void mISDN_cleanup(void) {
 	struct semaphore sem;
 
-	init_MUTEX_LOCKED(&sem);
+	sema_init(&sem, 0);
 
 	free_mISDNdev();
 	if (!list_empty(&mISDN_objectlist)) {