1380a989bSDoug Rabson /*- 2380a989bSDoug Rabson * Copyright (c) 1999 Assar Westerlund 3380a989bSDoug Rabson * All rights reserved. 4380a989bSDoug Rabson * 5380a989bSDoug Rabson * Redistribution and use in source and binary forms, with or without 6380a989bSDoug Rabson * modification, are permitted provided that the following conditions 7380a989bSDoug Rabson * are met: 8380a989bSDoug Rabson * 1. Redistributions of source code must retain the above copyright 9380a989bSDoug Rabson * notice, this list of conditions and the following disclaimer. 10380a989bSDoug Rabson * 2. Redistributions in binary form must reproduce the above copyright 11380a989bSDoug Rabson * notice, this list of conditions and the following disclaimer in the 12380a989bSDoug Rabson * documentation and/or other materials provided with the distribution. 13380a989bSDoug Rabson * 14380a989bSDoug Rabson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15380a989bSDoug Rabson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16380a989bSDoug Rabson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17380a989bSDoug Rabson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18380a989bSDoug Rabson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19380a989bSDoug Rabson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20380a989bSDoug Rabson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21380a989bSDoug Rabson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22380a989bSDoug Rabson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23380a989bSDoug Rabson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24380a989bSDoug Rabson * SUCH DAMAGE. 25380a989bSDoug Rabson * 26380a989bSDoug Rabson * $Id$ 27380a989bSDoug Rabson */ 28380a989bSDoug Rabson 29380a989bSDoug Rabson #include <sys/types.h> 30380a989bSDoug Rabson #include <sys/param.h> 31380a989bSDoug Rabson #include <sys/proc.h> 32380a989bSDoug Rabson #include <sys/module.h> 33380a989bSDoug Rabson #include <sys/sysent.h> 34380a989bSDoug Rabson #include <sys/kernel.h> 35380a989bSDoug Rabson #include <sys/systm.h> 36380a989bSDoug Rabson 37380a989bSDoug Rabson /* 38380a989bSDoug Rabson * The function for implementing the syscall. 39380a989bSDoug Rabson */ 40380a989bSDoug Rabson 41380a989bSDoug Rabson static int 42380a989bSDoug Rabson hello (struct proc *p, void *arg) 43380a989bSDoug Rabson { 44380a989bSDoug Rabson printf ("hello kernel\n"); 45380a989bSDoug Rabson return 0; 46380a989bSDoug Rabson } 47380a989bSDoug Rabson 48380a989bSDoug Rabson /* 49380a989bSDoug Rabson * The `sysent' for the new syscall 50380a989bSDoug Rabson */ 51380a989bSDoug Rabson 52380a989bSDoug Rabson static struct sysent hello_sysent = { 53380a989bSDoug Rabson 0, /* sy_narg */ 54380a989bSDoug Rabson hello /* sy_call */ 55380a989bSDoug Rabson }; 56380a989bSDoug Rabson 57380a989bSDoug Rabson /* 58380a989bSDoug Rabson * The offset in sysent where the syscall is allocated. 59380a989bSDoug Rabson */ 60380a989bSDoug Rabson 61380a989bSDoug Rabson static int offset = NO_SYSCALL; 62380a989bSDoug Rabson 63380a989bSDoug Rabson /* 64380a989bSDoug Rabson * The function called at load/unload. 65380a989bSDoug Rabson */ 66380a989bSDoug Rabson 67380a989bSDoug Rabson static int 68380a989bSDoug Rabson load (struct module *module, int cmd, void *arg) 69380a989bSDoug Rabson { 70380a989bSDoug Rabson int error = 0; 71380a989bSDoug Rabson 72380a989bSDoug Rabson switch (cmd) { 73380a989bSDoug Rabson case MOD_LOAD : 74380a989bSDoug Rabson printf ("syscall loaded at %d\n", offset); 75380a989bSDoug Rabson break; 76380a989bSDoug Rabson case MOD_UNLOAD : 77380a989bSDoug Rabson printf ("syscall unloaded from %d\n", offset); 78380a989bSDoug Rabson break; 79380a989bSDoug Rabson default : 80380a989bSDoug Rabson error = EINVAL; 81380a989bSDoug Rabson break; 82380a989bSDoug Rabson } 83380a989bSDoug Rabson return error; 84380a989bSDoug Rabson } 85380a989bSDoug Rabson 86380a989bSDoug Rabson SYSCALL_MODULE(syscall, &offset, &hello_sysent, load, NULL); 87