| plan 9 kernel history: overview | file list | diff list |
1995/0723/pc/scsi.c (diff list | history)
| 1995/0722/sys/src/9/pc/scsi.c:30,36 – 1995/0723/sys/src/9/pc/scsi.c:30,36 (short | long | prev | next) | ||
| 1994/0908 | Target target[NTarget]; } Ctlr; | |
| 1995/0723 | static Ctlr* scsi[MaxScsi]; | |
| 1994/0908 | ||
| 1995/0328 | typedef struct Link Link; | |
| 1995/0722 | typedef struct Link | |
| 1995/0722/sys/src/9/pc/scsi.c:260,275 – 1995/0723/sys/src/9/pc/scsi.c:260,276 | ||
| 1994/0908 | cmd[0] = 0x25; cmd[1] = lun<<5; | |
| 1995/0723 | nbytes = 8; d = scsialloc(nbytes); | |
| 1994/0908 | if(d == 0) | |
| 1995/0723 | error(Enomem); | |
| 1994/0908 |
| |
| 1995/0405 |
| |
| 1995/0723 | s = scsiexec(t, SCSIread, cmd, sizeof(cmd), d, &nbytes); if(s == STok) { | |
| 1995/0405 | *size = (d[0]<<24)|(d[1]<<16)|(d[2]<<8)|(d[3]<<0); *bsize = (d[4]<<24)|(d[5]<<16)|(d[6]<<8)|(d[7]<<0); | |
| 1994/0908 | } | |
| 1995/0723 | scsifree(d); | |
| 1995/0405 | return s; | |
| 1993/0915 | } | |
| 1994/0908 | ||
| 1995/0722/sys/src/9/pc/scsi.c:394,419 – 1995/0723/sys/src/9/pc/scsi.c:395,419 | ||
| 1995/0722 | int scsidiskinfo(Target *t, char lun, uchar *data) { | |
| 1995/0723 | int s, nbytes; uchar cmd[10], *d; | |
| 1995/0722 |
| |
| 1995/0723 | nbytes = 4; | |
| 1995/0722 |
| |
| 1995/0723 | memset(cmd, 0, sizeof(cmd)); cmd[0] = 0x43; cmd[1] = lun<<5; cmd[7] = nbytes>>8; cmd[8] = nbytes>>0; | |
| 1995/0722 |
| |
| 1995/0723 | d = scsialloc(nbytes); if(d == 0) error(Enomem); | |
| 1995/0722 |
| |
| 1995/0723 | memset(d, 0, nbytes); s = scsiexec(t, SCSIread, cmd, sizeof(cmd), d, &nbytes); memmove(data, d, 4); scsifree(d); | |
| 1995/0722 | return s; } | |
| 1995/0722/sys/src/9/pc/scsi.c:421,427 – 1995/0723/sys/src/9/pc/scsi.c:421,427 | ||
| 1995/0722 | scsitrackinfo(Target *t, char lun, int track, uchar *data) { int s, nbytes; | |
| 1995/0723 | uchar cmd[10], *d; | |
| 1995/0722 | nbytes = 12; | |
| 1995/0722/sys/src/9/pc/scsi.c:432,437 – 1995/0723/sys/src/9/pc/scsi.c:432,503 | ||
| 1995/0722 | cmd[7] = nbytes>>8; cmd[8] = nbytes>>0; | |
| 1995/0723 | d = scsialloc(nbytes); if(d == 0) error(Enomem); memset(d, 0, nbytes); s = scsiexec(t, SCSIread, cmd, sizeof(cmd), d, &nbytes); memmove(data, d, 12); scsifree(d); | |
| 1995/0722 | return s; | |
| 1995/0723 | } int scsibufsize(Target *t, char lun, int size) { int s, nbytes; uchar cmd[6], *d; nbytes = 12; memset(cmd, 0, sizeof(cmd)); cmd[0] = 0x15; cmd[1] = lun<<5; cmd[4] = nbytes; d = scsialloc(nbytes); if(d == 0) error(Enomem); memset(d, 0, nbytes); d[3] = 8; d[9] = size>>16; d[10] = size>>8; d[11] = size>>0; s = scsiexec(t, SCSIwrite, cmd, sizeof(cmd), d, &nbytes); scsifree(d); return s; } int scsireadcdda(Target *t, char lun, void *b, long n, long bsize, long bno) { uchar cmd[10]; int s, nbytes; memset(cmd, 0, sizeof(cmd)); cmd[0] = 0xd8; cmd[1] = (lun<<5); cmd[2] = bno >> 24; cmd[3] = bno >> 16; cmd[4] = bno >> 8; cmd[5] = bno; cmd[6] = n>>24; cmd[7] = n>>16; cmd[8] = n>>8; cmd[9] = n; nbytes = n*bsize; s = scsiexec(t, SCSIread, cmd, sizeof(cmd), b, &nbytes); if(s < 0) { nbytes = Nscratch; scsireqsense(t, lun, t->scratch, &nbytes, 0); return -1; } return nbytes; | |
| 1995/0722 | } | |