]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - sound/core/timer_compat.c
Merge branch 'linus' into perf/urgent, to synchronize with upstream
[linux.git] / sound / core / timer_compat.c
index bb6be484dfd3c51e1f5501262a4b5ed2acb15a8c..0103d16f6f9f9e6370663cea87770892ac749f1d 100644 (file)
@@ -69,54 +69,11 @@ static int snd_timer_user_info_compat(struct file *file,
        return 0;
 }
 
-struct snd_timer_status32 {
-       struct compat_timespec tstamp;
-       u32 resolution;
-       u32 lost;
-       u32 overrun;
-       u32 queue;
-       unsigned char reserved[64];
-};
-
-static int snd_timer_user_status_compat(struct file *file,
-                                       struct snd_timer_status32 __user *_status)
-{
-       struct snd_timer_user *tu;
-       struct snd_timer_status32 status;
-       
-       tu = file->private_data;
-       if (!tu->timeri)
-               return -EBADFD;
-       memset(&status, 0, sizeof(status));
-       status.tstamp.tv_sec = tu->tstamp.tv_sec;
-       status.tstamp.tv_nsec = tu->tstamp.tv_nsec;
-       status.resolution = snd_timer_resolution(tu->timeri);
-       status.lost = tu->timeri->lost;
-       status.overrun = tu->overrun;
-       spin_lock_irq(&tu->qlock);
-       status.queue = tu->qused;
-       spin_unlock_irq(&tu->qlock);
-       if (copy_to_user(_status, &status, sizeof(status)))
-               return -EFAULT;
-       return 0;
-}
-
-#ifdef CONFIG_X86_X32
-/* X32 ABI has the same struct as x86-64 */
-#define snd_timer_user_status_x32(file, s) \
-       snd_timer_user_status(file, s)
-#endif /* CONFIG_X86_X32 */
-
-/*
- */
-
 enum {
        SNDRV_TIMER_IOCTL_GPARAMS32 = _IOW('T', 0x04, struct snd_timer_gparams32),
        SNDRV_TIMER_IOCTL_INFO32 = _IOR('T', 0x11, struct snd_timer_info32),
-       SNDRV_TIMER_IOCTL_STATUS32 = _IOW('T', 0x14, struct snd_timer_status32),
-#ifdef CONFIG_X86_X32
-       SNDRV_TIMER_IOCTL_STATUS_X32 = _IOW('T', 0x14, struct snd_timer_status),
-#endif /* CONFIG_X86_X32 */
+       SNDRV_TIMER_IOCTL_STATUS_COMPAT32 = _IOW('T', 0x14, struct snd_timer_status32),
+       SNDRV_TIMER_IOCTL_STATUS_COMPAT64 = _IOW('T', 0x14, struct snd_timer_status64),
 };
 
 static long __snd_timer_user_ioctl_compat(struct file *file, unsigned int cmd,
@@ -126,7 +83,8 @@ static long __snd_timer_user_ioctl_compat(struct file *file, unsigned int cmd,
 
        switch (cmd) {
        case SNDRV_TIMER_IOCTL_PVERSION:
-       case SNDRV_TIMER_IOCTL_TREAD:
+       case SNDRV_TIMER_IOCTL_TREAD_OLD:
+       case SNDRV_TIMER_IOCTL_TREAD64:
        case SNDRV_TIMER_IOCTL_GINFO:
        case SNDRV_TIMER_IOCTL_GSTATUS:
        case SNDRV_TIMER_IOCTL_SELECT:
@@ -140,17 +98,15 @@ static long __snd_timer_user_ioctl_compat(struct file *file, unsigned int cmd,
        case SNDRV_TIMER_IOCTL_PAUSE:
        case SNDRV_TIMER_IOCTL_PAUSE_OLD:
        case SNDRV_TIMER_IOCTL_NEXT_DEVICE:
-               return __snd_timer_user_ioctl(file, cmd, (unsigned long)argp);
+               return __snd_timer_user_ioctl(file, cmd, (unsigned long)argp, true);
        case SNDRV_TIMER_IOCTL_GPARAMS32:
                return snd_timer_user_gparams_compat(file, argp);
        case SNDRV_TIMER_IOCTL_INFO32:
                return snd_timer_user_info_compat(file, argp);
-       case SNDRV_TIMER_IOCTL_STATUS32:
-               return snd_timer_user_status_compat(file, argp);
-#ifdef CONFIG_X86_X32
-       case SNDRV_TIMER_IOCTL_STATUS_X32:
-               return snd_timer_user_status_x32(file, argp);
-#endif /* CONFIG_X86_X32 */
+       case SNDRV_TIMER_IOCTL_STATUS_COMPAT32:
+               return snd_timer_user_status32(file, argp);
+       case SNDRV_TIMER_IOCTL_STATUS_COMPAT64:
+               return snd_timer_user_status64(file, argp);
        }
        return -ENOIOCTLCMD;
 }