From d0f6f9a13b4ff7aef84c4f757ce77c37d0656b6c Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 18 Jul 2002 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2002-07-18 --- bitsy/sd.h | 12 ++++++------ bitsy/sdata.c | 37 ++++++++++++++++--------------------- pc/kbd.c | 4 ++++ 3 files changed, 26 insertions(+), 27 deletions(-) diff --git a/bitsy/sd.h b/bitsy/sd.h index c5d1cc81257fc644f5193410f30bf77a6b69bf32..61b57a44a1821a188a126f35eea5be587405a622 100644 --- a/bitsy/sd.h +++ b/bitsy/sd.h @@ -9,8 +9,8 @@ typedef struct SDreq SDreq; typedef struct SDunit SDunit; typedef struct SDperm { - char name[NAMELEN]; - char user[NAMELEN]; + char name[KNAMELEN]; + char user[KNAMELEN]; ulong perm; } SDperm; @@ -50,7 +50,7 @@ typedef struct SDev { SDifc* ifc; /* pnp/legacy */ void *ctlr; int idno; - char name[NAMELEN]; + char name[KNAMELEN]; int index; /* into unit space */ int nunit; SDev* next; @@ -59,7 +59,7 @@ typedef struct SDev { int enabled; } SDev; -typedef struct SDifc { +struct SDifc { char* name; SDev* (*pnp)(void); @@ -75,8 +75,8 @@ typedef struct SDifc { int (*wctl)(SDunit*, Cmdbuf*); long (*bio)(SDunit*, int, int, void*, long, long); - SDev* (*config)(int on, char *spec, void *cf); -} SDifc; + SDev* (*config)(int on, char *spec, DevConf *cf); +}; typedef struct SDreq { SDunit* unit; diff --git a/bitsy/sdata.c b/bitsy/sdata.c index 94a9d968766a1a9d24ee11831551737dcb0777a9..694a7e7ccfded2a11439445015939faf4311ff26 100644 --- a/bitsy/sdata.c +++ b/bitsy/sdata.c @@ -7,7 +7,7 @@ #include "ureg.h" #include "../port/error.h" -#include "../port/sd.h" +#include "sd.h" extern SDifc sdataifc; @@ -353,17 +353,16 @@ ataready(int cmdport, int ctlport, int dev, int reset, int ready, int micro) * can be used as a test for !Bsy. */ as = inb(ctlport+As); - if(as & reset) - ; - else if(dev){ - outb(cmdport+Dh, dev); - dev = 0; - } - else if(ready == 0 || (as & ready)){ - atadebug(0, 0, "ataready: %d 0x%2.2uX\n", micro, as); - return as; + if((as & reset) == 0){ + if(dev){ + outb(cmdport+Dh, dev); + dev = 0; + } + else if(ready == 0 || (as & ready)){ + atadebug(0, 0, "ataready: %d 0x%2.2uX\n", micro, as); + return as; + } } - if(micro-- <= 0){ atadebug(0, 0, "ataready: %d 0x%2.2uX\n", micro, as); break; @@ -1581,18 +1580,15 @@ static SDev* ataid(SDev* sdev) { int i; - Ctlr *ctlr; if(sdev == nil) return nil; - ctlr = sdev->ctlr; i = 0; while(sdev){ if(sdev->ifc == &sdataifc){ - ctlr = sdev->ctlr; sdev->idno = 'C'+i; i++; - snprint(sdev->name, NAMELEN, "sd%c", sdev->idno); + snprint(sdev->name, KNAMELEN, "sd%c", sdev->idno); } sdev = sdev->next; } @@ -1606,14 +1602,14 @@ static int ataenable(SDev* sdev) { Ctlr *ctlr; - char name[NAMELEN]; + char name[KNAMELEN]; ctlr = sdev->ctlr; if(ctlr->bmiba){ ctlr->prdt = xspanalloc(Nprd*sizeof(Prd), 4, 4*1024); } - snprint(name, NAMELEN, "%s (%s)", sdev->name, sdev->ifc->name); + snprint(name, KNAMELEN, "%s (%s)", sdev->name, sdev->ifc->name); // intrenable(ctlr->irq, atainterrupt, ctlr, ctlr->tbdf, name); outb(ctlr->ctlport+Dc, 0); intrenable(ataitype, atairq, atainterrupt, ctlr, name); @@ -2040,9 +2036,8 @@ struct Try { }; static SDev* -ataconfig(int on, char *, void *pf) +ataconfig(int on, char *, DevConf *cf) { - DevConf* cf = pf; int cmdport; int ctlport; int irq; @@ -2054,10 +2049,10 @@ ataconfig(int on, char *, void *pf) rc = nil; for (try = &tries[0]; try->p != 0 || try->c != 0; try++){ ataitype = cf->itype; - atairq = cf->intnum; + atairq = cf->irq; cmdport = cf->port + try->p; ctlport = cmdport + try->c; - irq = cf->intnum; + irq = cf->irq; rc = ataprobe(cmdport, ctlport, irq); if (rc) break; diff --git a/pc/kbd.c b/pc/kbd.c index f59fbd050ce1ea5cfc483a70a4f25333acf16482..bc85b100a0fdf8e19e7ead2c13471b6683462767 100644 --- a/pc/kbd.c +++ b/pc/kbd.c @@ -124,6 +124,8 @@ enum Ckbdint= (1<<0), /* kbd interrupt enable */ }; +int mouseshifted; + static Lock i8042lock; static uchar ccc; static void (*auxputc)(int, int); @@ -326,6 +328,7 @@ i8042intr(Ureg*, void*) break; case Shift: shift = 0; + mouseshifted = 0; break; case Ctrl: ctl = 0; @@ -369,6 +372,7 @@ i8042intr(Ureg*, void*) return; case Shift: shift = 1; + mouseshifted = 1; return; case Latin: alt = 1;