diff options
author | imp <imp@FreeBSD.org> | 1999-12-02 05:46:22 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 1999-12-02 05:46:22 +0000 |
commit | be66291a6b80a37ccc47113c6fff10720aa29c24 (patch) | |
tree | c3aa980a36599bcbbe987e69cbab4aea5c6dd7a0 /sys/pccard/pccard.c | |
parent | 267971fd82f09d6d9035eeb7469165e7eecebe60 (diff) | |
download | FreeBSD-src-be66291a6b80a37ccc47113c6fff10720aa29c24.zip FreeBSD-src-be66291a6b80a37ccc47113c6fff10720aa29c24.tar.gz |
/tmp/msg
Diffstat (limited to 'sys/pccard/pccard.c')
-rw-r--r-- | sys/pccard/pccard.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/sys/pccard/pccard.c b/sys/pccard/pccard.c index ae09a7f..43404ad 100644 --- a/sys/pccard/pccard.c +++ b/sys/pccard/pccard.c @@ -265,7 +265,7 @@ slot_resume(void *arg) slt->state = empty; slt->insert_seq = 1; untimeout(inserted, (void *)slt, slt->insert_ch); - slt->insert_ch = timeout(inserted, (void *)slt, hz/4); + inserted((void *) slt); selwakeup(&slt->selp); } return (0); @@ -579,6 +579,7 @@ crdioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct proc *p) struct mem_desc *mp; struct io_desc *ip; int s, err; + int pwval; /* beep is disabled until the 1st call of crdioctl() */ pccard_beep_select(BEEP_ON); @@ -709,6 +710,20 @@ crdioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct proc *p) else pccard_failure_beep(); return err; + /* + * Virtual removal/insertion + */ + case PIOCSVIR: + pwval = *(int *)data; + if (!pwval) { + if (slt->state != filled) + return EINVAL; + } else { + if (slt->state != empty) + return EINVAL; + } + pccard_event(slt, pwval == 0 ? card_removed : card_inserted); + break; case PIOCSBEEP: if (pccard_beep_select(*(int *)data)) { return EINVAL; |