Loading arch/parisc/kernel/ioctl32.c +0 −5 Original line number Diff line number Diff line Loading @@ -561,11 +561,6 @@ IOCTL_TABLE_START #define DECLARES #include "compat_ioctl.c" /* PA-specific ioctls */ COMPATIBLE_IOCTL(PA_PERF_ON) COMPATIBLE_IOCTL(PA_PERF_OFF) COMPATIBLE_IOCTL(PA_PERF_VERSION) /* And these ioctls need translation */ HANDLE_IOCTL(SIOCGPPPSTATS, dev_ifsioc) HANDLE_IOCTL(SIOCGPPPCSTATS, dev_ifsioc) Loading arch/parisc/kernel/perf.c +20 −13 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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]; 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 }; Loading Loading
arch/parisc/kernel/ioctl32.c +0 −5 Original line number Diff line number Diff line Loading @@ -561,11 +561,6 @@ IOCTL_TABLE_START #define DECLARES #include "compat_ioctl.c" /* PA-specific ioctls */ COMPATIBLE_IOCTL(PA_PERF_ON) COMPATIBLE_IOCTL(PA_PERF_OFF) COMPATIBLE_IOCTL(PA_PERF_VERSION) /* And these ioctls need translation */ HANDLE_IOCTL(SIOCGPPPSTATS, dev_ifsioc) HANDLE_IOCTL(SIOCGPPPCSTATS, dev_ifsioc) Loading
arch/parisc/kernel/perf.c +20 −13 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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]; 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 }; Loading