diff options
author | dfr <dfr@FreeBSD.org> | 1999-01-09 14:26:22 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 1999-01-09 14:26:22 +0000 |
commit | 1c2ce69de1c6327a976692e04b95597ef93d83e6 (patch) | |
tree | 7d2491e8f20422a68b3cb8a887126883fcb9400e /share | |
parent | 9b7a6adfd10bb04f58f98f460efa31238e07f912 (diff) | |
download | FreeBSD-src-1c2ce69de1c6327a976692e04b95597ef93d83e6.zip FreeBSD-src-1c2ce69de1c6327a976692e04b95597ef93d83e6.tar.gz |
Replace the misc example with a simpler syscall example using the new
module registration hooks for syscalls.
Submitted by: Assar Westerlund <assar@sics.se>
Diffstat (limited to 'share')
-rw-r--r-- | share/examples/kld/Makefile | 2 | ||||
-rw-r--r-- | share/examples/kld/misc/Makefile | 75 | ||||
-rw-r--r-- | share/examples/kld/misc/README | 116 | ||||
-rw-r--r-- | share/examples/kld/misc/module/Makefile | 87 | ||||
-rw-r--r-- | share/examples/kld/misc/module/misccall.c | 100 | ||||
-rw-r--r-- | share/examples/kld/misc/module/misccall.h | 71 | ||||
-rw-r--r-- | share/examples/kld/misc/module/miscmod.c | 197 | ||||
-rw-r--r-- | share/examples/kld/misc/test/Makefile | 96 | ||||
-rw-r--r-- | share/examples/kld/misc/test/testmisc.c | 89 | ||||
-rw-r--r-- | share/examples/kld/syscall/Makefile | 9 | ||||
-rw-r--r-- | share/examples/kld/syscall/module/Makefile | 17 | ||||
-rw-r--r-- | share/examples/kld/syscall/module/syscall.c | 86 | ||||
-rw-r--r-- | share/examples/kld/syscall/test/Makefile | 6 | ||||
-rw-r--r-- | share/examples/kld/syscall/test/call.c | 53 |
14 files changed, 172 insertions, 832 deletions
diff --git a/share/examples/kld/Makefile b/share/examples/kld/Makefile index 0642d3d..68504bd 100644 --- a/share/examples/kld/Makefile +++ b/share/examples/kld/Makefile @@ -65,6 +65,6 @@ # SUCH DAMAGE. # -SUBDIR= cdev misc +SUBDIR= cdev syscall .include <bsd.subdir.mk> diff --git a/share/examples/kld/misc/Makefile b/share/examples/kld/misc/Makefile deleted file mode 100644 index 2f8353d..0000000 --- a/share/examples/kld/misc/Makefile +++ /dev/null @@ -1,75 +0,0 @@ -# 08 Nov 1998 -# -# Makefile for sample loadable system call -# -# May 93 Rajesh Vaidheeswarran - adapted from the lkm Makefile -# -# Copyright (c) 1998 Rajesh Vaidheeswarran -# 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 Rajesh Vaidheeswarran -# 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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. -# -# -# Copyright (c) 1993 Terrence R. Lambert. -# 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 Terrence R. Lambert. -# 4. The name Terrence R. Lambert may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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. -# - -SUBDIR= module test - -load: _SUBDIRUSE - -unload: _SUBDIRUSE - -.include <bsd.subdir.mk> diff --git a/share/examples/kld/misc/README b/share/examples/kld/misc/README deleted file mode 100644 index 92c0c0e..0000000 --- a/share/examples/kld/misc/README +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 1998 Rajesh Vaidheeswarran. -# 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 Rajesh Vaidheeswarran. -# 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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. -# -# Copyright (c) 1993 Terrence R. Lambert. -# 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 Terrence R. Lambert. -# 4. The name Terrence R. Lambert may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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. -# - -1.0 Overview - - This is the README file for the sample kld module - that mimics the loaded system call. - - A kld module may be used to load any data or - program into the kernel that can be made available by - modifying a table, pointer, or other kernel data to inform - the kernel that the module should be used instead of the - previous code/data path. - - Generally, it is assumed that a loadable module is one of - a set of similar modules (such as a file system or console - terminal emulation), and that the reference is through a - table (such as vfssw[]), and that a "special" value is - assigned to the slots which are allowed to be replaced. - This is not enforced, so you may use the kld module - any way you see fit. - - As with the loadable system calls, it may be desirable to - allow the module loader to replace an *existing* entry to - try out changes to kernel code without rebuilding and - booting from the new kernel. - - -2.0 Directions - - To test the module, do the following: - - cd module - make load - - A load message (the copyright) will be printed on the console. - - cd ../test - make load - - The system call prints a message on the console when called. - This message will be printed when running "make load" in - the "test" subdirectory. - - -3.0 Recovering resources - - The miscellaneous module consumes a few pages of memory when - loaded; it can be freed up by unloading it. To unload it, - type the following from the directory this file is in: - - cd module - make unload - - The miscellaneous module will be unloaded by name. - - -4.0 END OF DOCUMENT diff --git a/share/examples/kld/misc/module/Makefile b/share/examples/kld/misc/module/Makefile deleted file mode 100644 index 30eeb84..0000000 --- a/share/examples/kld/misc/module/Makefile +++ /dev/null @@ -1,87 +0,0 @@ -# 08 Nov 1998 -# -# Makefile for miscmod -# -# 08 Nov 1998 Rajesh Vaidheeswarran - adapted from the lkm module Makefile -# -# Copyright (c) 1998 Rajesh Vaidheeswarran -# 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 Rajesh Vaidheeswarran. -# 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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. -# -# -# Copyright (c) 1993 Terrence R. Lambert. -# 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 Terrence R. Lambert. -# 4. The name Terrence R. Lambert may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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. -# -# $Id: Makefile,v 1.5 1998/11/08 22:31:00 rv Exp $ -# -BINDIR = /tmp -SRCS = misccall.c miscmod.c -KMOD = misc_mod -NOMAN = t -KLDMOD = t - -KLDLOAD = /sbin/kldload -KLDUNLOAD = /sbin/kldunload - -CLEANFILES+= ${KMOD} - -load: - ${KLDLOAD} -v ./${KMOD} - -unload: - ${KLDUNLOAD} -v -n ${KMOD} - -.include <bsd.kmod.mk> diff --git a/share/examples/kld/misc/module/misccall.c b/share/examples/kld/misc/module/misccall.c deleted file mode 100644 index 891f110..0000000 --- a/share/examples/kld/misc/module/misccall.c +++ /dev/null @@ -1,100 +0,0 @@ -/* 08 Nov 1998*/ -/* - * misccall.c - * - * 08 Nov 1998 Rajesh Vaidheeswarran adapted from the lkm misc module. - * - * Copyright (c) 1998 Rajesh Vaidheeswarran - * 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 Rajesh Vaidheeswarran. - * 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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. - * - * - * Copyright (c) 1993 Terrence R. Lambert. - * 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 Terrence R. Lambert. - * 4. The name Terrence R. Lambert may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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 "misccall.h" - -/* - * This is the actual code for the system call... it can't be static because - * it is exported to another part of the module... the only place it needs - * to be referenced is the sysent we are interested in. - * - * To write your own system call using this as a template, you could strip - * out this code and use the rest as a prototype module, changing only the - * function names and the number of arguments to the call in the module - * specific "sysent". - * - * You would have to use the "-R" option of "ld" to ensure a linkable file - * if you were to do this, since you would need to combine multiple ".o" - * files into a single ".o" file for use by "modload". - */ -int -misccall(p, uap) -struct proc * p; -void * uap; -{ - /* - * Our new system call simply prints a message; it takes no - * arguments. - */ - - printf("\nI am a loaded system call.\n"); - printf("I was loaded using the kld interface.\n"); - printf("I don't do anything except call the kernel's printf().\n"); - printf("I will print this message each time I am called!\n"); - - return(0); /* success (or error code from errno.h)*/ -} diff --git a/share/examples/kld/misc/module/misccall.h b/share/examples/kld/misc/module/misccall.h deleted file mode 100644 index ce36e53..0000000 --- a/share/examples/kld/misc/module/misccall.h +++ /dev/null @@ -1,71 +0,0 @@ -/* 08 Nov 1998*/ -/* - * misccall.h - * - * 08 Nov 1998 Rajesh Vaidheeswarran - * - * Copyright (c) 1998 Rajesh Vaidheeswarran - * 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 Rajesh Vaidheeswarran. - * 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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. - * - * - * Copyright (c) 1993 Terrence R. Lambert. - * 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 Terrence R. Lambert. - * 4. The name Terrence R. Lambert may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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/param.h> -#include <sys/systm.h> - -extern int misccall __P((struct proc *p, void *uap)); diff --git a/share/examples/kld/misc/module/miscmod.c b/share/examples/kld/misc/module/miscmod.c deleted file mode 100644 index 07be90f..0000000 --- a/share/examples/kld/misc/module/miscmod.c +++ /dev/null @@ -1,197 +0,0 @@ -/* 08 Nov 1998*/ -/* - * miscmod.c - * - * 08 Nov 1998 Rajesh Vaidheeswarran - adapted from the lkm miscmod.c - * - * Copyright (c) 1998 Rajesh Vaidheeswarran - * 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 Rajesh Vaidheeswarran. - * 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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. - * - * - * Copyright (c) 1993 Terrence R. Lambert. - * 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 Terrence R. Lambert. - * 4. The name Terrence R. Lambert may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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/param.h> -#include <sys/systm.h> -#include <sys/sysproto.h> -#include <sys/exec.h> -#include <sys/sysent.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/conf.h> - -#include "misccall.h" - -/* - * These two entries define our system call and module information. We - * have 0 arguments to our system call. - */ -static struct sysent newent = { - 0, misccall /* # of args, function pointer*/ -}; - -/* - * Miscellaneous modules must have their own save areas... - */ -static struct sysent oldent; /* save area for old callslot entry*/ - -/* - * Number of syscall entries for a.out executables - */ -#define nsysent (aout_sysvec.sv_size) - -/* - * If you have a data structure to pass ... - */ - -typedef struct misc_data { - char name[20]; - struct sysent * nent; - struct sysent * oent; - int offset; -} misc_data_t; - -static misc_data_t misc_arg = { - "misccall", - &newent, - &oldent, - -1 -}; - -static int misc_load(module_t, modeventtype_t, void *); - -static moduledata_t misc_mod = { - "misc_mod", - misc_load, - (void *)&misc_arg /* This is our real data */ -}; - -/* - * This function is called each time the module is loaded or unloaded. - * - * For the system call table, we duplicate the code in the kern_lkm.c - * file for patching into the system call table. We can tell what - * has been allocated, etc. by virtue of the fact that we know the - * criteria used by the system call loader interface. We still - * kick out the copyright to the console here (to give an example). - */ -static int -misc_load(mod, cmd, arg) - module_t mod; - modeventtype_t cmd; - void * arg; -{ - int i, err = 0; - - misc_data_t * args = (misc_data_t *)arg; - - switch (cmd) { - case MOD_LOAD: - - /* - * Search the table looking for a slot... - */ - for(i = 1; i < nsysent; i++) - if(sysent[i].sy_call == (sy_call_t *)nosys) - break; /* found it!*/ - /* out of allocable slots?*/ - if(i == nsysent) { - err = ENFILE; - break; - } - - /* save old -- we must provide our own data area*/ - bcopy(&sysent[i], args->oent, sizeof(struct sysent)); - - /* replace with new*/ - bcopy(args->nent, &sysent[i], sizeof(struct sysent)); - - /* done!*/ - args->offset = i; /* slot in sysent[]*/ - - - /* if we make it to here, print copyright on console*/ - printf("\nSample Loaded kld module (system call)\n"); - printf("Copyright (c) 1998\n"); - printf("Rajesh Vaidheeswarran\n"); - printf("All rights reserved\n"); - printf("System call %s loaded into slot %d\n", args->name, - args->offset); - break; /* Success*/ - - case MOD_UNLOAD: - /* current slot...*/ - i = args->offset; - - /* replace current slot contents with old contents*/ - bcopy(args->oent, &sysent[ i], sizeof( struct sysent)); - - printf("Unloaded kld module (system call)\n"); - - break; /* Success*/ - - default: /* we only understand load/unload*/ - err = EINVAL; - break; - } - - return(err); -} - -/* Now declare the module to the system */ - -DECLARE_MODULE(misc, misc_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE); diff --git a/share/examples/kld/misc/test/Makefile b/share/examples/kld/misc/test/Makefile deleted file mode 100644 index 36cc9be..0000000 --- a/share/examples/kld/misc/test/Makefile +++ /dev/null @@ -1,96 +0,0 @@ -# 08 Nov 1998 -# -# Makefile for testmisc -# -# 08 Nov 1998 Rajesh Vaidheeswarran - adapted from lkm Makefile -# -# Copyright (c) 1998 Rajesh Vaidheeswarran -# 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 Rajesh Vaidheeswarran. -# 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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. -# -# -# Copyright (c) 1993 Terrence R. Lambert. -# 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 Terrence R. Lambert. -# 4. The name Terrence R. Lambert may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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. -# -# $Id: Makefile,v 1.5 1997/02/22 13:55:56 peter Exp $ -# -PROG= testmisc -NOMAN= - -MODSTAT= /sbin/kldstat - -load: - @echo "This test program will call the sample system call;" - @echo "the "offset requested will be shown as 'Off' in the" - @echo "status display below. If no modules are loaded, an" - @echo "error '3' will be reported." - @echo - @echo "The sample system call will display a message on the" - @echo "system console each time it is run." - @echo - @echo - ${MODSTAT} -n misc_mod - @echo - @./testmisc - -unload: - @echo "This test program will cause an error '3' if the call" - @echo "has been successfully unloaded by building 'unload' in" - @echo "the 'module' subdirectory." - @echo - ${MODSTAT} -n misc_mod - -.include <bsd.prog.mk> diff --git a/share/examples/kld/misc/test/testmisc.c b/share/examples/kld/misc/test/testmisc.c deleted file mode 100644 index 53e43fa..0000000 --- a/share/examples/kld/misc/test/testmisc.c +++ /dev/null @@ -1,89 +0,0 @@ -/* 08 Nov 1998 */ -/* - * testmisc.c - * - * Test program to call the sample loaded kld system call. - * - * 08 Nov 1998 Rajesh Vaidheeswarran - adapted from lkm example testmisc.c - * - * Copyright (c) 1998 Rajesh Vaidheeswarran - * 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 Rajesh Vaidheeswarran. - * 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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. - * - * Copyright (c) 1993 Terrence R. Lambert. - * 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 Terrence R. Lambert. - * 4. The name Terrence R. Lambert may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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 <stdio.h> - -main() -{ - char buf[ 80]; - int err = 0; - - printf("Enter the system call that you created [misccall]:"); - fflush(stdout); - if((fgets(buf, sizeof buf, stdin) == NULL) || - buf[0] == '\n') { - sprintf(buf,"misccall"); - printf("Calling %s ...\n", buf); - } - - if((err = syscall(atoi(buf) /* no arguments*/))) - perror("syscall"); - - exit(err); -} diff --git a/share/examples/kld/syscall/Makefile b/share/examples/kld/syscall/Makefile new file mode 100644 index 0000000..7ea17df --- /dev/null +++ b/share/examples/kld/syscall/Makefile @@ -0,0 +1,9 @@ +# Makefile for sample syscall module + +SUBDIR= module test + +load: _SUBDIRUSE + +unload: _SUBDIRUSE + +.include <bsd.subdir.mk> diff --git a/share/examples/kld/syscall/module/Makefile b/share/examples/kld/syscall/module/Makefile new file mode 100644 index 0000000..44406f4 --- /dev/null +++ b/share/examples/kld/syscall/module/Makefile @@ -0,0 +1,17 @@ +# Makefile for building the sample syscall module + +SRCS = syscall.c +KMOD = syscall +KO = ${KMOD}.ko +KLDMOD = t + +KLDLOAD = /sbin/kldload +KLDUNLOAD = /sbin/kldunload + +load: ${KO} + ${KLDLOAD} -v ./${KO} + +unload: ${KO} + ${KLDUNLOAD} -v -n ${KO} + +.include <bsd.kmod.mk> diff --git a/share/examples/kld/syscall/module/syscall.c b/share/examples/kld/syscall/module/syscall.c new file mode 100644 index 0000000..1bfb482 --- /dev/null +++ b/share/examples/kld/syscall/module/syscall.c @@ -0,0 +1,86 @@ +/*- + * Copyright (c) 1999 Assar Westerlund + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. + * + * $Id$ + */ + +#include <sys/types.h> +#include <sys/param.h> +#include <sys/proc.h> +#include <sys/module.h> +#include <sys/sysent.h> +#include <sys/kernel.h> +#include <sys/systm.h> + +/* + * The function for implementing the syscall. + */ + +static int +hello (struct proc *p, void *arg) +{ + printf ("hello kernel\n"); + return 0; +} + +/* + * The `sysent' for the new syscall + */ + +static struct sysent hello_sysent = { + 0, /* sy_narg */ + hello /* sy_call */ +}; + +/* + * The offset in sysent where the syscall is allocated. + */ + +static int offset = NO_SYSCALL; + +/* + * The function called at load/unload. + */ + +static int +load (struct module *module, int cmd, void *arg) +{ + int error = 0; + + switch (cmd) { + case MOD_LOAD : + printf ("syscall loaded at %d\n", offset); + break; + case MOD_UNLOAD : + printf ("syscall unloaded from %d\n", offset); + break; + default : + error = EINVAL; + break; + } + return error; +} + +SYSCALL_MODULE(syscall, &offset, &hello_sysent, load, NULL); diff --git a/share/examples/kld/syscall/test/Makefile b/share/examples/kld/syscall/test/Makefile new file mode 100644 index 0000000..5968689 --- /dev/null +++ b/share/examples/kld/syscall/test/Makefile @@ -0,0 +1,6 @@ +# Makefile for simple caller of syscall + +PROG = call +NOMAN = noman + +.include <bsd.prog.mk> diff --git a/share/examples/kld/syscall/test/call.c b/share/examples/kld/syscall/test/call.c new file mode 100644 index 0000000..da834ea --- /dev/null +++ b/share/examples/kld/syscall/test/call.c @@ -0,0 +1,53 @@ +/*- + * Copyright (c) 1999 Assar Westerlund + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. + * + * $Id$ + */ + +#include <stdio.h> +#include <sys/syscall.h> + +static void usage (void); + +static void +usage (void) +{ + fprintf (stderr, "call syscall-number\n"); + exit (1); +} + +int +main(int argc, char **argv) +{ + char *endptr; + int syscall_num; + + if (argc != 2) + usage (); + syscall_num = strtol (argv[1], &endptr, 0); + if (syscall_num == 0 && argv[1] == endptr) + errx (1, "Bad number `%s'", argv[1]); + return syscall (syscall_num); +} |