diff options
author | markm <markm@FreeBSD.org> | 1999-06-17 21:07:59 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 1999-06-17 21:07:59 +0000 |
commit | 21c748c1498a684fb7c91f5ef34a46442e074acd (patch) | |
tree | 0a89102a352bd0f10f8bbb640fcf28670fb06dd9 /usr.sbin/pccard | |
parent | 015d2f3ea84c1f4812ba70e7e5c7de5637c1c303 (diff) | |
download | FreeBSD-src-21c748c1498a684fb7c91f5ef34a46442e074acd.zip FreeBSD-src-21c748c1498a684fb7c91f5ef34a46442e074acd.tar.gz |
More uncontroversial PAO updates. Make the IRQ wildcarding work a lot better,
and improve the daemonizing code.
Submitted by: Tatsumi HOSOKAWA
Diffstat (limited to 'usr.sbin/pccard')
-rw-r--r-- | usr.sbin/pccard/pccardd/file.c | 11 | ||||
-rw-r--r-- | usr.sbin/pccard/pccardd/pccardd.c | 22 |
2 files changed, 28 insertions, 5 deletions
diff --git a/usr.sbin/pccard/pccardd/file.c b/usr.sbin/pccard/pccardd/file.c index e638a4e..344aa34 100644 --- a/usr.sbin/pccard/pccardd/file.c +++ b/usr.sbin/pccard/pccardd/file.c @@ -26,7 +26,7 @@ #ifndef lint static const char rcsid[] = - "$Id: file.c,v 1.15 1998/04/25 17:52:15 hosokawa Exp $"; + "$Id: file.c,v 1.16 1998/04/25 18:10:10 hosokawa Exp $"; #endif /* not lint */ #include <stdio.h> @@ -112,10 +112,16 @@ static void parsefile(void) { int i; + int irq_init = 0; struct allocblk *bp; pushc = 0; lineno = 1; + for (i = 0; i < 16 ; i++) + if (pool_irq[i]) { + irq_init = 1; + break; + } for (;;) switch (keyword(next_tok())) { case KWD_EOF: @@ -138,7 +144,8 @@ parsefile(void) case KWD_IRQ: /* reserved irqs */ while ((i = irq_tok(0)) > 0) - pool_irq[i] = 1; + if (!irq_init) + pool_irq[i] = 1; pusht = 1; break; case KWD_MEMORY: diff --git a/usr.sbin/pccard/pccardd/pccardd.c b/usr.sbin/pccard/pccardd/pccardd.c index 3525fac..1001374 100644 --- a/usr.sbin/pccard/pccardd/pccardd.c +++ b/usr.sbin/pccard/pccardd/pccardd.c @@ -26,7 +26,7 @@ #ifndef lint static const char rcsid[] = - "$Id: pccardd.c,v 1.1 1998/02/27 08:19:25 hosokawa Exp $"; + "$Id: pccardd.c,v 1.2 1998/03/09 05:18:58 hosokawa Exp $"; #endif /* not lint */ #include <stdio.h> @@ -48,8 +48,10 @@ main(int argc, char *argv[]) struct slot *slots, *sp; int count, dodebug = 0; int doverbose = 0; + int delay = 0; + int i; - while ((count = getopt(argc, argv, ":dvf:")) != -1) { + while ((count = getopt(argc, argv, ":dvf:i:z")) != -1) { switch (count) { case 'd': setbuf(stdout, 0); @@ -62,6 +64,17 @@ main(int argc, char *argv[]) case 'f': config_file = optarg; break; + case 'i': + /* supress specified irq */ + if (sscanf(optarg, "%d", &i) != 1) { + fprintf(stderr, "%s: -i number\n", argv[0]); + exit(1); + } + pool_irq[i] = 1; + break; + case 'z': + delay = 1; + break; case ':': die("no config file argument"); break; @@ -81,12 +94,15 @@ main(int argc, char *argv[]) if (doverbose) dump_config_file(); log_setup(); - if (!dodebug) + if (!dodebug && !delay) if (daemon(0, 0)) die("fork failed"); slots = readslots(); if (slots == 0) die("no PC-CARD slots"); + if (delay) + if (daemon(0, 0)) + die("fork failed"); logmsg("pccardd started", NULL); for (;;) { fd_set mask; |