]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/parisc/kernel/perf.c
[PARISC] remove drm compat ioctls handlers
[linux-2.6-omap-h63xx.git] / arch / parisc / kernel / perf.c
index 44670d6e06f4dfb9ab8de1afb16f458524a7e463..f6fec62b6a2feb79365695cea0e01f4faf496ad9 100644 (file)
@@ -196,8 +196,7 @@ static int perf_open(struct inode *inode, struct file *file);
 static ssize_t perf_read(struct file *file, char __user *buf, size_t cnt, loff_t *ppos);
 static ssize_t perf_write(struct file *file, const char __user *buf, size_t count, 
        loff_t *ppos);
-static int perf_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
-       unsigned long arg);
+static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
 static void perf_start_counters(void);
 static int perf_stop_counters(uint32_t *raddr);
 static struct rdr_tbl_ent * perf_rdr_get_entry(uint32_t rdr_num);
@@ -438,48 +437,56 @@ static void perf_patch_images(void)
  * must be running on the processor that you wish to change.
  */
 
-static int perf_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
-       unsigned long arg)
+static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 {
        long error_start;
-       uint32_t raddr[4];      
+       uint32_t raddr[4];
+       int error = 0;
 
+       lock_kernel();
        switch (cmd) {
 
            case PA_PERF_ON:
                        /* Start the counters */
                        perf_start_counters();
-                       return 0;
+                       break;
 
            case PA_PERF_OFF:
                        error_start = perf_stop_counters(raddr);
                        if (error_start != 0) {
                                printk(KERN_ERR "perf_off: perf_stop_counters = %ld\n", error_start);
-                               return -EFAULT; 
+                               error = -EFAULT;
+                               break;
                        }
 
                        /* copy out the Counters */
                        if (copy_to_user((void __user *)arg, raddr, 
                                        sizeof (raddr)) != 0) {
-                               return -EFAULT;
+                               error =  -EFAULT;
+                               break;
                        }
-                       return 0;
+                       break;
 
            case PA_PERF_VERSION:
                        /* Return the version # */
-                       return put_user(PERF_VERSION, (int *)arg);
+                       error = put_user(PERF_VERSION, (int *)arg);
+                       break;
 
            default:
-                       break;
+                       error = -ENOTTY;
        }
-       return -ENOTTY;
+
+       unlock_kernel();
+
+       return error;
 }
 
 static struct file_operations perf_fops = {
        .llseek = no_llseek,
        .read = perf_read,
        .write = perf_write,
-       .ioctl = perf_ioctl,
+       .unlocked_ioctl = perf_ioctl,
+       .compat_ioctl = perf_ioctl,
        .open = perf_open,
        .release = perf_release
 };