ignore this, sent by mistake. On Tue, Aug 9, 2016 at 3:24 PM Ronald G. Minnich <[email protected]> wrote:
> Change-Id: I30f64d91c9bdc789a620db08b10fce384c6843fe > Signed-off-by: Ronald G. Minnich <[email protected]> > --- > kern/drivers/dev/sd.c | 823 +++++++++++++------------- > kern/drivers/dev/sdiahci.c | 1367 > ++++++++++++++++++++------------------------ > kern/drivers/dev/sdscsi.c | 197 +++---- > kern/include/ahci.h | 378 ++++++------ > kern/include/sd.h | 235 ++++---- > 5 files changed, 1420 insertions(+), 1580 deletions(-) > > diff --git a/kern/drivers/dev/sd.c b/kern/drivers/dev/sd.c > index 5ca4f5c..21da70f 100644 > --- a/kern/drivers/dev/sd.c > +++ b/kern/drivers/dev/sd.c > @@ -10,19 +10,19 @@ > /* > * Storage Device. > */ > -#include "u.h" > +#include "../port/error.h" > #include "../port/lib.h" > -#include "mem.h" > #include "dat.h" > #include "fns.h" > #include "io.h" > +#include "mem.h" > +#include "u.h" > #include "ureg.h" > -#include "../port/error.h" > > #include "../port/sd.h" > > extern Dev sddevtab; > -extern SDifc* sdifc[]; > +extern SDifc *sdifc[]; > > static char Echange[] = "media or partition has changed"; > > @@ -30,7 +30,7 @@ static char devletters[] = "0123456789" > "abcdefghijklmnopqrstuvwxyz" > "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; > > -static SDev *devs[sizeof devletters-1]; > +static SDev *devs[sizeof devletters - 1]; > static QLock devslock; > > enum { > @@ -40,49 +40,48 @@ enum { > }; > > enum { > - Qtopdir = 1, /* top level directory */ > + Qtopdir = 1, /* top level directory */ > Qtopbase, > - Qtopctl = Qtopbase, > + Qtopctl = Qtopbase, > > - Qunitdir, /* directory per unit */ > + Qunitdir, /* directory per unit */ > Qunitbase, > - Qctl = Qunitbase, > + Qctl = Qunitbase, > Qraw, > Qpart, > > - TypeLOG = 4, > - NType = (1<<TypeLOG), > - TypeMASK = (NType-1), > - TypeSHIFT = 0, > + TypeLOG = 4, > + NType = (1 << TypeLOG), > + TypeMASK = (NType - 1), > + TypeSHIFT = 0, > > - PartLOG = 8, > - NPart = (1<<PartLOG), > - PartMASK = (NPart-1), > - PartSHIFT = TypeLOG, > + PartLOG = 8, > + NPart = (1 << PartLOG), > + PartMASK = (NPart - 1), > + PartSHIFT = TypeLOG, > > - UnitLOG = 8, > - NUnit = (1<<UnitLOG), > - UnitMASK = (NUnit-1), > - UnitSHIFT = (PartLOG+TypeLOG), > + UnitLOG = 8, > + NUnit = (1 << UnitLOG), > + UnitMASK = (NUnit - 1), > + UnitSHIFT = (PartLOG + TypeLOG), > > - DevLOG = 8, > - NDev = (1 << DevLOG), > - DevMASK = (NDev-1), > - DevSHIFT = (UnitLOG+PartLOG+TypeLOG), > + DevLOG = 8, > + NDev = (1 << DevLOG), > + DevMASK = (NDev - 1), > + DevSHIFT = (UnitLOG + PartLOG + TypeLOG), > > Ncmd = 20, > }; > > -#define TYPE(q) ((((uint32_t)(q).path)>>TypeSHIFT) & > TypeMASK) > -#define PART(q) ((((uint32_t)(q).path)>>PartSHIFT) & > PartMASK) > -#define UNIT(q) ((((uint32_t)(q).path)>>UnitSHIFT) & > UnitMASK) > -#define DEV(q) ((((uint32_t)(q).path)>>DevSHIFT) & DevMASK) > -#define QID(d,u, p, t) (((d)<<DevSHIFT)|((u)<<UnitSHIFT)|\ > - ((p)<<PartSHIFT)|((t)<<TypeSHIFT)) > - > +#define TYPE(q) ((((uint32_t)(q).path) >> TypeSHIFT) & TypeMASK) > +#define PART(q) ((((uint32_t)(q).path) >> PartSHIFT) & PartMASK) > +#define UNIT(q) ((((uint32_t)(q).path) >> UnitSHIFT) & UnitMASK) > +#define DEV(q) ((((uint32_t)(q).path) >> DevSHIFT) & DevMASK) > +#define QID(d, u, p, t) \ > + (((d) << DevSHIFT) | ((u) << UnitSHIFT) | ((p) << PartSHIFT) | \ > + ((t) << TypeSHIFT)) > > -void > -sdaddpart(SDunit* unit, char* name, uint64_t start, uint64_t end) > +void sdaddpart(SDunit *unit, char *name, uint64_t start, uint64_t end) > { > SDpart *pp; > int i, partno; > @@ -91,24 +90,23 @@ sdaddpart(SDunit* unit, char* name, uint64_t start, > uint64_t end) > * Check name not already used > * and look for a free slot. > */ > - if(unit->part != nil){ > + if (unit->part != nil) { > partno = -1; > - for(i = 0; i < unit->npart; i++){ > + for (i = 0; i < unit->npart; i++) { > pp = &unit->part[i]; > - if(!pp->valid){ > - if(partno == -1) > + if (!pp->valid) { > + if (partno == -1) > partno = i; > break; > } > - if(strcmp(name, pp->SDperm.name) == 0){ > - if(pp->start == start && pp->end == end) > + if (strcmp(name, pp->SDperm.name) == 0) { > + if (pp->start == start && pp->end == end) > return; > error(Ebadctl); > } > } > - } > - else{ > - if((unit->part = malloc(sizeof(SDpart)*SDnpart)) == nil) > + } else { > + if ((unit->part = malloc(sizeof(SDpart) * SDnpart)) == nil) > error(Enomem); > unit->npart = SDnpart; > partno = 0; > @@ -118,12 +116,12 @@ sdaddpart(SDunit* unit, char* name, uint64_t start, > uint64_t end) > * If no free slot found then increase the > * array size (can't get here with unit->part == nil). > */ > - if(partno == -1){ > - if(unit->npart >= NPart) > + if (partno == -1) { > + if (unit->npart >= NPart) > error(Enomem); > - if((pp = malloc(sizeof(SDpart)*(unit->npart+SDnpart))) == > nil) > + if ((pp = malloc(sizeof(SDpart) * (unit->npart + > SDnpart))) == nil) > error(Enomem); > - memmove(pp, unit->part, sizeof(SDpart)*unit->npart); > + memmove(pp, unit->part, sizeof(SDpart) * unit->npart); > free(unit->part); > unit->part = pp; > partno = unit->npart; > @@ -133,7 +131,7 @@ sdaddpart(SDunit* unit, char* name, uint64_t start, > uint64_t end) > /* > * Check size and extent are valid. > */ > - if(start > end || end > unit->sectors) > + if (start > end || end > unit->sectors) > error(Eio); > pp = &unit->part[partno]; > pp->start = start; > @@ -144,8 +142,7 @@ sdaddpart(SDunit* unit, char* name, uint64_t start, > uint64_t end) > pp->valid = 1; > } > > -static void > -sddelpart(SDunit* unit, char* name) > +static void sddelpart(SDunit *unit, char *name) > { > Proc *up = externup(); > int i; > @@ -155,35 +152,33 @@ sddelpart(SDunit* unit, char* name) > * Can't delete if someone still has it open. > */ > pp = unit->part; > - for(i = 0; i < unit->npart; i++){ > - if(strcmp(name, pp->SDperm.name) == 0) > + for (i = 0; i < unit->npart; i++) { > + if (strcmp(name, pp->SDperm.name) == 0) > break; > pp++; > } > - if(i >= unit->npart) > + if (i >= unit->npart) > error(Ebadctl); > - if(strcmp(up->user, pp->SDperm.user) && !iseve()) > + if (strcmp(up->user, pp->SDperm.user) && !iseve()) > error(Eperm); > pp->valid = 0; > pp->vers++; > } > > -static void > -sdincvers(SDunit *unit) > +static void sdincvers(SDunit *unit) > { > int i; > > unit->vers++; > - if(unit->part){ > - for(i = 0; i < unit->npart; i++){ > + if (unit->part) { > + for (i = 0; i < unit->npart; i++) { > unit->part[i].valid = 0; > unit->part[i].vers++; > } > } > } > > -static int > -sdinitpart(SDunit* unit) > +static int sdinitpart(SDunit *unit) > { > #if 0 > Mach *m; > @@ -193,15 +188,15 @@ sdinitpart(SDunit* unit) > > m = machp(); > #endif > - if(unit->sectors > 0){ > + if (unit->sectors > 0) { > unit->sectors = unit->secsize = 0; > sdincvers(unit); > } > > /* device must be connected or not; other values are trouble */ > - if(unit->inquiry[0] & 0xC0) /* see SDinq0periphqual */ > + if (unit->inquiry[0] & 0xC0) /* see SDinq0periphqual */ > return 0; > - switch(unit->inquiry[0] & SDinq0periphtype){ > + switch (unit->inquiry[0] & SDinq0periphtype) { > case SDperdisk: > case SDperworm: > case SDpercd: > @@ -211,20 +206,20 @@ sdinitpart(SDunit* unit) > return 0; > } > > - if(unit->dev->ifc->online) > + if (unit->dev->ifc->online) > unit->dev->ifc->online(unit); > - if(unit->sectors){ > + if (unit->sectors) { > sdincvers(unit); > sdaddpart(unit, "data", 0, unit->sectors); > > - /* > - * Use partitions passed from boot program, > - * e.g. > - * sdC0part=dos 63 123123/plan9 123123 456456 > - * This happens before /boot sets hostname so the > - * partitions will have the null-string for user. > - * The gen functions patch it up. > - */ > +/* > + * Use partitions passed from boot program, > + * e.g. > + * sdC0part=dos 63 123123/plan9 123123 456456 > + * This happens before /boot sets hostname so the > + * partitions will have the null-string for user. > + * The gen functions patch it up. > + */ > #if 0 > snprint(buf, sizeof buf, "%spart", unit->SDperm.name); > for(p = getconf(buf); p != nil; p = q){ > @@ -247,35 +242,32 @@ sdinitpart(SDunit* unit) > return 1; > } > > -static int > -sdindex(int idno) > +static int sdindex(int idno) > { > char *p; > > p = strchr(devletters, idno); > - if(p == nil) > + if (p == nil) > return -1; > - return p-devletters; > + return p - devletters; > } > > -static SDev* > -sdgetdev(int idno) > +static SDev *sdgetdev(int idno) > { > SDev *sdev; > int i; > > - if((i = sdindex(idno)) < 0) > + if ((i = sdindex(idno)) < 0) > return nil; > > qlock(&devslock); > - if(sdev = devs[i]) > + if (sdev = devs[i]) > incref(&sdev->r); > qunlock(&devslock); > return sdev; > } > > -static SDunit* > -sdgetunit(SDev* sdev, int subno) > +static SDunit *sdgetunit(SDev *sdev, int subno) > { > SDunit *unit; > char buf[32]; > @@ -287,22 +279,22 @@ sdgetunit(SDev* sdev, int subno) > * successfully accessed. > */ > qlock(&sdev->unitlock); > - if(subno > sdev->nunit){ > + if (subno > sdev->nunit) { > qunlock(&sdev->unitlock); > return nil; > } > > unit = sdev->unit[subno]; > - if(unit == nil){ > + if (unit == nil) { > /* > * Probe the unit only once. This decision > * may be a little severe and reviewed later. > */ > - if(sdev->unitflg[subno]){ > + if (sdev->unitflg[subno]) { > qunlock(&sdev->unitlock); > return nil; > } > - if((unit = malloc(sizeof(SDunit))) == nil){ > + if ((unit = malloc(sizeof(SDunit))) == nil) { > qunlock(&sdev->unitlock); > return nil; > } > @@ -315,7 +307,7 @@ sdgetunit(SDev* sdev, int subno) > unit->subno = subno; > unit->dev = sdev; > > - if(sdev->enabled == 0 && sdev->ifc->enable) > + if (sdev->enabled == 0 && sdev->ifc->enable) > sdev->ifc->enable(sdev); > sdev->enabled = 1; > > @@ -324,7 +316,7 @@ sdgetunit(SDev* sdev, int subno) > * called before the unit is made available in the > * sdunit[] array. > */ > - if(unit->dev->ifc->verify(unit) == 0){ > + if (unit->dev->ifc->verify(unit) == 0) { > qunlock(&sdev->unitlock); > free(unit); > return nil; > @@ -335,8 +327,7 @@ sdgetunit(SDev* sdev, int subno) > return unit; > } > > -static void > -sdreset(void) > +static void sdreset(void) > { > int i; > SDev *sdev; > @@ -344,42 +335,41 @@ sdreset(void) > /* > * Probe all known controller types and register any devices found. > */ > - for(i = 0; sdifc[i] != nil; i++){ > - if(sdifc[i]->pnp == nil || (sdev = sdifc[i]->pnp()) == nil) > + for (i = 0; sdifc[i] != nil; i++) { > + if (sdifc[i]->pnp == nil || (sdev = sdifc[i]->pnp()) == > nil) > continue; > sdadddevs(sdev); > } > } > > -void > -sdadddevs(SDev *sdev) > +void sdadddevs(SDev *sdev) > { > int i, j, id; > SDev *next; > > - for(; sdev; sdev=next){ > + for (; sdev; sdev = next) { > next = sdev->next; > > - sdev->unit = (SDunit**)malloc(sdev->nunit * > sizeof(SDunit*)); > - sdev->unitflg = (int*)malloc(sdev->nunit * sizeof(int)); > - if(sdev->unit == nil || sdev->unitflg == nil){ > + sdev->unit = (SDunit **)malloc(sdev->nunit * sizeof(SDunit > *)); > + sdev->unitflg = (int *)malloc(sdev->nunit * sizeof(int)); > + if (sdev->unit == nil || sdev->unitflg == nil) { > print("sdadddevs: out of memory\n"); > giveup: > free(sdev->unit); > free(sdev->unitflg); > - if(sdev->ifc->clear) > + if (sdev->ifc->clear) > sdev->ifc->clear(sdev); > free(sdev); > continue; > } > id = sdindex(sdev->idno); > - if(id == -1){ > + if (id == -1) { > print("sdadddevs: bad id number %d (%C)\n", id, > id); > goto giveup; > } > qlock(&devslock); > - for(i=0; i<nelem(devs); i++){ > - if(devs[j = (id+i)%nelem(devs)] == nil){ > + for (i = 0; i < nelem(devs); i++) { > + if (devs[j = (id + i) % nelem(devs)] == nil) { > sdev->idno = devletters[j]; > devs[j] = sdev; > snprint(sdev->name, sizeof sdev->name, > "sd%c", devletters[j]); > @@ -387,7 +377,7 @@ sdadddevs(SDev *sdev) > } > } > qunlock(&devslock); > - if(i == nelem(devs)){ > + if (i == nelem(devs)) { > print("sdadddevs: out of device letters\n"); > goto giveup; > } > @@ -403,20 +393,18 @@ sdadddevs(SDev *sdev) > // unconfigure(buf); > // } > > -void > -sdaddallconfs(void (*addconf)(SDunit *)) > +void sdaddallconfs(void (*addconf)(SDunit *)) > { > int i, u; > SDev *sdev; > > - for(i = 0; i < nelem(devs); i++) /* each controller > */ > - for(sdev = devs[i]; sdev; sdev = sdev->next) > - for(u = 0; u < sdev->nunit; u++) /* each > drive */ > + for (i = 0; i < nelem(devs); i++) /* each controller */ > + for (sdev = devs[i]; sdev; sdev = sdev->next) > + for (u = 0; u < sdev->nunit; u++) /* each drive */ > (*addconf)(sdev->unit[u]); > } > > -static int > -sd2gen(Chan* c, int i, Dir* dp) > +static int sd2gen(Chan *c, int i, Dir *dp) > { > Qid q; > uint64_t l; > @@ -431,14 +419,14 @@ sd2gen(Chan* c, int i, Dir* dp) > unit = sdev->unit[UNIT(c->qid)]; > > rv = -1; > - switch(i){ > + switch (i) { > case Qctl: > mkqid(&q, QID(DEV(c->qid), UNIT(c->qid), PART(c->qid), > Qctl), > - unit->vers, QTFILE); > + unit->vers, QTFILE); > perm = &unit->ctlperm; > - if(emptystr(perm->user)){ > + if (emptystr(perm->user)) { > kstrdup(&perm->user, eve); > - perm->perm = 0644; /* nothing secret in ctl */ > + perm->perm = 0644; /* nothing secret in ctl */ > } > devdir(c, q, "ctl", 0, perm->user, perm->perm, dp); > rv = 1; > @@ -446,11 +434,11 @@ sd2gen(Chan* c, int i, Dir* dp) > > case Qraw: > mkqid(&q, QID(DEV(c->qid), UNIT(c->qid), PART(c->qid), > Qraw), > - unit->vers, QTFILE); > + unit->vers, QTFILE); > perm = &unit->rawperm; > - if(emptystr(perm->user)){ > + if (emptystr(perm->user)) { > kstrdup(&perm->user, eve); > - perm->perm = DMEXCL|0600; > + perm->perm = DMEXCL | 0600; > } > devdir(c, q, "raw", 0, perm->user, perm->perm, dp); > rv = 1; > @@ -460,8 +448,8 @@ sd2gen(Chan* c, int i, Dir* dp) > pp = &unit->part[PART(c->qid)]; > l = (pp->end - pp->start) * unit->secsize; > mkqid(&q, QID(DEV(c->qid), UNIT(c->qid), PART(c->qid), > Qpart), > - unit->vers+pp->vers, QTFILE); > - if(emptystr(pp->SDperm.user)) > + unit->vers + pp->vers, QTFILE); > + if (emptystr(pp->SDperm.user)) > kstrdup(&pp->SDperm.user, eve); > devdir(c, q, pp->SDperm.name, l, pp->SDperm.user, > pp->SDperm.perm, dp); > rv = 1; > @@ -472,22 +460,20 @@ sd2gen(Chan* c, int i, Dir* dp) > return rv; > } > > -static int > -sd1gen(Chan* c, int i, Dir* dp) > +static int sd1gen(Chan *c, int i, Dir *dp) > { > Qid q; > > - switch(i){ > + switch (i) { > case Qtopctl: > mkqid(&q, QID(0, 0, 0, Qtopctl), 0, QTFILE); > - devdir(c, q, "sdctl", 0, eve, 0644, dp); /* no > secrets */ > + devdir(c, q, "sdctl", 0, eve, 0644, dp); /* no secrets */ > return 1; > } > return -1; > } > > -static int > -sdgen(Chan* c, char* d, Dirtab* dir, int j, int s, Dir* dp) > +static int sdgen(Chan *c, char *d, Dirtab *dir, int j, int s, Dir *dp) > { > Proc *up = externup(); > Qid q = {}; > @@ -497,35 +483,35 @@ sdgen(Chan* c, char* d, Dirtab* dir, int j, int s, > Dir* dp) > SDunit *unit; > SDev *sdev; > > - switch(TYPE(c->qid)){ > + switch (TYPE(c->qid)) { > case Qtopdir: > - if(s == DEVDOTDOT){ > + if (s == DEVDOTDOT) { > mkqid(&q, QID(0, 0, 0, Qtopdir), 0, QTDIR); > sprint(up->genbuf, "#%C", sddevtab.dc); > devdir(c, q, up->genbuf, 0, eve, 0555, dp); > return 1; > } > > - if(s+Qtopbase < Qunitdir) > - return sd1gen(c, s+Qtopbase, dp); > - s -= (Qunitdir-Qtopbase); > + if (s + Qtopbase < Qunitdir) > + return sd1gen(c, s + Qtopbase, dp); > + s -= (Qunitdir - Qtopbase); > > qlock(&devslock); > - for(i=0; i<nelem(devs); i++){ > - if(devs[i]){ > - if(s < devs[i]->nunit) > + for (i = 0; i < nelem(devs); i++) { > + if (devs[i]) { > + if (s < devs[i]->nunit) > break; > s -= devs[i]->nunit; > } > } > > - if(i == nelem(devs)){ > + if (i == nelem(devs)) { > /* Run off the end of the list */ > qunlock(&devslock); > return -1; > } > > - if((sdev = devs[i]) == nil){ > + if ((sdev = devs[i]) == nil) { > qunlock(&devslock); > return 0; > } > @@ -533,28 +519,29 @@ sdgen(Chan* c, char* d, Dirtab* dir, int j, int s, > Dir* dp) > incref(&sdev->r); > qunlock(&devslock); > > - if((unit = sdev->unit[s]) == nil) > - if((unit = sdgetunit(sdev, s)) == nil){ > + if ((unit = sdev->unit[s]) == nil) > + if ((unit = sdgetunit(sdev, s)) == nil) { > decref(&sdev->r); > return 0; > } > > mkqid(&q, QID(sdev->idno, s, 0, Qunitdir), 0, QTDIR); > - if(emptystr(unit->SDperm.user)) > + if (emptystr(unit->SDperm.user)) > kstrdup(&unit->SDperm.user, eve); > - devdir(c, q, unit->SDperm.name, 0, unit->SDperm.user, > unit->SDperm.perm, dp); > + devdir(c, q, unit->SDperm.name, 0, unit->SDperm.user, > unit->SDperm.perm, > + dp); > decref(&sdev->r); > return 1; > > case Qunitdir: > - if(s == DEVDOTDOT){ > + if (s == DEVDOTDOT) { > mkqid(&q, QID(0, 0, 0, Qtopdir), 0, QTDIR); > sprint(up->genbuf, "#%C", sddevtab.dc); > devdir(c, q, up->genbuf, 0, eve, 0555, dp); > return 1; > } > > - if((sdev = sdgetdev(DEV(c->qid))) == nil){ > + if ((sdev = sdgetdev(DEV(c->qid))) == nil) { > devdir(c, c->qid, "unavailable", 0, eve, 0, dp); > return 1; > } > @@ -569,33 +556,33 @@ sdgen(Chan* c, char* d, Dirtab* dir, int j, int s, > Dir* dp) > * will return > 1. > * Online is a bit of a large hammer but does the job. > */ > - if(unit->sectors == 0 > - || (unit->dev->ifc->online && unit->dev->ifc->online(unit) > > 1)) > + if (unit->sectors == 0 || > + (unit->dev->ifc->online && > unit->dev->ifc->online(unit) > 1)) > sdinitpart(unit); > > - i = s+Qunitbase; > - if(i < Qpart){ > + i = s + Qunitbase; > + if (i < Qpart) { > r = sd2gen(c, i, dp); > qunlock(&unit->ctl); > decref(&sdev->r); > return r; > } > i -= Qpart; > - if(unit->part == nil || i >= unit->npart){ > + if (unit->part == nil || i >= unit->npart) { > qunlock(&unit->ctl); > decref(&sdev->r); > break; > } > pp = &unit->part[i]; > - if(!pp->valid){ > + if (!pp->valid) { > qunlock(&unit->ctl); > decref(&sdev->r); > return 0; > } > l = (pp->end - pp->start) * (int64_t)unit->secsize; > mkqid(&q, QID(DEV(c->qid), UNIT(c->qid), i, Qpart), > - unit->vers+pp->vers, QTFILE); > - if(emptystr(pp->SDperm.user)) > + unit->vers + pp->vers, QTFILE); > + if (emptystr(pp->SDperm.user)) > kstrdup(&pp->SDperm.user, eve); > devdir(c, q, pp->SDperm.name, l, pp->SDperm.user, > pp->SDperm.perm, dp); > qunlock(&unit->ctl); > @@ -604,7 +591,7 @@ sdgen(Chan* c, char* d, Dirtab* dir, int j, int s, > Dir* dp) > case Qraw: > case Qctl: > case Qpart: > - if((sdev = sdgetdev(DEV(c->qid))) == nil){ > + if ((sdev = sdgetdev(DEV(c->qid))) == nil) { > devdir(c, q, "unavailable", 0, eve, 0, dp); > return 1; > } > @@ -623,30 +610,29 @@ sdgen(Chan* c, char* d, Dirtab* dir, int j, int s, > Dir* dp) > return -1; > } > > -static Chan* > -sdattach(char* spec) > +static Chan *sdattach(char *spec) > { > Chan *c; > char *p; > SDev *sdev; > int idno, subno; > > - if(*spec == '\0'){ > + if (*spec == '\0') { > c = devattach(sddevtab.dc, spec); > mkqid(&c->qid, QID(0, 0, 0, Qtopdir), 0, QTDIR); > return c; > } > > - if(spec[0] != 's' || spec[1] != 'd') > + if (spec[0] != 's' || spec[1] != 'd') > error(Ebadspec); > idno = spec[2]; > subno = strtol(&spec[3], &p, 0); > - if(p == &spec[3]) > + if (p == &spec[3]) > error(Ebadspec); > > - if((sdev=sdgetdev(idno)) == nil) > + if ((sdev = sdgetdev(idno)) == nil) > error(Enonexist); > - if(sdgetunit(sdev, subno) == nil){ > + if (sdgetunit(sdev, subno) == nil) { > decref(&sdev->r); > error(Enonexist); > } > @@ -658,20 +644,17 @@ sdattach(char* spec) > return c; > } > > -static Walkqid* > -sdwalk(Chan* c, Chan* nc, char** name, int nname) > +static Walkqid *sdwalk(Chan *c, Chan *nc, char **name, int nname) > { > return devwalk(c, nc, name, nname, nil, 0, sdgen); > } > > -static int32_t > -sdstat(Chan* c, uint8_t* db, int32_t n) > +static int32_t sdstat(Chan *c, uint8_t *db, int32_t n) > { > return devstat(c, db, n, nil, 0, sdgen); > } > > -static Chan* > -sdopen(Chan* c, int omode) > +static Chan *sdopen(Chan *c, int omode) > { > Proc *up = externup(); > SDpart *pp; > @@ -680,22 +663,22 @@ sdopen(Chan* c, int omode) > uint8_t tp; > > c = devopen(c, omode, 0, 0, sdgen); > - if((tp = TYPE(c->qid)) != Qctl && tp != Qraw && tp != Qpart) > + if ((tp = TYPE(c->qid)) != Qctl && tp != Qraw && tp != Qpart) > return c; > > sdev = sdgetdev(DEV(c->qid)); > - if(sdev == nil) > + if (sdev == nil) > error(Enonexist); > > unit = sdev->unit[UNIT(c->qid)]; > > - switch(TYPE(c->qid)){ > + switch (TYPE(c->qid)) { > case Qctl: > c->qid.vers = unit->vers; > break; > case Qraw: > c->qid.vers = unit->vers; > - if(TAS(&unit->rawinuse) != 0){ > + if (TAS(&unit->rawinuse) != 0) { > c->flag &= ~COPEN; > decref(&sdev->r); > error(Einuse); > @@ -704,14 +687,14 @@ sdopen(Chan* c, int omode) > break; > case Qpart: > qlock(&unit->ctl); > - if(waserror()){ > + if (waserror()) { > qunlock(&unit->ctl); > c->flag &= ~COPEN; > decref(&sdev->r); > nexterror(); > } > pp = &unit->part[PART(c->qid)]; > - c->qid.vers = unit->vers+pp->vers; > + c->qid.vers = unit->vers + pp->vers; > qunlock(&unit->ctl); > poperror(); > break; > @@ -720,23 +703,22 @@ sdopen(Chan* c, int omode) > return c; > } > > -static void > -sdclose(Chan* c) > +static void sdclose(Chan *c) > { > SDunit *unit; > SDev *sdev; > > - if(c->qid.type & QTDIR) > + if (c->qid.type & QTDIR) > return; > - if(!(c->flag & COPEN)) > + if (!(c->flag & COPEN)) > return; > > - switch(TYPE(c->qid)){ > + switch (TYPE(c->qid)) { > default: > break; > case Qraw: > sdev = sdgetdev(DEV(c->qid)); > - if(sdev){ > + if (sdev) { > unit = sdev->unit[UNIT(c->qid)]; > unit->rawinuse = 0; > decref(&sdev->r); > @@ -745,8 +727,7 @@ sdclose(Chan* c) > } > } > > -static int32_t > -sdbio(Chan* c, int write, char* a, int32_t len, int64_t off) > +static int32_t sdbio(Chan *c, int write, char *a, int32_t len, int64_t > off) > { > Proc *up = externup(); > int nchange; > @@ -758,19 +739,20 @@ sdbio(Chan* c, int write, char* a, int32_t len, > int64_t off) > int32_t l, max, nb, offset; > > sdev = sdgetdev(DEV(c->qid)); > - if(sdev == nil){ > + if (sdev == nil) { > decref(&sdev->r); > error(Enonexist); > } > unit = sdev->unit[UNIT(c->qid)]; > - if(unit == nil) > + if (unit == nil) > error(Enonexist); > > nchange = 0; > qlock(&unit->ctl); > - while(waserror()){ > + while (waserror()) { > /* notification of media change; go around again */ > - if(strcmp(up->errstr, Eio) == 0 && unit->sectors == 0 && > nchange++ == 0){ > + if (strcmp(up->errstr, Eio) == 0 && unit->sectors == 0 && > + nchange++ == 0) { > sdinitpart(unit); > continue; > } > @@ -781,7 +763,7 @@ sdbio(Chan* c, int write, char* a, int32_t len, > int64_t off) > nexterror(); > } > pp = &unit->part[PART(c->qid)]; > - if(unit->vers+pp->vers != c->qid.vers) > + if (unit->vers + pp->vers != c->qid.vers) > error(Echange); > > /* > @@ -795,74 +777,73 @@ sdbio(Chan* c, int write, char* a, int32_t len, > int64_t off) > * (sectors, secsize) can't change once the drive has > * been brought online. > */ > - bno = (off/unit->secsize) + pp->start; > - nb = ((off+len+unit->secsize-1)/unit->secsize) + pp->start - bno; > - max = SDmaxio/unit->secsize; > - if(nb > max) > + bno = (off / unit->secsize) + pp->start; > + nb = ((off + len + unit->secsize - 1) / unit->secsize) + pp->start > - bno; > + max = SDmaxio / unit->secsize; > + if (nb > max) > nb = max; > - if(bno+nb > pp->end) > + if (bno + nb > pp->end) > nb = pp->end - bno; > - if(bno >= pp->end || nb == 0){ > - if(write) > + if (bno >= pp->end || nb == 0) { > + if (write) > error(Eio); > qunlock(&unit->ctl); > decref(&sdev->r); > poperror(); > return 0; > } > - if(!(unit->inquiry[1] & SDinq1removable)){ > + if (!(unit->inquiry[1] & SDinq1removable)) { > qunlock(&unit->ctl); > poperror(); > } > > - b = sdmalloc(nb*unit->secsize); > - if(b == nil) > + b = sdmalloc(nb * unit->secsize); > + if (b == nil) > error(Enomem); > - if(waserror()){ > + if (waserror()) { > sdfree(b); > - if(!(unit->inquiry[1] & SDinq1removable)) > - decref(&sdev->r); /* gadverdamme! */ > + if (!(unit->inquiry[1] & SDinq1removable)) > + decref(&sdev->r); /* gadverdamme! */ > nexterror(); > } > > - offset = off%unit->secsize; > - if(offset+len > nb*unit->secsize) > - len = nb*unit->secsize - offset; > - if(write){ > - if(offset || (len%unit->secsize)){ > + offset = off % unit->secsize; > + if (offset + len > nb * unit->secsize) > + len = nb * unit->secsize - offset; > + if (write) { > + if (offset || (len % unit->secsize)) { > l = unit->dev->ifc->bio(unit, 0, 0, b, nb, bno); > - if(l < 0) > + if (l < 0) > error(Eio); > - if(l < (nb*unit->secsize)){ > - nb = l/unit->secsize; > - l = nb*unit->secsize - offset; > - if(len > l) > + if (l < (nb * unit->secsize)) { > + nb = l / unit->secsize; > + l = nb * unit->secsize - offset; > + if (len > l) > len = l; > } > } > - memmove(b+offset, a, len); > + memmove(b + offset, a, len); > l = unit->dev->ifc->bio(unit, 0, 1, b, nb, bno); > - if(l < 0) > + if (l < 0) > error(Eio); > - if(l < offset) > + if (l < offset) > len = 0; > - else if(len > l - offset) > + else if (len > l - offset) > len = l - offset; > - } > - else{ > + } else { > l = unit->dev->ifc->bio(unit, 0, 0, b, nb, bno); > - if(l < 0) > + if (l < 0) > error(Eio); > - if(l < offset) > + if (l < offset) > len = 0; > - else if(len > l - offset) > + else if (len > l - offset) > len = l - offset; > - memmove(a, b+offset, len); > + memmove(a, b + offset, len); > } > sdfree(b); > poperror(); > > - if(unit->inquiry[1] & SDinq1removable){ > + if (unit->inquiry[1] & SDinq1removable) { > qunlock(&unit->ctl); > poperror(); > } > @@ -871,35 +852,34 @@ sdbio(Chan* c, int write, char* a, int32_t len, > int64_t off) > return len; > } > > -static int32_t > -sdrio(SDreq* r, void* a, int32_t n) > +static int32_t sdrio(SDreq *r, void *a, int32_t n) > { > Proc *up = externup(); > void *data; > > - if(n >= SDmaxio || n < 0) > + if (n >= SDmaxio || n < 0) > error(Etoobig); > > data = nil; > - if(n){ > - if((data = sdmalloc(n)) == nil) > + if (n) { > + if ((data = sdmalloc(n)) == nil) > error(Enomem); > - if(r->write) > + if (r->write) > memmove(data, a, n); > } > r->data = data; > r->dlen = n; > > - if(waserror()){ > + if (waserror()) { > sdfree(data); > r->data = nil; > nexterror(); > } > > - if(r->unit->dev->ifc->rio(r) != SDok) > + if (r->unit->dev->ifc->rio(r) != SDok) > error(Eio); > > - if(!r->write && r->rlen > 0) > + if (!r->write && r->rlen > 0) > memmove(a, data, r->rlen); > sdfree(data); > r->data = nil; > @@ -911,8 +891,7 @@ sdrio(SDreq* r, void* a, int32_t n) > /* > * SCSI simulation for non-SCSI devices > */ > -int > -sdsetsense(SDreq *r, int status, int key, int asc, int ascq) > +int sdsetsense(SDreq *r, int status, int key, int asc, int ascq) > { > int len; > SDunit *unit; > @@ -923,11 +902,11 @@ sdsetsense(SDreq *r, int status, int key, int asc, > int ascq) > unit->sense[13] = ascq; > > r->status = status; > - if(status == SDcheck && !(r->flags & SDnosense)){ > + if (status == SDcheck && !(r->flags & SDnosense)) { > /* request sense case from sdfakescsi */ > len = sizeof unit->sense; > - if(len > sizeof r->sense-1) > - len = sizeof r->sense-1; > + if (len > sizeof r->sense - 1) > + len = sizeof r->sense - 1; > memmove(r->sense, unit->sense, len); > unit->sense[2] = 0; > unit->sense[12] = 0; > @@ -938,8 +917,7 @@ sdsetsense(SDreq *r, int status, int key, int asc, int > ascq) > return status; > } > > -int > -sdmodesense(SDreq *r, uint8_t *cmd, void *info, int ilen) > +int sdmodesense(SDreq *r, uint8_t *cmd, void *info, int ilen) > { > int len; > uint8_t *data; > @@ -948,27 +926,26 @@ sdmodesense(SDreq *r, uint8_t *cmd, void *info, int > ilen) > * Fake a vendor-specific request with page code 0, > * return the drive info. > */ > - if((cmd[2] & 0x3F) != 0 && (cmd[2] & 0x3F) != 0x3F) > + if ((cmd[2] & 0x3F) != 0 && (cmd[2] & 0x3F) != 0x3F) > return sdsetsense(r, SDcheck, 0x05, 0x24, 0); > - len = (cmd[7]<<8)|cmd[8]; > - if(len == 0) > + len = (cmd[7] << 8) | cmd[8]; > + if (len == 0) > return SDok; > - if(len < 8+ilen) > + if (len < 8 + ilen) > return sdsetsense(r, SDcheck, 0x05, 0x1A, 0); > - if(r->data == nil || r->dlen < len) > + if (r->data == nil || r->dlen < len) > return sdsetsense(r, SDcheck, 0x05, 0x20, 1); > data = r->data; > memset(data, 0, 8); > - data[0] = ilen>>8; > + data[0] = ilen >> 8; > data[1] = ilen; > - if(ilen) > - memmove(data+8, info, ilen); > - r->rlen = 8+ilen; > + if (ilen) > + memmove(data + 8, info, ilen); > + r->rlen = 8 + ilen; > return sdsetsense(r, SDok, 0, 0, 0); > } > > -int > -sdfakescsi(SDreq *r, void *info, int ilen) > +int sdfakescsi(SDreq *r, void *info, int ilen) > { > uint8_t *cmd, *p; > uint64_t len; > @@ -981,9 +958,9 @@ sdfakescsi(SDreq *r, void *info, int ilen) > /* > * Rewrite read(6)/write(6) into read(10)/write(10). > */ > - switch(cmd[0]){ > - case 0x08: /* read */ > - case 0x0A: /* write */ > + switch (cmd[0]) { > + case 0x08: /* read */ > + case 0x0A: /* write */ > cmd[9] = 0; > cmd[8] = cmd[4]; > cmd[7] = 0; > @@ -1002,48 +979,48 @@ sdfakescsi(SDreq *r, void *info, int ilen) > * Fail any command with a LUN except INQUIRY which > * will return 'logical unit not supported'. > */ > - if((cmd[1]>>5) && cmd[0] != 0x12) > + if ((cmd[1] >> 5) && cmd[0] != 0x12) > return sdsetsense(r, SDcheck, 0x05, 0x25, 0); > > - switch(cmd[0]){ > + switch (cmd[0]) { > default: > return sdsetsense(r, SDcheck, 0x05, 0x20, 0); > > - case 0x00: /* test unit ready */ > + case 0x00: /* test unit ready */ > return sdsetsense(r, SDok, 0, 0, 0); > > - case 0x03: /* request sense */ > - if(cmd[4] < sizeof unit->sense) > + case 0x03: /* request sense */ > + if (cmd[4] < sizeof unit->sense) > len = cmd[4]; > else > len = sizeof unit->sense; > - if(r->data && r->dlen >= len){ > + if (r->data && r->dlen >= len) { > memmove(r->data, unit->sense, len); > r->rlen = len; > } > return sdsetsense(r, SDok, 0, 0, 0); > > - case 0x12: /* inquiry */ > - if(cmd[4] < sizeof unit->inquiry) > + case 0x12: /* inquiry */ > + if (cmd[4] < sizeof unit->inquiry) > len = cmd[4]; > else > len = sizeof unit->inquiry; > - if(r->data && r->dlen >= len){ > + if (r->data && r->dlen >= len) { > memmove(r->data, unit->inquiry, len); > r->rlen = len; > } > return sdsetsense(r, SDok, 0, 0, 0); > > - case 0x1B: /* start/stop unit */ > + case 0x1B: /* start/stop unit */ > /* > - * nop for now, can use power management later. > - */ > + * nop for now, can use power management later. > + */ > return sdsetsense(r, SDok, 0, 0, 0); > > - case 0x25: /* read capacity */ > - if((cmd[1] & 0x01) || cmd[2] || cmd[3]) > + case 0x25: /* read capacity */ > + if ((cmd[1] & 0x01) || cmd[2] || cmd[3]) > return sdsetsense(r, SDcheck, 0x05, 0x24, 0); > - if(r->data == nil || r->dlen < 8) > + if (r->data == nil || r->dlen < 8) > return sdsetsense(r, SDcheck, 0x05, 0x20, 1); > > /* > @@ -1051,57 +1028,56 @@ sdfakescsi(SDreq *r, void *info, int ilen) > */ > len = unit->sectors - 1; > p = r->data; > - *p++ = len>>24; > - *p++ = len>>16; > - *p++ = len>>8; > + *p++ = len >> 24; > + *p++ = len >> 16; > + *p++ = len >> 8; > *p++ = len; > len = 512; > - *p++ = len>>24; > - *p++ = len>>16; > - *p++ = len>>8; > + *p++ = len >> 24; > + *p++ = len >> 16; > + *p++ = len >> 8; > *p++ = len; > - r->rlen = p - (uint8_t*)r->data; > + r->rlen = p - (uint8_t *)r->data; > return sdsetsense(r, SDok, 0, 0, 0); > > - case 0x9E: /* long read capacity */ > - if((cmd[1] & 0x01) || cmd[2] || cmd[3]) > + case 0x9E: /* long read capacity */ > + if ((cmd[1] & 0x01) || cmd[2] || cmd[3]) > return sdsetsense(r, SDcheck, 0x05, 0x24, 0); > - if(r->data == nil || r->dlen < 8) > + if (r->data == nil || r->dlen < 8) > return sdsetsense(r, SDcheck, 0x05, 0x20, 1); > /* > * Read capcity returns the LBA of the last sector. > */ > len = unit->sectors - 1; > p = r->data; > - *p++ = len>>56; > - *p++ = len>>48; > - *p++ = len>>40; > - *p++ = len>>32; > - *p++ = len>>24; > - *p++ = len>>16; > - *p++ = len>>8; > + *p++ = len >> 56; > + *p++ = len >> 48; > + *p++ = len >> 40; > + *p++ = len >> 32; > + *p++ = len >> 24; > + *p++ = len >> 16; > + *p++ = len >> 8; > *p++ = len; > len = 512; > - *p++ = len>>24; > - *p++ = len>>16; > - *p++ = len>>8; > + *p++ = len >> 24; > + *p++ = len >> 16; > + *p++ = len >> 8; > *p++ = len; > - r->rlen = p - (uint8_t*)r->data; > + r->rlen = p - (uint8_t *)r->data; > return sdsetsense(r, SDok, 0, 0, 0); > > - case 0x5A: /* mode sense */ > + case 0x5A: /* mode sense */ > return sdmodesense(r, cmd, info, ilen); > > - case 0x28: /* read */ > - case 0x2A: /* write */ > - case 0x88: /* read16 */ > - case 0x8a: /* write16 */ > + case 0x28: /* read */ > + case 0x2A: /* write */ > + case 0x88: /* read16 */ > + case 0x8a: /* write16 */ > return SDnostatus; > } > } > > -static int32_t > -sdread(Chan *c, void *a, int32_t n, int64_t off) > +static int32_t sdread(Chan *c, void *a, int32_t n, int64_t off) > { > Proc *up = externup(); > char *p, *e, *buf; > @@ -1112,19 +1088,19 @@ sdread(Chan *c, void *a, int32_t n, int64_t off) > int i, l, mm, status; > > offset = off; > - switch(TYPE(c->qid)){ > + switch (TYPE(c->qid)) { > default: > error(Eperm); > case Qtopctl: > - mm = 64*1024; /* room for register dumps */ > + mm = 64 * 1024; /* room for register dumps */ > p = buf = malloc(mm); > - if(p == nil) > + if (p == nil) > error(Enomem); > e = p + mm; > qlock(&devslock); > - for(i = 0; i < nelem(devs); i++){ > + for (i = 0; i < nelem(devs); i++) { > sdev = devs[i]; > - if(sdev && sdev->ifc->rtopctl) > + if (sdev && sdev->ifc->rtopctl) > p = sdev->ifc->rtopctl(sdev, p, e); > } > qunlock(&devslock); > @@ -1138,37 +1114,34 @@ sdread(Chan *c, void *a, int32_t n, int64_t off) > > case Qctl: > sdev = sdgetdev(DEV(c->qid)); > - if(sdev == nil) > + if (sdev == nil) > error(Enonexist); > > unit = sdev->unit[UNIT(c->qid)]; > - mm = 16*1024; /* room for register dumps */ > + mm = 16 * 1024; /* room for register dumps */ > p = malloc(mm); > - if(p == nil) > + if (p == nil) > error(Enomem); > - l = snprint(p, mm, "inquiry %.48s\n", > - (char*)unit->inquiry+8); > + l = snprint(p, mm, "inquiry %.48s\n", (char > *)unit->inquiry + 8); > qlock(&unit->ctl); > /* > * If there's a device specific routine it must > * provide all information pertaining to night geometry > * and the garscadden trains. > */ > - if(unit->dev->ifc->rctl) > - l += unit->dev->ifc->rctl(unit, p+l, mm-l); > - if(unit->sectors == 0) > + if (unit->dev->ifc->rctl) > + l += unit->dev->ifc->rctl(unit, p + l, mm - l); > + if (unit->sectors == 0) > sdinitpart(unit); > - if(unit->sectors){ > - if(unit->dev->ifc->rctl == nil) > - l += snprint(p+l, mm-l, > - "geometry %llu %lu\n", > - unit->sectors, unit->secsize); > + if (unit->sectors) { > + if (unit->dev->ifc->rctl == nil) > + l += snprint(p + l, mm - l, "geometry %llu > %lu\n", > + unit->sectors, unit->secsize); > pp = unit->part; > - for(i = 0; i < unit->npart; i++){ > - if(pp->valid) > - l += snprint(p+l, mm-l, > - "part %s %llu %llu\n", > - pp->SDperm.name, > pp->start, pp->end); > + for (i = 0; i < unit->npart; i++) { > + if (pp->valid) > + l += snprint(p + l, mm - l, "part > %s %llu %llu\n", > + pp->SDperm.name, > pp->start, pp->end); > pp++; > } > } > @@ -1180,21 +1153,20 @@ sdread(Chan *c, void *a, int32_t n, int64_t off) > > case Qraw: > sdev = sdgetdev(DEV(c->qid)); > - if(sdev == nil) > + if (sdev == nil) > error(Enonexist); > > unit = sdev->unit[UNIT(c->qid)]; > qlock(&unit->raw); > - if(waserror()){ > + if (waserror()) { > qunlock(&unit->raw); > decref(&sdev->r); > nexterror(); > } > - if(unit->state == Rawdata){ > + if (unit->state == Rawdata) { > unit->state = Rawstatus; > i = sdrio(unit->req, a, n); > - } > - else if(unit->state == Rawstatus){ > + } else if (unit->state == Rawstatus) { > status = unit->req->status; > unit->state = Rawcmd; > free(unit->req); > @@ -1212,10 +1184,9 @@ sdread(Chan *c, void *a, int32_t n, int64_t off) > } > } > > -static void legacytopctl(Cmdbuf*); > +static void legacytopctl(Cmdbuf *); > > -static int32_t > -sdwrite(Chan* c, void* a, int32_t n, int64_t off) > +static int32_t sdwrite(Chan *c, void *a, int32_t n, int64_t off) > { > Proc *up = externup(); > char *f0; > @@ -1227,21 +1198,21 @@ sdwrite(Chan* c, void* a, int32_t n, int64_t off) > SDunit *unit; > SDev *sdev; > > - switch(TYPE(c->qid)){ > + switch (TYPE(c->qid)) { > default: > error(Eperm); > case Qtopctl: > cb = parsecmd(a, n); > - if(waserror()){ > + if (waserror()) { > free(cb); > nexterror(); > } > - if(cb->nf == 0) > + if (cb->nf == 0) > error("empty control message"); > f0 = cb->f[0]; > cb->f++; > cb->nf--; > - if(strcmp(f0, "config") == 0){ > + if (strcmp(f0, "config") == 0) { > /* wormhole into ugly legacy interface */ > legacytopctl(cb); > poperror(); > @@ -1254,8 +1225,8 @@ sdwrite(Chan* c, void* a, int32_t n, int64_t off) > */ > ifc = nil; > sdev = nil; > - for(i=0; sdifc[i]; i++){ > - if(strcmp(sdifc[i]->name, f0) == 0){ > + for (i = 0; sdifc[i]; i++) { > + if (strcmp(sdifc[i]->name, f0) == 0) { > ifc = sdifc[i]; > -- You received this message because you are subscribed to the Google Groups "Akaros" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. For more options, visit https://groups.google.com/d/optout.
