fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / telephony / phonedev.c
index 3c987f4..e41f49a 100644 (file)
@@ -28,7 +28,7 @@
 
 #include <linux/kmod.h>
 #include <linux/sem.h>
-#include <linux/devfs_fs_kernel.h>
+#include <linux/mutex.h>
 
 #define PHONE_NUM_DEVICES      256
 
@@ -37,7 +37,7 @@
  */
 
 static struct phone_device *phone_device[PHONE_NUM_DEVICES];
-static DECLARE_MUTEX(phone_lock);
+static DEFINE_MUTEX(phone_lock);
 
 /*
  *    Open a phone device.
@@ -48,19 +48,19 @@ static int phone_open(struct inode *inode, struct file *file)
        unsigned int minor = iminor(inode);
        int err = 0;
        struct phone_device *p;
-       struct file_operations *old_fops, *new_fops = NULL;
+       const struct file_operations *old_fops, *new_fops = NULL;
 
        if (minor >= PHONE_NUM_DEVICES)
                return -ENODEV;
 
-       down(&phone_lock);
+       mutex_lock(&phone_lock);
        p = phone_device[minor];
        if (p)
                new_fops = fops_get(p->f_op);
        if (!new_fops) {
-               up(&phone_lock);
+               mutex_unlock(&phone_lock);
                request_module("char-major-%d-%d", PHONE_MAJOR, minor);
-               down(&phone_lock);
+               mutex_lock(&phone_lock);
                p = phone_device[minor];
                if (p == NULL || (new_fops = fops_get(p->f_op)) == NULL)
                {
@@ -78,7 +78,7 @@ static int phone_open(struct inode *inode, struct file *file)
        }
        fops_put(old_fops);
 end:
-       up(&phone_lock);
+       mutex_unlock(&phone_lock);
        return err;
 }
 
@@ -100,18 +100,16 @@ int phone_register_device(struct phone_device *p, int unit)
                end = unit + 1;  /* enter the loop at least one time */
        }
        
-       down(&phone_lock);
+       mutex_lock(&phone_lock);
        for (i = base; i < end; i++) {
                if (phone_device[i] == NULL) {
                        phone_device[i] = p;
                        p->minor = i;
-                       devfs_mk_cdev(MKDEV(PHONE_MAJOR,i),
-                               S_IFCHR|S_IRUSR|S_IWUSR, "phone/%d", i);
-                       up(&phone_lock);
+                       mutex_unlock(&phone_lock);
                        return 0;
                }
        }
-       up(&phone_lock);
+       mutex_unlock(&phone_lock);
        return -ENFILE;
 }
 
@@ -121,12 +119,11 @@ int phone_register_device(struct phone_device *p, int unit)
 
 void phone_unregister_device(struct phone_device *pfd)
 {
-       down(&phone_lock);
+       mutex_lock(&phone_lock);
        if (phone_device[pfd->minor] != pfd)
                panic("phone: bad unregister");
-       devfs_remove("phone/%d", pfd->minor);
        phone_device[pfd->minor] = NULL;
-       up(&phone_lock);
+       mutex_unlock(&phone_lock);
 }