1/*- 2 * Parts Copyright (c) 1995 Terrence R. Lambert 3 * Copyright (c) 1995 Julian R. Elischer 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 16 unchanged lines hidden (view full) --- 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * |
33 * $Id: kern_conf.c,v 1.30 1999/01/27 21:49:55 dillon Exp $ |
34 */ 35 36#include <sys/param.h> 37#include <sys/systm.h> 38#include <sys/module.h> 39#include <sys/conf.h> 40#include <sys/vnode.h> 41 --- 126 unchanged lines hidden (view full) --- 168int 169cdevsw_module_handler(module_t mod, int what, void *arg) 170{ 171 struct cdevsw_module_data* data = (struct cdevsw_module_data*) arg; 172 int error; 173 174 switch (what) { 175 case MOD_LOAD: |
176 error = cdevsw_add(&data->dev, data->cdevsw, NULL); 177 if (!error && data->chainevh) 178 error = data->chainevh(mod, what, data->chainarg); 179 return error; |
180 181 case MOD_UNLOAD: |
182 if (data->chainevh) { 183 error = data->chainevh(mod, what, data->chainarg); 184 if (error) 185 return error; 186 } 187 return cdevsw_add(&data->dev, NULL, NULL); |
188 } 189 190 if (data->chainevh) 191 return data->chainevh(mod, what, data->chainarg); 192 else 193 return 0; 194} 195 196int 197bdevsw_module_handler(module_t mod, int what, void* arg) 198{ 199 struct bdevsw_module_data* data = (struct bdevsw_module_data*) arg; 200 int error; 201 202 switch (what) { 203 case MOD_LOAD: |
204 error = cdevsw_add(&data->cdev, data->cdevsw, NULL); 205 if (!error) 206 error = bdevsw_add(&data->bdev, data->cdevsw, NULL); 207 if (!error && data->chainevh) 208 error = data->chainevh(mod, what, data->chainarg); 209 return error; |
210 211 case MOD_UNLOAD: |
212 if (data->chainevh) { 213 error = data->chainevh(mod, what, data->chainarg); 214 if (error) 215 return error; 216 } 217 error = bdevsw_add(&data->bdev, NULL, NULL); 218 if (!error) 219 error = cdevsw_add(&data->cdev, NULL, NULL); 220 return error; |
221 } 222 223 if (data->chainevh) 224 return data->chainevh(mod, what, data->chainarg); 225 else 226 return 0; 227} |