miniroot.c revision 1.3
11.3Sad/* $NetBSD: miniroot.c,v 1.3 2008/11/16 15:47:35 ad Exp $ */ 21.1Sad 31.1Sad/*- 41.1Sad * Copyright (c) 2008 The NetBSD Foundation, Inc. 51.1Sad * All rights reserved. 61.1Sad * 71.1Sad * Redistribution and use in source and binary forms, with or without 81.1Sad * modification, are permitted provided that the following conditions 91.1Sad * are met: 101.1Sad * 1. Redistributions of source code must retain the above copyright 111.1Sad * notice, this list of conditions and the following disclaimer. 121.1Sad * 2. Redistributions in binary form must reproduce the above copyright 131.1Sad * notice, this list of conditions and the following disclaimer in the 141.1Sad * documentation and/or other materials provided with the distribution. 151.1Sad * 161.1Sad * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 171.1Sad * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 181.1Sad * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 191.1Sad * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 201.1Sad * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 211.1Sad * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 221.1Sad * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 231.1Sad * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 241.1Sad * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 251.1Sad * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 261.1Sad * POSSIBILITY OF SUCH DAMAGE. 271.1Sad */ 281.1Sad 291.1Sad#include <sys/cdefs.h> 301.3Sad__KERNEL_RCSID(0, "$NetBSD: miniroot.c,v 1.3 2008/11/16 15:47:35 ad Exp $"); 311.1Sad 321.1Sad#include <sys/param.h> 331.1Sad#include <sys/kernel.h> 341.1Sad#include <sys/module.h> 351.1Sad 361.1Sad#include <dev/md.h> 371.1Sad 381.1SadMODULE(MODULE_CLASS_MISC, miniroot, NULL); 391.1Sad 401.1Sadstatic int 411.1Sadminiroot_modcmd(modcmd_t cmd, void *arg) 421.1Sad{ 431.1Sad void *addr; 441.1Sad int error; 451.1Sad size_t size; 461.1Sad 471.1Sad switch (cmd) { 481.1Sad case MODULE_CMD_INIT: 491.1Sad error = module_find_section("miniroot", &addr, &size); 501.3Sad if (error == 0) { 511.3Sad if (size == 0) { 521.3Sad error = EINVAL; 531.3Sad } else { 541.3Sad md_root_setconf(addr, size); 551.3Sad } 561.3Sad } 571.3Sad return error; 581.1Sad 591.2Sad case MODULE_CMD_FINI: 601.2Sad return EOPNOTSUPP; 611.2Sad 621.1Sad default: 631.1Sad return ENOTTY; 641.1Sad } 651.1Sad} 66