kern_conf.c (65632) | kern_conf.c (65747) |
---|---|
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 * | 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 * $FreeBSD: head/sys/kern/kern_conf.c 65632 2000-09-09 11:39:59Z phk $ | 33 * $FreeBSD: head/sys/kern/kern_conf.c 65747 2000-09-11 17:15:33Z phk $ |
34 */ 35 36#include <sys/param.h> 37#include <sys/kernel.h> 38#include <sys/sysctl.h> 39#include <sys/systm.h> 40#include <sys/module.h> 41#include <sys/malloc.h> --- 268 unchanged lines hidden (view full) --- 310dev_t 311make_dev(struct cdevsw *devsw, int minor, uid_t uid, gid_t gid, int perms, char *fmt, ...) 312{ 313 dev_t dev; 314 va_list ap; 315 int i; 316 317 dev = makedev(devsw->d_maj, minor); | 34 */ 35 36#include <sys/param.h> 37#include <sys/kernel.h> 38#include <sys/sysctl.h> 39#include <sys/systm.h> 40#include <sys/module.h> 41#include <sys/malloc.h> --- 268 unchanged lines hidden (view full) --- 310dev_t 311make_dev(struct cdevsw *devsw, int minor, uid_t uid, gid_t gid, int perms, char *fmt, ...) 312{ 313 dev_t dev; 314 va_list ap; 315 int i; 316 317 dev = makedev(devsw->d_maj, minor); |
318 if (dev->si_flags & SI_NAMED) { 319 printf( "WARNING: Driver mistake: repeat make_dev(\"%s\")\n", 320 dev->si_name); 321 return (dev); 322 } |
|
318 va_start(ap, fmt); 319 i = kvprintf(fmt, NULL, dev->si_name, 32, ap); 320 dev->si_name[i] = '\0'; 321 va_end(ap); 322 dev->si_devsw = devsw; 323 dev->si_uid = uid; 324 dev->si_gid = gid; 325 dev->si_mode = perms; | 323 va_start(ap, fmt); 324 i = kvprintf(fmt, NULL, dev->si_name, 32, ap); 325 dev->si_name[i] = '\0'; 326 va_end(ap); 327 dev->si_devsw = devsw; 328 dev->si_uid = uid; 329 dev->si_gid = gid; 330 dev->si_mode = perms; |
331 dev->si_flags |= SI_NAMED; |
|
326 327 if (devfs_create_hook) 328 devfs_create_hook(dev); 329 return (dev); 330} 331 332dev_t 333make_dev_alias(dev_t pdev, char *fmt, ...) 334{ 335 dev_t dev; 336 va_list ap; 337 int i; 338 339 dev = allocdev(); 340 dev->si_flags |= SI_ALIAS; | 332 333 if (devfs_create_hook) 334 devfs_create_hook(dev); 335 return (dev); 336} 337 338dev_t 339make_dev_alias(dev_t pdev, char *fmt, ...) 340{ 341 dev_t dev; 342 va_list ap; 343 int i; 344 345 dev = allocdev(); 346 dev->si_flags |= SI_ALIAS; |
347 dev->si_flags |= SI_NAMED; |
|
341 dev->si_drv1 = pdev; 342 LIST_INSERT_HEAD(&pdev->si_names, dev, si_hash); 343 344 va_start(ap, fmt); 345 i = kvprintf(fmt, NULL, dev->si_name, 32, ap); 346 dev->si_name[i] = '\0'; 347 va_end(ap); 348 349 if (devfs_create_hook) 350 devfs_create_hook(dev); 351 return (dev); 352} 353 354void 355destroy_dev(dev_t dev) 356{ | 348 dev->si_drv1 = pdev; 349 LIST_INSERT_HEAD(&pdev->si_names, dev, si_hash); 350 351 va_start(ap, fmt); 352 i = kvprintf(fmt, NULL, dev->si_name, 32, ap); 353 dev->si_name[i] = '\0'; 354 va_end(ap); 355 356 if (devfs_create_hook) 357 devfs_create_hook(dev); 358 return (dev); 359} 360 361void 362destroy_dev(dev_t dev) 363{ |
364 365 if (!(dev->si_flags & SI_NAMED)) { 366 printf( "WARNING: Driver mistake: destroy_dev on %d/%d\n", 367 major(dev), minor(dev)); 368 return; 369 } 370 |
|
357 if (devfs_destroy_hook) 358 devfs_destroy_hook(dev); 359 dev->si_drv1 = 0; 360 dev->si_drv2 = 0; 361 dev->si_devsw = 0; | 371 if (devfs_destroy_hook) 372 devfs_destroy_hook(dev); 373 dev->si_drv1 = 0; 374 dev->si_drv2 = 0; 375 dev->si_devsw = 0; |
376 dev->si_flags &= ~SI_NAMED; 377 dev->si_flags &= ~SI_ALIAS; |
|
362 freedev(dev); 363} 364 365const char * 366devtoname(dev_t dev) 367{ 368 char *p; 369 int mynor; --- 66 unchanged lines hidden --- | 378 freedev(dev); 379} 380 381const char * 382devtoname(dev_t dev) 383{ 384 char *p; 385 int mynor; --- 66 unchanged lines hidden --- |