diff options
| author | ad <ad@NetBSD.org> | 2008-11-12 12:35:50 +0000 |
|---|---|---|
| committer | ad <ad@NetBSD.org> | 2008-11-12 12:35:50 +0000 |
| commit | 0efea177e37295fed654875d875160c47500d6bd (patch) | |
| tree | 9d0589344a5d07b9a511a2e81ebbd701744d03b5 /sys/lkm/syscall/example | |
| parent | 0f81d3e0a26c2833cd085c472a4a77c325486b75 (diff) | |
Remove LKMs and switch to the module framework, pass 1.
Proposed on tech-kern@.
Diffstat (limited to 'sys/lkm/syscall/example')
| -rw-r--r-- | sys/lkm/syscall/example/Makefile | 13 | ||||
| -rw-r--r-- | sys/lkm/syscall/example/README | 95 | ||||
| -rw-r--r-- | sys/lkm/syscall/example/example_syscall.c | 77 | ||||
| -rw-r--r-- | sys/lkm/syscall/example/lkminit_syscall.c | 115 | ||||
| -rw-r--r-- | sys/lkm/syscall/example/test/Makefile | 27 | ||||
| -rw-r--r-- | sys/lkm/syscall/example/test/testsyscall.c | 65 |
6 files changed, 0 insertions, 392 deletions
diff --git a/sys/lkm/syscall/example/Makefile b/sys/lkm/syscall/example/Makefile deleted file mode 100644 index 268b36c1e0b..00000000000 --- a/sys/lkm/syscall/example/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -# $NetBSD: Makefile,v 1.3 2001/12/12 11:56:06 lukem Exp $ - -.include "../Makefile.inc" - -KMOD= syscall_example - -SRCS= lkminit_syscall.c -SRCS+= example_syscall.c - -SUBDIR+= test - -.include <bsd.kmod.mk> -.include <bsd.subdir.mk> diff --git a/sys/lkm/syscall/example/README b/sys/lkm/syscall/example/README deleted file mode 100644 index 249efafac2f..00000000000 --- a/sys/lkm/syscall/example/README +++ /dev/null @@ -1,95 +0,0 @@ -# -# 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. -# -# $NetBSD: README,v 1.1 2000/12/11 13:48:12 jdolecek Exp $ -# - -1.0 Overview - - This is the README file for the sample loaded system call. - - -2.0 Directions - - To test the module, do the following: - - 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 system call consumes 8 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 system call will be unloaded by name. - -4.0 System call modules - - System calls as loadable modules use one of two approaches. - - If the system call slot is unspecified (-1), it will attempt - to locate (and allocate) the next free call slot that points - to the address of the "lkmnosys" function (an alias for the - "nosys" function). It replaces this with the user's call; - the user can tell which slot was allocated using the "modstat" - command (the call slot is indicated by the value of "Off"). - - If the system call slot is specified, it will replace that - specific call (assuming it is in range of the entries in the - sysent[] table). Care should be taken when replacing system - calls. Good candiates are calls which the user is attempting - to repair or make POSIX compliant. It is possible to replace - all calls, although care should be taken with the "ioctl()" - call, as it is the interface for the lkm loader. - - When unloaded, the system call module replaces the previous - contents of the call slot it was loaded in. If this was an - allocable slot, it is now reallocable; if it was a particular - call slot, the previous function is restored. - - The directory ./sample/syscall contains a sample implementation - of a loadable system call. - - -5.0 END OF DOCUMENT diff --git a/sys/lkm/syscall/example/example_syscall.c b/sys/lkm/syscall/example/example_syscall.c deleted file mode 100644 index f20bd12e7e4..00000000000 --- a/sys/lkm/syscall/example/example_syscall.c +++ /dev/null @@ -1,77 +0,0 @@ -/* $NetBSD: example_syscall.c,v 1.6 2007/12/19 20:31:39 dsl Exp $ */ - -/* - * example_syscall.c - * - * 05 Jun 93 Terry Lambert Split out of newsyscall.c - * - * 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/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: example_syscall.c,v 1.6 2007/12/19 20:31:39 dsl Exp $"); - -#include <sys/param.h> -#include <sys/ioctl.h> -#include <sys/systm.h> - -int example_syscall(struct lwp *, void *, register_t *); - -/* - * This is the actual code for system call... it can be static because - * we've externed it up above... the only plae 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 -example_syscall(l, uap, retval) - struct lwp *l; - void *uap; - register_t retval[]; -{ - /* - * Our new system call simply prints a message; it takes no - * arguments. - */ - - printf( "I am a loaded system call using the kernel 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/sys/lkm/syscall/example/lkminit_syscall.c b/sys/lkm/syscall/example/lkminit_syscall.c deleted file mode 100644 index ddc6a595429..00000000000 --- a/sys/lkm/syscall/example/lkminit_syscall.c +++ /dev/null @@ -1,115 +0,0 @@ -/* $NetBSD: lkminit_syscall.c,v 1.8 2007/12/19 20:31:39 dsl Exp $ */ - -/* - * Makefile for newsyscall - * - * 05 Jun 93 Terry Lambert Split example_syscall.c out - * 25 May 93 Terry Lambert Original - * - * 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/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: lkminit_syscall.c,v 1.8 2007/12/19 20:31:39 dsl Exp $"); - -#include <sys/param.h> -#include <sys/ioctl.h> -#include <sys/systm.h> -#include <sys/conf.h> -#include <sys/mount.h> -#include <sys/exec.h> -#include <sys/lkm.h> -#include <sys/file.h> -#include <sys/errno.h> - - -int example_syscall(struct lwp *, void *, register_t *); -int syscall_example_lkmentry(struct lkm_table *, int, int); - -static int syscall_load(struct lkm_table *, int); - -/* - * These two entries define our system call and module information. We - * have 0 arguments to our system call. - */ -static struct sysent newent = { - /* # of args, args size, MP-safe, fn. pointer */ - 0, 0, 0, example_syscall -}; - -MOD_SYSCALL( "syscall_example", -1, &newent) - -/* - * This function is called each time the module is loaded. Technically, - * we could have made this "lkm_nofunc" in the "DISPATCH" in - * "syscall_example_lkmentry()", - * but it's a convenient place to kick a copyright out to the console. - */ -static int -syscall_load( lkmtp, cmd) - struct lkm_table *lkmtp; - int cmd; -{ - /* print copyright on console*/ - printf("Sample Loaded system call\n"); - printf("Copyright (c) 1993 Terrence R. Lambert\n"); - printf("All rights reserved\n"); - - return (0); -} - - -/* - * External entry point; should generally match name of .o file + '_lkmentry'. - * The arguments are always the same for all loaded modules. The "load", - * "unload", and "stat" functions in "DISPATCH" will be called under - * their respective circumstances. If no function is desired, lkm_nofunc() - * should be supplied. They are called with the same arguments (cmd is - * included to allow the use of a single function, ver is included for - * version matching between modules and the kernel loader for the modules). - * - * Since we expect to link in the kernel and add external symbols to - * the kernel symbol name space in a future version, generally all - * functions used in the implementation of a particular module should - * be static unless they are expected to be seen in other modules or - * to resolve unresolved symbols alread existing in the kernel (the - * second case is not likely to ever occur). - * - * The entry point should return 0 unless it is refusing load (in which - * case it should return an errno from errno.h). - */ -int -syscall_example_lkmentry(lkmtp, cmd, ver) - struct lkm_table *lkmtp; - int cmd, ver; -{ - DISPATCH(lkmtp,cmd,ver,syscall_load,lkm_nofunc,lkm_nofunc) -} diff --git a/sys/lkm/syscall/example/test/Makefile b/sys/lkm/syscall/example/test/Makefile deleted file mode 100644 index 741313d67c0..00000000000 --- a/sys/lkm/syscall/example/test/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# $NetBSD: Makefile,v 1.2 2001/12/12 01:50:15 tv Exp $ - -PROG= testsyscall -NOMAN= # defined - -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 syscall_example - @echo - @./testsyscall - -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 syscall_example - -.include <bsd.prog.mk> diff --git a/sys/lkm/syscall/example/test/testsyscall.c b/sys/lkm/syscall/example/test/testsyscall.c deleted file mode 100644 index 5d56238ff1f..00000000000 --- a/sys/lkm/syscall/example/test/testsyscall.c +++ /dev/null @@ -1,65 +0,0 @@ -/* $NetBSD: testsyscall.c,v 1.4 2006/07/05 14:33:20 drochner Exp $ */ - -/* - * testsyscall.c - * - * Test program to call the sample loaded system call. - * - * 23 May 93 Terry Lambert Original - * - * - * 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/cdefs.h> -__RCSID("$NetBSD: testsyscall.c,v 1.4 2006/07/05 14:33:20 drochner Exp $"); - -#include <stdio.h> -#include <stdlib.h> - -int -main() -{ - char buf[80]; - int err = 0; - - printf( "Table offset as reported by modstat: "); - if(fgets(buf, sizeof(buf), stdin) == NULL) { - printf("[ABORT]\n"); - exit(1); - } - - printf("Calling syscall #%d ...\n", atoi(buf)); - if(err = syscall(atoi(buf) /* no arguments*/)) - perror("syscall"); - - exit(err); -} |
