k_uvm.c revision 272458
1262569Simp/* $NetBSD: k_uvm.c,v 1.1 2012/02/17 22:36:50 jmmv Exp $ */ 2262569Simp/* 3262569Simp * Copyright (c) 2012 The NetBSD Foundation, Inc. 4262569Simp * All rights reserved. 5262569Simp * 6262569Simp * Redistribution and use in source and binary forms, with or without 7262569Simp * modification, are permitted provided that the following conditions 8262569Simp * are met: 9262569Simp * 1. Redistributions of source code must retain the above copyright 10262569Simp * notice, this list of conditions and the following disclaimer. 11262569Simp * 2. Redistributions in binary form must reproduce the above copyright 12262569Simp * notice, this list of conditions and the following disclaimer in the 13262569Simp * documentation and/or other materials provided with the distribution. 14262569Simp * 15262569Simp * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 16262569Simp * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 17262569Simp * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18262569Simp * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19262569Simp * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 20262569Simp * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21262569Simp * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 22262569Simp * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23262569Simp * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 24262569Simp * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25262569Simp * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26262569Simp * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27262569Simp */ 28262569Simp 29262569Simp#include <sys/cdefs.h> 30262569Simp__KERNEL_RCSID(0, "$NetBSD: k_uvm.c,v 1.1 2012/02/17 22:36:50 jmmv Exp $"); 31262569Simp 32262569Simp#include <sys/param.h> 33262569Simp#include <sys/kernel.h> 34262569Simp#include <sys/module.h> 35262569Simp#include <sys/sysctl.h> 36262569Simp 37262569SimpMODULE(MODULE_CLASS_MISC, k_uvm, NULL); 38262569Simp 39262569Simp/* --------------------------------------------------------------------- */ 40262569Simp/* Sysctl interface to query information about the module. */ 41262569Simp/* --------------------------------------------------------------------- */ 42262569Simp 43270864Simpstatic struct sysctllog *clogp; 44262569Simpstatic int page_size; 45262569Simp 46262569Simp#define K_UVM 0x12345678 47262569Simp#define K_UVM_VALUE 0 48262569Simp 49262569SimpSYSCTL_SETUP(sysctl_k_uvm_setup, "sysctl k_uvm subtree setup") 50262569Simp{ 51270864Simp 52262569Simp sysctl_createv(clog, 0, NULL, NULL, 53262569Simp CTLFLAG_PERMANENT, 54262569Simp CTLTYPE_NODE, "k_uvm", NULL, 55262569Simp NULL, 0, NULL, 0, 56262569Simp CTL_VENDOR, K_UVM, CTL_EOL); 57262569Simp 58270864Simp sysctl_createv(clog, 0, NULL, NULL, 59262569Simp CTLFLAG_PERMANENT, 60262569Simp CTLTYPE_INT, "page_size", 61262569Simp SYSCTL_DESCR("Value of PAGE_SIZE"), 62262569Simp NULL, 0, &page_size, 0, 63262569Simp CTL_VENDOR, K_UVM, K_UVM_VALUE, CTL_EOL); 64262569Simp} 65270864Simp 66262569Simp/* --------------------------------------------------------------------- */ 67262569Simp/* Module management. */ 68262569Simp/* --------------------------------------------------------------------- */ 69262569Simp 70262569Simpstatic 71262569Simpint 72262569Simpk_uvm_init(prop_dictionary_t props) 73262569Simp{ 74262569Simp 75262569Simp page_size = PAGE_SIZE; 76262569Simp 77262569Simp sysctl_k_uvm_setup(&clogp); 78262569Simp 79262569Simp return 0; 80262569Simp} 81262569Simp 82262569Simpstatic 83262569Simpint 84262569Simpk_uvm_fini(void *arg) 85262569Simp{ 86262569Simp 87262569Simp sysctl_teardown(&clogp); 88262569Simp 89262569Simp return 0; 90262569Simp} 91262569Simp 92262569Simpstatic 93262569Simpint 94262569Simpk_uvm_modcmd(modcmd_t cmd, void *arg) 95262569Simp{ 96262569Simp int ret; 97262569Simp 98270864Simp switch (cmd) { 99262569Simp case MODULE_CMD_INIT: 100262569Simp ret = k_uvm_init(arg); 101262569Simp break; 102262569Simp 103262569Simp case MODULE_CMD_FINI: 104262569Simp ret = k_uvm_fini(arg); 105262569Simp break; 106262569Simp 107270864Simp case MODULE_CMD_STAT: 108262569Simp default: 109262569Simp ret = ENOTTY; 110262569Simp } 111262569Simp 112262569Simp return ret; 113262569Simp} 114262569Simp