From 8ca3cf6c41b820ec31445130dec79dc5ed2bdfc4 Mon Sep 17 00:00:00 2001 From: mycroft Date: Sun, 15 Oct 1995 02:25:07 +0000 Subject: [PATCH] Add new sysarch calls, and fix #includes. --- lib/libarch/i386/Makefile.inc | 9 ++-- lib/libarch/i386/i386_get_ioperm.2 | 80 ++++++++++++++++++++++++++++++ lib/libarch/i386/i386_get_ioperm.c | 46 +++++++++++++++++ lib/libarch/i386/i386_get_ldt.c | 2 + lib/libarch/i386/i386_iopl.2 | 66 ++++++++++++++++++++++++ lib/libarch/i386/i386_iopl.c | 46 +++++++++++++++++ lib/libarch/i386/i386_set_ioperm.c | 46 +++++++++++++++++ lib/libarch/i386/i386_set_ldt.c | 2 + 8 files changed, 294 insertions(+), 3 deletions(-) create mode 100644 lib/libarch/i386/i386_get_ioperm.2 create mode 100644 lib/libarch/i386/i386_get_ioperm.c create mode 100644 lib/libarch/i386/i386_iopl.2 create mode 100644 lib/libarch/i386/i386_iopl.c create mode 100644 lib/libarch/i386/i386_set_ioperm.c diff --git a/lib/libarch/i386/Makefile.inc b/lib/libarch/i386/Makefile.inc index b0a354cbf31b..9c967b8fbe13 100644 --- a/lib/libarch/i386/Makefile.inc +++ b/lib/libarch/i386/Makefile.inc @@ -2,8 +2,11 @@ .PATH: ${LIBC}/i386 -SRCS+= i386_get_ldt.c i386_set_ldt.c +SRCS+= i386_get_ldt.c i386_set_ldt.c \ + i386_iopl.c i386_get_ioperm.c i386_set_ioperm.c -MAN+= i386_get_ldt.2 +MAN+= i386_get_ldt.2 \ + i386_iopl.2 i386_get_ioperm.2 -MLINKS+=i386_get_ldt.2 i386_set_ldt.2 +MLINKS+=i386_get_ldt.2 i386_set_ldt.2 \ + i386_get_ioperm.2 i386_set_ioperm.2 diff --git a/lib/libarch/i386/i386_get_ioperm.2 b/lib/libarch/i386/i386_get_ioperm.2 new file mode 100644 index 000000000000..6c6da8f12ec2 --- /dev/null +++ b/lib/libarch/i386/i386_get_ioperm.2 @@ -0,0 +1,80 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" 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 University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. +.\" +.\" from: @(#)fork.2 6.5 (Berkeley) 3/10/91 +.\" $Id: i386_get_ioperm.2,v 1.1 1995/10/15 02:29:09 mycroft Exp $ +.\" +.Dd October 14, 1995 +.Dt I386_GET_IOPERM 2 +.Os NetBSD +.Sh NAME +.Nm i386_get_ioperm , +.Nm i386_set_ioperm +.Nd manage i386 per-process I/O permission bitmap +.Sh SYNOPSIS +.Fd #include +.Ft int +.Fn i386_get_ioperm "u_long *iomap" +.Ft int +.Fn i386_set_ioperm "u_long *iomap" +.Sh DESCRIPTION +.Fn i386_get_ioperm +copies the current I/O permission bitmap into the memory referenced by +.Ar iomap . +.Pp +.Fn i386_set_ioperm +sets the I/O permission bitmap from the data pointed to by +.Ar iomap . +This call is restricted to the super-user. +.Sh RETURN VALUES +Upon successful completion, +.Fn i386_get_ioperm +and +.Fn i386_set_ioperm +return 0. +Otherwise, a value of -1 is returned and the global +variable +.Va errno +is set to indicate the error. +.Sh ERRORS +.Fn i386_get_ioperm +and +.Fn i386_set_ioperm +will fail if: +.Bl -tag -width [EINVAL] +.It Bq Er EFAULT +.Ar Iomap +points outside the process's allocated address space. +.It Bq Er EPERM +The caller was not the super-user. +.El +.Sh REFERENCES +i386 Microprocessor Programmer's Reference Manual, Intel diff --git a/lib/libarch/i386/i386_get_ioperm.c b/lib/libarch/i386/i386_get_ioperm.c new file mode 100644 index 000000000000..b794b06dcbd2 --- /dev/null +++ b/lib/libarch/i386/i386_get_ioperm.c @@ -0,0 +1,46 @@ +/* $NetBSD: i386_get_ioperm.c,v 1.1 1995/10/15 02:29:10 mycroft Exp $ */ + +/* + * Copyright (c) 1995 Charles M. Hannum. All rights reserved. + * + * 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 Charles M. Hannum. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 +#include + +#include + +int +i386_get_ioperm(iomap) + u_long *iomap; +{ + struct i386_get_ioperm_args p; + + p.iomap = iomap; + + return sysarch(I386_GET_IOPERM, (char *)&p); +} diff --git a/lib/libarch/i386/i386_get_ldt.c b/lib/libarch/i386/i386_get_ldt.c index 45f0a4fff4e5..a6fccc1eb14c 100644 --- a/lib/libarch/i386/i386_get_ldt.c +++ b/lib/libarch/i386/i386_get_ldt.c @@ -28,6 +28,8 @@ */ #include +#include + #include #include diff --git a/lib/libarch/i386/i386_iopl.2 b/lib/libarch/i386/i386_iopl.2 new file mode 100644 index 000000000000..45cfce0107b1 --- /dev/null +++ b/lib/libarch/i386/i386_iopl.2 @@ -0,0 +1,66 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" 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 University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. +.\" +.\" from: @(#)fork.2 6.5 (Berkeley) 3/10/91 +.\" $Id: i386_iopl.2,v 1.1 1995/10/15 02:29:11 mycroft Exp $ +.\" +.Dd October 14, 1995 +.Dt I386_IOPL 2 +.Os NetBSD +.Sh NAME +.Nm i386_iopl +.Nd change the i386 I/O privilege level +.Sh SYNOPSIS +.Fd #include +.Ft int +.Fn i386_iopl "int iopl" +.Sh DESCRIPTION +.Fn i386_iopl +sets the i386 I/O privilege level to the value specified by +.Ar iomap . +This call is restricted to the super-user. +.Sh RETURN VALUES +Upon successful completion, +.Fn i386_iopl +returns 0. +Otherwise, a value of -1 is returned and the global +variable +.Va errno +is set to indicate the error. +.Sh ERRORS +.Fn i386_iopl +will fail if: +.Bl -tag -width [EINVAL] +.It Bq Er EPERM +The caller was not the super-user. +.El +.Sh REFERENCES +i386 Microprocessor Programmer's Reference Manual, Intel diff --git a/lib/libarch/i386/i386_iopl.c b/lib/libarch/i386/i386_iopl.c new file mode 100644 index 000000000000..22be4a9a328c --- /dev/null +++ b/lib/libarch/i386/i386_iopl.c @@ -0,0 +1,46 @@ +/* $NetBSD: i386_iopl.c,v 1.1 1995/10/15 02:29:12 mycroft Exp $ */ + +/* + * Copyright (c) 1995 Charles M. Hannum. All rights reserved. + * + * 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 Charles M. Hannum. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 +#include + +#include + +int +i386_iopl(iopl) + int iopl; +{ + struct i386_iopl_args p; + + p.iopl = iopl; + + return sysarch(I386_IOPL, (char *)&p); +} diff --git a/lib/libarch/i386/i386_set_ioperm.c b/lib/libarch/i386/i386_set_ioperm.c new file mode 100644 index 000000000000..d1976f4a078e --- /dev/null +++ b/lib/libarch/i386/i386_set_ioperm.c @@ -0,0 +1,46 @@ +/* $NetBSD: i386_set_ioperm.c,v 1.1 1995/10/15 02:29:13 mycroft Exp $ */ + +/* + * Copyright (c) 1995 Charles M. Hannum. All rights reserved. + * + * 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 Charles M. Hannum. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 +#include + +#include + +int +i386_set_ioperm(iomap) + u_long *iomap; +{ + struct i386_set_ioperm_args p; + + p.iomap = iomap; + + return sysarch(I386_SET_IOPERM, (char *)&p); +} diff --git a/lib/libarch/i386/i386_set_ldt.c b/lib/libarch/i386/i386_set_ldt.c index 26a56e674a90..25bc1f328d34 100644 --- a/lib/libarch/i386/i386_set_ldt.c +++ b/lib/libarch/i386/i386_set_ldt.c @@ -28,6 +28,8 @@ */ #include +#include + #include #include