k_uvm.c revision 1.1
11.1Sjmmv/* $NetBSD: k_uvm.c,v 1.1 2012/02/17 22:36:50 jmmv Exp $ */ 21.1Sjmmv/* 31.1Sjmmv * Copyright (c) 2012 The NetBSD Foundation, Inc. 41.1Sjmmv * All rights reserved. 51.1Sjmmv * 61.1Sjmmv * Redistribution and use in source and binary forms, with or without 71.1Sjmmv * modification, are permitted provided that the following conditions 81.1Sjmmv * are met: 91.1Sjmmv * 1. Redistributions of source code must retain the above copyright 101.1Sjmmv * notice, this list of conditions and the following disclaimer. 111.1Sjmmv * 2. Redistributions in binary form must reproduce the above copyright 121.1Sjmmv * notice, this list of conditions and the following disclaimer in the 131.1Sjmmv * documentation and/or other materials provided with the distribution. 141.1Sjmmv * 151.1Sjmmv * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 161.1Sjmmv * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 171.1Sjmmv * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 181.1Sjmmv * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 191.1Sjmmv * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 201.1Sjmmv * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 211.1Sjmmv * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 221.1Sjmmv * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 231.1Sjmmv * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 241.1Sjmmv * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 251.1Sjmmv * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 261.1Sjmmv * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 271.1Sjmmv */ 281.1Sjmmv 291.1Sjmmv#include <sys/cdefs.h> 301.1Sjmmv__KERNEL_RCSID(0, "$NetBSD: k_uvm.c,v 1.1 2012/02/17 22:36:50 jmmv Exp $"); 311.1Sjmmv 321.1Sjmmv#include <sys/param.h> 331.1Sjmmv#include <sys/kernel.h> 341.1Sjmmv#include <sys/module.h> 351.1Sjmmv#include <sys/sysctl.h> 361.1Sjmmv 371.1SjmmvMODULE(MODULE_CLASS_MISC, k_uvm, NULL); 381.1Sjmmv 391.1Sjmmv/* --------------------------------------------------------------------- */ 401.1Sjmmv/* Sysctl interface to query information about the module. */ 411.1Sjmmv/* --------------------------------------------------------------------- */ 421.1Sjmmv 431.1Sjmmvstatic struct sysctllog *clogp; 441.1Sjmmvstatic int page_size; 451.1Sjmmv 461.1Sjmmv#define K_UVM 0x12345678 471.1Sjmmv#define K_UVM_VALUE 0 481.1Sjmmv 491.1SjmmvSYSCTL_SETUP(sysctl_k_uvm_setup, "sysctl k_uvm subtree setup") 501.1Sjmmv{ 511.1Sjmmv 521.1Sjmmv sysctl_createv(clog, 0, NULL, NULL, 531.1Sjmmv CTLFLAG_PERMANENT, 541.1Sjmmv CTLTYPE_NODE, "k_uvm", NULL, 551.1Sjmmv NULL, 0, NULL, 0, 561.1Sjmmv CTL_VENDOR, K_UVM, CTL_EOL); 571.1Sjmmv 581.1Sjmmv sysctl_createv(clog, 0, NULL, NULL, 591.1Sjmmv CTLFLAG_PERMANENT, 601.1Sjmmv CTLTYPE_INT, "page_size", 611.1Sjmmv SYSCTL_DESCR("Value of PAGE_SIZE"), 621.1Sjmmv NULL, 0, &page_size, 0, 631.1Sjmmv CTL_VENDOR, K_UVM, K_UVM_VALUE, CTL_EOL); 641.1Sjmmv} 651.1Sjmmv 661.1Sjmmv/* --------------------------------------------------------------------- */ 671.1Sjmmv/* Module management. */ 681.1Sjmmv/* --------------------------------------------------------------------- */ 691.1Sjmmv 701.1Sjmmvstatic 711.1Sjmmvint 721.1Sjmmvk_uvm_init(prop_dictionary_t props) 731.1Sjmmv{ 741.1Sjmmv 751.1Sjmmv page_size = PAGE_SIZE; 761.1Sjmmv 771.1Sjmmv sysctl_k_uvm_setup(&clogp); 781.1Sjmmv 791.1Sjmmv return 0; 801.1Sjmmv} 811.1Sjmmv 821.1Sjmmvstatic 831.1Sjmmvint 841.1Sjmmvk_uvm_fini(void *arg) 851.1Sjmmv{ 861.1Sjmmv 871.1Sjmmv sysctl_teardown(&clogp); 881.1Sjmmv 891.1Sjmmv return 0; 901.1Sjmmv} 911.1Sjmmv 921.1Sjmmvstatic 931.1Sjmmvint 941.1Sjmmvk_uvm_modcmd(modcmd_t cmd, void *arg) 951.1Sjmmv{ 961.1Sjmmv int ret; 971.1Sjmmv 981.1Sjmmv switch (cmd) { 991.1Sjmmv case MODULE_CMD_INIT: 1001.1Sjmmv ret = k_uvm_init(arg); 1011.1Sjmmv break; 1021.1Sjmmv 1031.1Sjmmv case MODULE_CMD_FINI: 1041.1Sjmmv ret = k_uvm_fini(arg); 1051.1Sjmmv break; 1061.1Sjmmv 1071.1Sjmmv case MODULE_CMD_STAT: 1081.1Sjmmv default: 1091.1Sjmmv ret = ENOTTY; 1101.1Sjmmv } 1111.1Sjmmv 1121.1Sjmmv return ret; 1131.1Sjmmv} 114