iodev.c revision 202097
1132956Smarkm/*- 2132956Smarkm * Copyright (c) 2004 Mark R V Murray 3132956Smarkm * All rights reserved. 4132956Smarkm * 5132956Smarkm * Redistribution and use in source and binary forms, with or without 6132956Smarkm * modification, are permitted provided that the following conditions 7132956Smarkm * are met: 8132956Smarkm * 1. Redistributions of source code must retain the above copyright 9132956Smarkm * notice, this list of conditions and the following disclaimer 10132956Smarkm * in this position and unchanged. 11132956Smarkm * 2. Redistributions in binary form must reproduce the above copyright 12132956Smarkm * notice, this list of conditions and the following disclaimer in the 13132956Smarkm * documentation and/or other materials provided with the distribution. 14132956Smarkm * 15132956Smarkm * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR 16132956Smarkm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17132956Smarkm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18132956Smarkm * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19132956Smarkm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20132956Smarkm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21132956Smarkm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22132956Smarkm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23132956Smarkm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24132956Smarkm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25132956Smarkm * 26132956Smarkm */ 27132956Smarkm 28132956Smarkm#include <sys/cdefs.h> 29132956Smarkm__FBSDID("$FreeBSD: head/sys/dev/io/iodev.c 202097 2010-01-11 18:10:13Z marcel $"); 30132956Smarkm 31132956Smarkm#include <sys/param.h> 32132956Smarkm#include <sys/conf.h> 33132956Smarkm#include <sys/fcntl.h> 34132956Smarkm#include <sys/kernel.h> 35132956Smarkm#include <sys/lock.h> 36132956Smarkm#include <sys/malloc.h> 37132956Smarkm#include <sys/module.h> 38132956Smarkm#include <sys/mutex.h> 39132956Smarkm#include <sys/proc.h> 40132956Smarkm#include <sys/signalvar.h> 41132956Smarkm#include <sys/systm.h> 42132956Smarkm#include <sys/uio.h> 43132956Smarkm 44132956Smarkm#include <vm/vm.h> 45132956Smarkm#include <vm/pmap.h> 46132956Smarkm 47132956Smarkm#include <machine/iodev.h> 48132956Smarkm 49132956Smarkmstatic struct cdev *iodev; 50132956Smarkm 51132956Smarkmstatic struct cdevsw io_cdevsw = { 52132956Smarkm .d_version = D_VERSION, 53132956Smarkm .d_open = ioopen, 54132956Smarkm .d_close = ioclose, 55202097Smarcel .d_ioctl = ioioctl, 56132956Smarkm .d_name = "io", 57132956Smarkm}; 58132956Smarkm 59132956Smarkm/* ARGSUSED */ 60132956Smarkmstatic int 61132956Smarkmio_modevent(module_t mod __unused, int type, void *data __unused) 62132956Smarkm{ 63132956Smarkm switch(type) { 64132956Smarkm case MOD_LOAD: 65132956Smarkm if (bootverbose) 66132956Smarkm printf("io: <I/O>\n"); 67179990Sed iodev = make_dev(&io_cdevsw, 0, 68132956Smarkm UID_ROOT, GID_WHEEL, 0600, "io"); 69132956Smarkm break; 70132956Smarkm 71132956Smarkm case MOD_UNLOAD: 72132956Smarkm destroy_dev(iodev); 73132956Smarkm break; 74132956Smarkm 75132956Smarkm case MOD_SHUTDOWN: 76132956Smarkm break; 77132956Smarkm 78132956Smarkm default: 79132956Smarkm return(EOPNOTSUPP); 80132956Smarkm break; 81132956Smarkm 82132956Smarkm } 83132956Smarkm 84132956Smarkm return (0); 85132956Smarkm} 86132956Smarkm 87132956SmarkmDEV_MODULE(io, io_modevent, NULL); 88133036SmarkmMODULE_VERSION(io, 1); 89