Source-Changes-HG archive

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

[src/trunk]: src/sys/compat/irix Added the IRIX /dev/kmem emulation pseudodev...



details:   https://anonhg.NetBSD.org/src/rev/ca147705ed5a
branches:  trunk
changeset: 523767:ca147705ed5a
user:      manu <manu%NetBSD.org@localhost>
date:      Fri Mar 15 17:21:26 2002 +0000

description:
Added the IRIX /dev/kmem emulation pseudodevice driver

diffstat:

 sys/compat/irix/files.irix  |    3 +-
 sys/compat/irix/irix_kmem.c |  126 ++++++++++++++++++++++++++++++++++++++++++++
 sys/compat/irix/irix_kmem.h |   60 ++++++++++++++++++++
 3 files changed, 188 insertions(+), 1 deletions(-)

diffs (211 lines):

diff -r fad17d2f7534 -r ca147705ed5a sys/compat/irix/files.irix
--- a/sys/compat/irix/files.irix        Fri Mar 15 17:20:14 2002 +0000
+++ b/sys/compat/irix/files.irix        Fri Mar 15 17:21:26 2002 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.irix,v 1.15 2002/03/03 20:12:17 manu Exp $
+#      $NetBSD: files.irix,v 1.16 2002/03/15 17:21:26 manu Exp $
 #
 
 file   arch/mips/mips/irix_syscall.c           compat_irix
@@ -9,6 +9,7 @@
 file   compat/irix/irix_exec_elf32.c           compat_irix & exec_elf32
 file   compat/irix/irix_fcntl.c                compat_irix
 file   compat/irix/irix_ioctl.c                compat_irix
+file   compat/irix/irix_kmem.c                 compat_irix
 file   compat/irix/irix_mount.c                compat_irix
 file   compat/irix/irix_prctl.c                compat_irix
 file   compat/irix/irix_signal.c               compat_irix
diff -r fad17d2f7534 -r ca147705ed5a sys/compat/irix/irix_kmem.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/compat/irix/irix_kmem.c       Fri Mar 15 17:21:26 2002 +0000
@@ -0,0 +1,126 @@
+/*     $NetBSD: irix_kmem.c,v 1.1 2002/03/15 17:21:26 manu Exp $ */
+
+/*-
+ * Copyright (c) 2002 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Emmanuel Dreyfus.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the NetBSD
+ *     Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: irix_kmem.c,v 1.1 2002/03/15 17:21:26 manu Exp $");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/proc.h>
+#include <sys/errno.h>
+#include <sys/ioctl.h>
+#include <sys/device.h>
+#include <sys/vnode.h>
+
+#include <compat/irix/irix_kmem.h>
+#include <compat/irix/irix_sysmp.h>
+
+struct irix_kmem_softc {
+       struct device irix_kmem_dev;
+};
+
+void
+irix_kmemattach(parent, self, aux)
+       struct device *parent;
+       struct device *self;
+       void *aux; 
+{
+       return;
+}
+
+int
+irix_kmemopen(dev, flags, fmt, p)
+       dev_t dev;
+       int flags, fmt;
+       struct proc *p;
+{
+       return 0;
+}
+
+int
+irix_kmemread(dev, uio, flag)
+       dev_t dev;
+       struct uio *uio;
+       int flag;
+{
+       void *buf = NULL;
+       off_t buflen = 0;
+       void *offset;
+       int error = 0;
+
+#ifdef DEBUG_IRIX
+       printf("irix_kmemread(): offset = 0x%08lx\n", (long)uio->uio_offset);
+       printf("irix_kmemread(): addr = %p\n", uio->uio_iov->iov_base);
+       printf("irix_kmemread(): len = 0x%08lx\n", (long)uio->uio_iov->iov_len);
+#endif
+       offset = (void *)(uint32_t)uio->uio_offset; /* XXX */
+       if (offset == &averunnable) { /* load average */
+               struct irix_loadavg iav;
+               int scale = averunnable.fscale / IRIX_LOADAVG_SCALE;
+
+               (void)memset(&iav, 0, sizeof(iav));
+               iav.ldavg[0] = averunnable.ldavg[0] / scale;
+               iav.ldavg[1] = averunnable.ldavg[1] / scale;
+               iav.ldavg[2] = averunnable.ldavg[2] / scale;
+               buf = (void *)&iav;
+               buflen = sizeof(iav);
+       }
+
+       if (buflen != 0)
+               error = uiomove(buf, buflen, uio); 
+       return error;
+}
+
+int
+irix_kmemwrite(dev, uio, flag)
+       dev_t dev;
+       struct uio *uio;
+       int flag;
+{
+       return 0;
+}
+
+int
+irix_kmemclose(dev, flags, fmt, p)
+       dev_t dev;
+       int flags, fmt;
+       struct proc *p;
+{
+       return 0;
+}
+
diff -r fad17d2f7534 -r ca147705ed5a sys/compat/irix/irix_kmem.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/compat/irix/irix_kmem.h       Fri Mar 15 17:21:26 2002 +0000
@@ -0,0 +1,60 @@
+/*     $NetBSD: irix_kmem.h,v 1.1 2002/03/15 17:21:26 manu Exp $ */
+
+/*-
+ * Copyright (c) 2002 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Emmanuel Dreyfus.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the NetBSD
+ *     Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _IRIX_KMEM_H_
+#define _IRIX_KMEM_H_
+
+#include <sys/param.h>
+#include <sys/device.h>
+
+#ifdef _KERNEL
+void    irix_kmemattach __P((struct device *, struct device *, void *));
+int     irix_kmemopen __P((dev_t, int, int, struct proc *));
+int    irix_kmemread __P((dev_t, struct uio *, int));
+int    irix_kmemwrite __P((dev_t, struct uio *, int));
+int     irix_kmemclose __P((dev_t, int, int, struct proc *));
+#endif
+
+/* IRIX well-known kernel structures referenced by sysmp() */
+#define IRIX_LOADAVG_SCALE 1000;
+struct irix_loadavg {
+       uint32_t ldavg[3];
+       uint32_t pad;
+};
+
+#endif /* _IRIX_KMEM_H_ */



Home | Main Index | Thread Index | Old Index