From 6393a0b7508f44a46623e5b1992f8a5bd2660c5d Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 6 Oct 1995 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1995-10-06 --- pc/devi82365.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/pc/devi82365.c b/pc/devi82365.c index 6fc7f9230d3ba15d86c4b3f283cceb433d73b354..5ca9475c7fe3bcf9ea7ea55faff49609c8410f1a 100644 --- a/pc/devi82365.c +++ b/pc/devi82365.c @@ -277,6 +277,7 @@ slotdis(Slot *pp) static void i82365intr(Ureg *ur, void *a) { + int tries, changed; uchar csc, was; Slot *pp; @@ -284,18 +285,25 @@ i82365intr(Ureg *ur, void *a) if(slot == 0) return; - for(pp = slot; pp < lastslot; pp++){ - csc = rdreg(pp, Rcsc); - was = pp->occupied; - slotinfo(pp); - if(csc & (1<<3) && was != pp->occupied){ - if(pp->occupied) - print("slot%d card inserted\n", pp->slotno); - else { - print("slot%d card removed\n", pp->slotno); - slotdis(pp); + changed = 0; + for(tries = 0; tries < 5; tries++){ + for(pp = slot; pp < lastslot; pp++){ + csc = rdreg(pp, Rcsc); + was = pp->occupied; + slotinfo(pp); + if(csc & (1<<3) && was != pp->occupied){ + changed++; + if(pp->occupied) + print("slot%d card inserted\n", pp->slotno); + else { + print("slot%d card removed\n", pp->slotno); + slotdis(pp); + } } } + if(changed) + break; + delay(100); } }