summaryrefslogtreecommitdiff
path: root/sys/lkm/syscall/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/syscall/example
parent0f81d3e0a26c2833cd085c472a4a77c325486b75 (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/Makefile13
-rw-r--r--sys/lkm/syscall/example/README95
-rw-r--r--sys/lkm/syscall/example/example_syscall.c77
-rw-r--r--sys/lkm/syscall/example/lkminit_syscall.c115
-rw-r--r--sys/lkm/syscall/example/test/Makefile27
-rw-r--r--sys/lkm/syscall/example/test/testsyscall.c65
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);
-}