summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pccard
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>1999-06-17 21:07:59 +0000
committermarkm <markm@FreeBSD.org>1999-06-17 21:07:59 +0000
commit21c748c1498a684fb7c91f5ef34a46442e074acd (patch)
tree0a89102a352bd0f10f8bbb640fcf28670fb06dd9 /usr.sbin/pccard
parent015d2f3ea84c1f4812ba70e7e5c7de5637c1c303 (diff)
downloadFreeBSD-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.c11
-rw-r--r--usr.sbin/pccard/pccardd/pccardd.c22
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;
OpenPOWER on IntegriCloud