| plan 9 kernel history: overview | file list | diff list |
1995/0403/port/devsd.c (diff list | history)
| 1995/0329/sys/src/9/port/devsd.c:9,14 – 1995/0403/sys/src/9/port/devsd.c:9,21 (short | long | prev | next) | ||
| 1994/0913 | #include "../port/error.h" #include "devtab.h" | |
| 1995/0403 | enum { TypeDA = 0x00, /* Direct Access */ TypeWO = 0x04, /* Worm */ TypeCD = 0x05, /* CD-ROM */ TypeMO = 0x07, /* rewriteable Magneto-Optical */ }; | |
| 1994/0913 | enum { | |
| 1994/1228 | LogNpart = 4, | |
| 1995/0329/sys/src/9/port/devsd.c:51,56 – 1995/0403/sys/src/9/port/devsd.c:58,68 | ||
| 1994/0913 | static void sdrdpart(Disk*); static long sdio(Chan*, int, char*, ulong, ulong); | |
| 1995/0403 | static int types[] = { TypeDA, TypeWO, TypeCD, TypeMO, -1, }; | |
| 1994/0913 | static int | |
| 1995/0325 | sdgen(Chan *c, Dirtab*, long, long s, Dir *dirp) | |
| 1994/0913 | { | |
| 1995/0329/sys/src/9/port/devsd.c:93,99 – 1995/0403/sys/src/9/port/devsd.c:105,111 | ||
| 1994/0913 | dev = 0; for(;;) { d = &disk[ndisk]; | |
| 1995/0403 | dev = scsiinv(dev, types, &d->t, &d->inquire, d->id); | |
| 1994/0913 | if(dev < 0) break; | |
| 1995/0329/sys/src/9/port/devsd.c:140,147 – 1995/0403/sys/src/9/port/devsd.c:152,173 | ||
| 1994/0913 | d->size = s; d->bsize = b; | |
| 1995/0403 | switch(d->inquire[0] & 0x1F){ | |
| 1994/0913 | ||
| 1995/0403 | case TypeDA: case TypeWO: case TypeMO: sprint(d->vol, "sd%d", ndisk); break; case TypeCD: sprint(d->vol, "cd%d", ndisk); break; default: continue; } | |
| 1994/0913 | if(++ndisk >= Ndisk) break; d++; | |
| 1995/0329/sys/src/9/port/devsd.c:278,283 – 1995/0403/sys/src/9/port/devsd.c:304,315 | ||
| 1994/0913 | p++; d->npart = 2; | |
| 1995/0403 | if((d->inquire[0] & 0x1F) == TypeCD){ scsifree(b); qunlock(d); return; } | |
| 1994/0913 | scsibio(d->t, d->lun, SCSIread, b, 1, d->bsize, d->table[0].end-1); b[d->bsize-1] = '\0'; | |
| 1995/0329/sys/src/9/port/devsd.c:319,324 – 1995/0403/sys/src/9/port/devsd.c:351,359 | ||
| 1994/0913 | d = &disk[DRIVE(c->qid)]; p = &d->table[PART(c->qid)]; | |
| 1995/0403 | if(write && (d->inquire[0] & 0x1F) == TypeCD) error(Eperm); | |
| 1994/0913 | block = (offset / d->bsize) + p->beg; n = (offset + len + d->bsize - 1) / d->bsize + p->beg - block; | |