Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/compat/netbsd32 add (runtime untested) support for AUDIO...



details:   https://anonhg.NetBSD.org/src/rev/5e8ec75d9f8f
branches:  trunk
changeset: 757727:5e8ec75d9f8f
user:      mrg <mrg%NetBSD.org@localhost>
date:      Sun Sep 19 10:33:31 2010 +0000

description:
add (runtime untested) support for AUDIO_WSEEK.

diffstat:

 sys/compat/netbsd32/netbsd32_ioctl.c |  21 ++++++++++++++-
 sys/compat/netbsd32/netbsd32_ioctl.h |  46 +++++++++++++----------------------
 2 files changed, 36 insertions(+), 31 deletions(-)

diffs (202 lines):

diff -r 50b84a6d5965 -r 5e8ec75d9f8f sys/compat/netbsd32/netbsd32_ioctl.c
--- a/sys/compat/netbsd32/netbsd32_ioctl.c      Sun Sep 19 09:46:59 2010 +0000
+++ b/sys/compat/netbsd32/netbsd32_ioctl.c      Sun Sep 19 10:33:31 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: netbsd32_ioctl.c,v 1.49 2010/09/19 09:46:59 mrg Exp $  */
+/*     $NetBSD: netbsd32_ioctl.c,v 1.50 2010/09/19 10:33:31 mrg Exp $  */
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.49 2010/09/19 09:46:59 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.50 2010/09/19 10:33:31 mrg Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -248,6 +248,13 @@
        p->vnd_size = s32p->vnd_size;
 }
 
+static inline void
+netbsd32_to_u_long(netbsd32_u_long *s32p, u_long *p, u_long cmd)
+{
+
+       *p = (u_long)*s32p;
+}
+
 /*
  * handle ioctl conversions from 64-bit kernel -> netbsd32
  */
@@ -386,6 +393,13 @@
        s32p->vnd_size = p->vnd_size;
 }
 
+static inline void
+netbsd32_from_u_long(u_long *p, netbsd32_u_long *s32p, u_long cmd)
+{
+
+       *s32p = (netbsd32_u_long)*p;
+}
+
 
 /*
  * main ioctl syscall.
@@ -515,6 +529,9 @@
                error = (*fp->f_ops->fo_ioctl)(fp, FIOASYNC, (void *)&tmp);
                break;
 
+       case AUDIO_WSEEK32:
+               IOCTL_CONV_TO(AUDIO_WSEEK, u_long);
+
        case DIOCGPART32:
                IOCTL_STRUCT_CONV_TO(DIOCGPART, partinfo);
 #if 0  /* not implemented by anything */
diff -r 50b84a6d5965 -r 5e8ec75d9f8f sys/compat/netbsd32/netbsd32_ioctl.h
--- a/sys/compat/netbsd32/netbsd32_ioctl.h      Sun Sep 19 09:46:59 2010 +0000
+++ b/sys/compat/netbsd32/netbsd32_ioctl.h      Sun Sep 19 10:33:31 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: netbsd32_ioctl.h,v 1.27 2010/09/19 09:46:59 mrg Exp $  */
+/*     $NetBSD: netbsd32_ioctl.h,v 1.28 2010/09/19 10:33:31 mrg Exp $  */
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -49,10 +49,21 @@
                        (struct __CONCAT(netbsd32_, type) *)data32, cmd); \
                break
 
+#define IOCTL_CONV_TO(cmd, type)       \
+               size = IOCPARM_LEN(cmd); \
+               if (size > sizeof(stkbuf)) \
+                       data = memp = kmem_alloc(size, KM_SLEEP); \
+               else \
+                       data = (void *)stkbuf; \
+               __CONCAT(netbsd32_to_, type)((__CONCAT(netbsd32_, type) *) \
+                       data32, (type *)data, cmd); \
+               error = (*fp->f_ops->fo_ioctl)(fp, cmd, data); \
+               __CONCAT(netbsd32_from_, type)((type *)data, \
+                       (__CONCAT(netbsd32_, type) *)data32, cmd); \
+               break
+
 /* from <sys/audioio.h> */
-#if 0
-#define AUDIO_WSEEK    _IOR('A', 25, u_long)
-#endif
+#define AUDIO_WSEEK32  _IOR('A', 25, netbsd32_u_long)
 
 /* from <sys/dkio.h> */
 typedef netbsd32_pointer_t netbsd32_disklabel_tp_t;
@@ -136,15 +147,7 @@
 
 netinet/ip_nat.h:27:#define SIOCGIPST  _IOR('r', 85, struct ips_stat)
 
-sys/lkm.h:286:#define  LMRESERV        _IOWR('K', 0, struct lmc_resrv)
-
-sys/lkm.h:287:#define  LMLOADBUF       _IOW('K', 1, struct lmc_loadbuf)
-
-sys/lkm.h:291:#define  LMLOAD          _IOW('K', 9, struct lmc_load)
-
-sys/lkm.h:292:#define  LMUNLOAD        _IOWR('K', 10, struct lmc_unload)
-
-sys/lkm.h:293:#define  LMSTAT          _IOWR('K', 11, struct lmc_stat)
+sys/module.h?
 
 sys/rnd.h:186:#define RNDGETPOOL      _IOR('R',  103, u_char *)  /* get whole pool */
 
@@ -205,7 +208,6 @@
                } ifru_b;
        } ifr_ifru;
 };
-#if 1
 /* from <dev/pci/if_devar.h> */
 #define        SIOCGADDRROM32          _IOW('i', 240, struct netbsd32_ifreq)   /* get 128 bytes of ROM */
 #define        SIOCGCHIPID32           _IOWR('i', 241, struct netbsd32_ifreq)  /* get chipid */
@@ -277,7 +279,6 @@
 /* from <netatalk/phase2.h> */
 #define SIOCPHASE1_32  _IOW('i', 100, struct netbsd32_ifreq)   /* AppleTalk phase 1 */
 #define SIOCPHASE2_32  _IOW('i', 101, struct netbsd32_ifreq)   /* AppleTalk phase 2 */
-#endif
 
 /* from <net/if.h> */
 struct netbsd32_ifconf {
@@ -289,12 +290,10 @@
 #define        ifc_buf ifc_ifcu.ifcu_buf       /* buffer address */
 #define        ifc_req ifc_ifcu.ifcu_req       /* array of structures returned */
 };
-#if 1
 /* from <sys/sockio.h> */
 #define        OOSIOCGIFCONF32 _IOWR('i', 20, struct netbsd32_ifconf)  /* get ifnet list */
 #define        OSIOCGIFCONF32  _IOWR('i', 36, struct netbsd32_ifconf)  /* get ifnet list */
 #define        SIOCGIFCONF32   _IOWR('i', 38, struct netbsd32_ifconf)  /* get ifnet list */
-#endif
 
 /* from <net/if.h> */
 struct netbsd32_ifmediareq {
@@ -307,10 +306,8 @@
                                                   array */
        netbsd32_intp   ifm_ulist;              /* media words */
 };
-#if 1
 /* from <sys/sockio.h> */
 #define        SIOCGIFMEDIA32  _IOWR('i', 54, struct netbsd32_ifmediareq) /* get net media */
-#endif
 
 /* from <net/if.h> */
 struct  netbsd32_ifdrv {
@@ -319,10 +316,8 @@
        netbsd32_size_t ifd_len;
        netbsd32_voidp  ifd_data;
 };
-#if 1
 /* from <sys/sockio.h> */
 #define SIOCSDRVSPEC32 _IOW('i', 123, struct netbsd32_ifdrv)   /* set driver-specific */
-#endif
 
 /* from <netinet/ip_mroute.h> */
 struct netbsd32_sioc_vif_req {
@@ -332,10 +327,8 @@
        netbsd32_u_long ibytes;         /* input byte count on vif */
        netbsd32_u_long obytes;         /* output byte count on vif */
 };
-#if 1
 /* from <sys/sockio.h> */
 #define        SIOCGETVIFCNT32 _IOWR('u', 51, struct netbsd32_sioc_vif_req)/* vif pkt cnt */
-#endif
 
 struct netbsd32_sioc_sg_req {
        struct  in_addr src;
@@ -344,10 +337,8 @@
        u_long  bytecnt;
        u_long  wrong_if;
 };
-#if 1
 /* from <sys/sockio.h> */
 #define        SIOCGETSGCNT32  _IOWR('u', 52, struct netbsd32_sioc_sg_req) /* sg pkt cnt */
-#endif
 
 /*
  * The next two structures are marked "__packed" as they normally end up
@@ -367,20 +358,17 @@
        ino_t           vnu_ino;        /* ...at this inode */
 } __packed;
 
-#if 1
 /* from <dev/vndvar.h> */
 #define VNDIOCSET32    _IOWR('F', 0, struct netbsd32_vnd_ioctl)        /* enable disk */
 #define VNDIOCCLR32    _IOW('F', 1, struct netbsd32_vnd_ioctl) /* disable disk */
 #define VNDIOCGET32    _IOWR('F', 3, struct netbsd32_vnd_user) /* get list */
 
-/* from <dev/vnd.c> */
 struct netbsd32_vnd_ioctl50 {
        netbsd32_charp  vnd_file;       /* pathname of file to mount */
        int             vnd_flags;      /* flags; see below */
        struct vndgeom  vnd_geom;       /* geometry to emulate */
        unsigned int    vnd_size;       /* (returned) size of disk */
 } __packed;
+/* from <dev/vnd.c> */
 #define VNDIOCSET5032  _IOWR('F', 0, struct netbsd32_vnd_ioctl50)
 #define VNDIOCCLR5032  _IOW('F', 1, struct netbsd32_vnd_ioctl50)
-
-#endif



Home | Main Index | Thread Index | Old Index