| plan 9 kernel history: overview | file list | diff list |
1998/0327/port/devsd.c (diff list | history)
| 1998/0325/sys/src/9/port/devsd.c:231,247 – 1998/0327/sys/src/9/port/devsd.c:231,247 (short | long | prev | next) | ||
|
Change dev read and write to use vlong.
rsc Fri Mar 4 12:44:25 2005 | ||
| 1994/0913 | } | |
| 1997/0327 | static long | |
| 1998/0325 |
| |
| 1998/0327 | sdread(Chan *c, void *a, long n, vlong off) | |
| 1994/0913 | { | |
| 1998/0319 | ||
| 1995/0325 | if(c->qid.path & CHDIR) | |
| 1994/0913 | return devdirread(c, a, n, 0, 0, sdgen); | |
| 1998/0327 | return sdio(c, 0, a, n, off); | |
| 1994/0913 | } | |
| 1997/0327 | static long | |
| 1998/0325 |
| |
| 1998/0327 | sdwrite(Chan *c, char *a, long n, vlong off) | |
| 1994/0913 | { | |
| 1996/0607 | Disk *d; | |
| 1998/0325/sys/src/9/port/devsd.c:249,255 – 1998/0327/sys/src/9/port/devsd.c:249,255 | ||
| 1996/0607 | if((d->inquire[0] & 0x1F) == TypeCD) error(Eperm); | |
| 1994/0913 |
| |
| 1998/0327 | return sdio(c, 1, a, n, off); | |
| 1995/0108 | } | |
| 1997/0327 | Dev sddevtab = { | |
| 1998/0325/sys/src/9/port/devsd.c:354,366 – 1998/0327/sys/src/9/port/devsd.c:354,366 | ||
| 1994/0913 | Part *p; uchar *b; ulong block, n, max, x; | |
| 1998/0325 |
| |
| 1998/0327 | ulong offset; | |
| 1994/0913 | d = &disk[DRIVE(c->qid)]; p = &d->table[PART(c->qid)]; | |
| 1995/0403 | ||
| 1994/0913 |
| |
| 1998/0327 | block = (off / d->bsize) + p->beg; n = (off + len + d->bsize - 1) / d->bsize + p->beg - block; | |
| 1994/0913 | max = SCSImaxxfer / d->bsize; if(n > max) n = max; | |
| 1998/0325/sys/src/9/port/devsd.c:373,379 – 1998/0327/sys/src/9/port/devsd.c:373,379 | ||
| 1994/0913 | if(b == 0) | |
| 1996/0607 | return scsierrstr(STnomem); | |
| 1994/0913 |
| |
| 1998/0327 | offset = off % d->bsize; | |
| 1994/0913 | if(write) { if(offset || len % d->bsize) { x = scsibio(d->t, d->lun, SCSIread, b, n, d->bsize, block); | |