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 * 267f3dea24SPeter Wemm * $FreeBSD$ 27380a989bSDoug Rabson */ 28380a989bSDoug Rabson 29380a989bSDoug Rabson #include <sys/param.h> 30380a989bSDoug Rabson #include <sys/proc.h> 31380a989bSDoug Rabson #include <sys/module.h> 32282a3889SKevin Lo #include <sys/sysproto.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 static int 41a220d00eSAndrew R. Reiter hello(struct thread *td, void *arg) 42380a989bSDoug Rabson { 43195ebc7eSPawel Jakub Dawidek 44380a989bSDoug Rabson printf("hello kernel\n"); 45195ebc7eSPawel Jakub Dawidek return (0); 46380a989bSDoug Rabson } 47380a989bSDoug Rabson 48380a989bSDoug Rabson /* 49380a989bSDoug Rabson * The `sysent' for the new syscall 50380a989bSDoug Rabson */ 51380a989bSDoug Rabson static struct sysent hello_sysent = { 52380a989bSDoug Rabson 0, /* sy_narg */ 53380a989bSDoug Rabson hello /* sy_call */ 54380a989bSDoug Rabson }; 55380a989bSDoug Rabson 56380a989bSDoug Rabson /* 57380a989bSDoug Rabson * The offset in sysent where the syscall is allocated. 58380a989bSDoug Rabson */ 59380a989bSDoug Rabson static int offset = NO_SYSCALL; 60380a989bSDoug Rabson 61380a989bSDoug Rabson /* 62380a989bSDoug Rabson * The function called at load/unload. 63380a989bSDoug Rabson */ 64380a989bSDoug Rabson static int 65380a989bSDoug Rabson load(struct module *module, int cmd, void *arg) 66380a989bSDoug Rabson { 67380a989bSDoug Rabson int error = 0; 68380a989bSDoug Rabson 69380a989bSDoug Rabson switch (cmd) { 70380a989bSDoug Rabson case MOD_LOAD : 71380a989bSDoug Rabson printf("syscall loaded at %d\n", offset); 72380a989bSDoug Rabson break; 73380a989bSDoug Rabson case MOD_UNLOAD : 74380a989bSDoug Rabson printf("syscall unloaded from %d\n", offset); 75380a989bSDoug Rabson break; 76380a989bSDoug Rabson default : 7774bf4e16SPawel Jakub Dawidek error = EOPNOTSUPP; 78380a989bSDoug Rabson break; 79380a989bSDoug Rabson } 80195ebc7eSPawel Jakub Dawidek return (error); 81380a989bSDoug Rabson } 82380a989bSDoug Rabson 83380a989bSDoug Rabson SYSCALL_MODULE(syscall, &offset, &hello_sysent, load, NULL); 84