summaryrefslogtreecommitdiff
path: root/sys/lkm/misc/example
diff options
context:
space:
mode:
authorad <ad@NetBSD.org>2008-11-12 12:35:50 +0000
committerad <ad@NetBSD.org>2008-11-12 12:35:50 +0000
commit0efea177e37295fed654875d875160c47500d6bd (patch)
tree9d0589344a5d07b9a511a2e81ebbd701744d03b5 /sys/lkm/misc/example
parent0f81d3e0a26c2833cd085c472a4a77c325486b75 (diff)
Remove LKMs and switch to the module framework, pass 1.
Proposed on tech-kern@.
Diffstat (limited to 'sys/lkm/misc/example')
-rw-r--r--sys/lkm/misc/example/Makefile10
-rw-r--r--sys/lkm/misc/example/README88
-rw-r--r--sys/lkm/misc/example/example_misc.c82
-rw-r--r--sys/lkm/misc/example/lkminit_misc.c191
-rw-r--r--sys/lkm/misc/example/test/Makefile27
-rw-r--r--sys/lkm/misc/example/test/testmisc.c64
6 files changed, 0 insertions, 462 deletions
diff --git a/sys/lkm/misc/example/Makefile b/sys/lkm/misc/example/Makefile
deleted file mode 100644
index 5e1c77f125f..00000000000
--- a/sys/lkm/misc/example/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# $NetBSD: Makefile,v 1.3 2001/12/12 12:06:46 lukem Exp $
-
-KMOD= misc_example
-
-SRCS= lkminit_misc.c example_misc.c
-
-SUBDIR+= test
-
-.include <bsd.kmod.mk>
-.include <bsd.subdir.mk>
diff --git a/sys/lkm/misc/example/README b/sys/lkm/misc/example/README
deleted file mode 100644
index d9ce1bf8e16..00000000000
--- a/sys/lkm/misc/example/README
+++ /dev/null
@@ -1,88 +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:11 jdolecek Exp $
-#
-
-1.0 Overview
-
- This is the README file for the sample miscellaneous module
- that mimics the loaded system call.
-
- A miscellaneous 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 "miscellaneous"
- 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:
-
- 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 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 miscellaneous module will be unloaded by name.
-
-
-4.0 END OF DOCUMENT
diff --git a/sys/lkm/misc/example/example_misc.c b/sys/lkm/misc/example/example_misc.c
deleted file mode 100644
index 7bd8bd1b332..00000000000
--- a/sys/lkm/misc/example/example_misc.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * misccall.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.
- *
- * $NetBSD: example_misc.c,v 1.5 2007/12/19 20:31:39 dsl Exp $
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: example_misc.c,v 1.5 2007/12/19 20:31:39 dsl Exp $");
-
-#include <sys/param.h>
-#include <sys/ioctl.h>
-#include <sys/systm.h>
-
-int misccall(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
-misccall(l, uap, retval)
- struct lwp *l;
- void *uap;
- register_t retval[];
-{
- /*
- * Our new system call simply prints a message; it takes no
- * arguments.
- */
-
- printf( "\nI am a loaded system call using the miscellaneous\n");
- printf( "module loader interface and a kernel printf!\n");
- printf( "I will print this message each time I am called!\n");
-
- return( 0); /* success (or error code from errno.h)*/
-}
-
-/*
- * EOF -- This file has not been truncated.
- */
diff --git a/sys/lkm/misc/example/lkminit_misc.c b/sys/lkm/misc/example/lkminit_misc.c
deleted file mode 100644
index efb7a09c871..00000000000
--- a/sys/lkm/misc/example/lkminit_misc.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/* $NetBSD: lkminit_misc.c,v 1.7 2007/12/19 20:31:39 dsl Exp $ */
-
-/*
- * Makefile for miscmod
- *
- * 05 Jun 93 Terry Lambert Split mycall.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_misc.c,v 1.7 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>
-#include <sys/syscall.h>
-
-
-int misccall(struct lwp *, void *, register_t *);
-int misc_example_lkmentry(struct lkm_table *lkmtp, int, int);
-
-static int miscmod_handle(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 = {
- 0, 0, 0, misccall /* # of args, args size, fn pointer*/
-};
-
-/*
- * Miscellaneous modules must have their own save areas...
- */
-static struct sysent oldent; /* save are for old callslot entry*/
-
-MOD_MISC( "miscmod");
-
-
-/*
- * This function is called each time the module is loaded or unloaded.
- * Since we are a miscellaneous module, we have to provide whatever
- * code is necessary to patch ourselves into the area we are being
- * loaded to change.
- *
- * 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).
- *
- * The stat information is basically common to all modules, so there
- * is no real issue involved with stat; we will leave it lkm_nofunc(),
- * since we don't have to do anything about it.
- */
-static int
-miscmod_handle( lkmtp, cmd)
- struct lkm_table *lkmtp;
- int cmd;
-{
- int i;
- struct lkm_misc *args = lkmtp->private.lkm_misc;
- int err = 0; /* default = success*/
- extern int sys_lkmnosys(struct lwp *, void *, register_t *);
-
- switch( cmd) {
- case LKM_E_LOAD:
-
- /*
- * Don't load twice! (lkmexists() is exported by kern_lkm.c)
- */
- if( lkmexists( lkmtp))
- return( EEXIST);
-
- /*
- * This is where we would express a slot preference if
- * we had one; since we don't, we will simply duplicate
- * the "auto" code and forget the other.
- */
-
- /*
- * Search the table looking for a slot...
- */
- for (i = 0; i < SYS_MAXSYSCALL; i++)
- if ((void *)sysent[i].sy_call == sys_lkmnosys)
- break; /* found it!*/
- /* out of allocable slots?*/
- if (i == SYS_MAXSYSCALL) {
- err = ENFILE;
- break;
- }
-
- /* save old -- we must provide our own data area*/
- bcopy( &sysent[ i], &oldent, sizeof( struct sysent));
-
- /* replace with new*/
- bcopy( &newent, &sysent[ i], sizeof( struct sysent));
-
- /* done!*/
- args->mod.lkm_offset = i; /* slot in sysent[]*/
-
-
- /* if we make it to here, print copyright on console*/
- printf( "\nSample Loaded miscellaneous module (system call)\n");
- printf( "Copyright (c) 1993\n");
- printf( "Terrence R. Lambert\n");
- printf( "All rights reserved\n");
-
- break; /* Success*/
-
- case LKM_E_UNLOAD:
- /* current slot...*/
- i = args->mod.lkm_offset;
-
- /* replace current slot contents with old contents*/
- bcopy( &oldent, &sysent[ i], sizeof( struct sysent));
-
- break; /* Success*/
-
- default: /* we only understand load/unload*/
- err = EINVAL;
- break;
- }
-
- return(err);
-}
-
-
-/*
- * 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
-misc_example_lkmentry( lkmtp, cmd, ver)
- struct lkm_table *lkmtp;
- int cmd, ver;
-{
- DISPATCH(lkmtp,cmd,ver,miscmod_handle,miscmod_handle,lkm_nofunc)
-}
diff --git a/sys/lkm/misc/example/test/Makefile b/sys/lkm/misc/example/test/Makefile
deleted file mode 100644
index 768d7044d99..00000000000
--- a/sys/lkm/misc/example/test/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-# $NetBSD: Makefile,v 1.2 2001/12/12 01:50:14 tv Exp $
-
-PROG= testmisc
-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 misc_example
- @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_example
-
-.include <bsd.prog.mk>
diff --git a/sys/lkm/misc/example/test/testmisc.c b/sys/lkm/misc/example/test/testmisc.c
deleted file mode 100644
index e665cf1c3da..00000000000
--- a/sys/lkm/misc/example/test/testmisc.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $NetBSD: testmisc.c,v 1.4 2007/02/04 22:34:57 elad Exp $ */
-
-/*
- * testmisc.c
- *
- * Test program to call the sample loaded miscellaneous system call.
- *
- * 05 Jun 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: testmisc.c,v 1.4 2007/02/04 22:34:57 elad 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);
- }
-
- if (err = syscall( atoi(buf) /* no arguments*/))
- perror("syscall");
-
- exit(err);
-}