Annotation of researchv10no/cmd/worm/oscsi/getstatus.c, revision 1.1.1.1

1.1       root        1: #include       <stddef.h>
                      2: #include       <stdio.h>
                      3: #include       "scsi.h"
                      4: #include       "juke.h"
                      5: 
                      6: struct Jstatus j_status;
                      7: 
                      8: static
                      9: dolun(struct Lunstatus *lun, uchar *u)
                     10: {
                     11:        lun->poweron = ((*u)&0x80) == 0;
                     12:        lun->diskin = ((*u)&0x40) != 0;
                     13:        lun->ready = ((*u)&0x01) != 0;
                     14:        u++;
                     15:        lun->diskindrive = ((*u)&0x80) != 0;
                     16:        lun->driveshelf = (*u)&0x7F;
                     17:        u++;
                     18:        lun->shelfvalid = ((*u)&0x80) != 0;
                     19:        lun->retshelf = (*u)&0x7F;
                     20: }
                     21: 
                     22: j_getstatus(char *err)
                     23: {
                     24:        struct scsi_cmd cmd;
                     25:        struct scsi_return ret;
                     26:        int i;
                     27: 
                     28:        set6(cmd, 0x1D, 0, 0, 0, 10, 0);
                     29:        memset(cmd.data, 0, 10);
                     30:        cmd.data[0] = 0xE2;
                     31:        if(s_io(1, &cmd, 10, &ret, 0, err))
                     32:                return(-1);
                     33:        set6(cmd, 0x1C, 0, 0, 0, 128, 0);
                     34:        if(s_io(0, &cmd, 0, &ret, 128, err))
                     35:                return(-1);
                     36:        for(i = 0; i < 8; i++)
                     37:                dolun(&j_status.lun[i], &ret.data[16+4*i]);
                     38:        for(i = 0; i < NSHELF; i++)
                     39:                j_status.shelf[i] = ret.data[48+i];
                     40:        j_status.iounit = ret.data[98];
                     41:        j_status.carrier = ret.data[99];
                     42:        j_status.udrive = ret.data[100];
                     43:        j_status.ldrive = ret.data[101];
                     44:        return(0);
                     45: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.