Annotation of 42BSD/sys/stand/up.old.c, revision 1.1.1.1

1.1       root        1: /*     up.old.c        6.1     83/07/29        */
                      2: 
                      3: #include "../machine/pte.h"
                      4: 
                      5: #include "../h/param.h"
                      6: #include "../h/inode.h"
                      7: #include "../h/fs.h"
                      8: 
                      9: #include "../vaxuba/upreg.h"
                     10: #include "../vaxuba/ubareg.h"
                     11: 
                     12: #include "saio.h"
                     13: #include "savax.h"
                     14: 
                     15: u_short        ubastd[] = { 0776700 };
                     16: char   up_gottype[MAXNUBA*8];
                     17: char   up_type[MAXNUBA*8];
                     18: extern struct st upst[];
                     19: 
                     20: upopen(io)
                     21:        register struct iob *io;
                     22: {
                     23:        register struct updevice *upaddr =
                     24:            (struct updevice *)ubamem(io->i_unit, ubastd[0]);
                     25:        register struct st *st;
                     26: 
                     27:        while ((upaddr->upcs1 & UP_DVA) == 0)
                     28:                ;
                     29:        if (up_gottype[io->i_unit] == 0) {
                     30:                up_type[io->i_unit] = upmaptype(io->i_unit, upaddr);
                     31:                if (up_type[io->i_unit] < 0)
                     32:                        _stop("unknown drive type");
                     33:                up_gottype[io->i_unit] = 1;
                     34:        }
                     35:        st = &upst[up_type[io->i_unit]];
                     36:        if (io->i_boff < 0 || io->i_boff > 7 || st->off[io->i_boff] == -1)
                     37:                _stop("up bad unit");
                     38:        io->i_boff = st->off[io->i_boff] * st->nspc;
                     39: }
                     40: 
                     41: upstrategy(io, func)
                     42:        register struct iob *io;
                     43: {
                     44:        int unit, nspc, ns, cn, tn, sn;
                     45:        daddr_t bn;
                     46:        int info;
                     47:        register struct updevice *upaddr =
                     48:            (struct updevice *)ubamem(io->i_unit, ubastd[0]);
                     49:        register struct st *st = &upst[up_type[io->i_unit]];
                     50: 
                     51:        unit = io->i_unit;
                     52:        bn = io->i_bn;
                     53:        cn = bn/st->nspc;
                     54:        sn = bn%st->nspc;
                     55:        tn = sn/st->nsect;
                     56:        sn = sn%st->nsect;
                     57:        upaddr->upcs2 = unit % 8;
                     58:        if ((upaddr->upds & UPDS_VV) == 0) {
                     59:                upaddr->upcs1 = UP_DCLR|UP_GO;
                     60:                upaddr->upcs1 = UP_PRESET|UP_GO;
                     61:                upaddr->upof = UPOF_FMT22;
                     62:        }
                     63:        if ((upaddr->upds & UPDS_DREADY) != UPDS_DREADY)
                     64:                _stop("up not ready");
                     65:        info = ubasetup(io, 1);
                     66:        upaddr->updc = cn;
                     67:        upaddr->upda = (tn << 8) + sn;
                     68:        upaddr->upba = info;
                     69:        upaddr->upwc = -io->i_cc / sizeof (short);
                     70:        if (func == READ)
                     71:                upaddr->upcs1 = UP_RCOM|UP_GO;
                     72:        else
                     73:                upaddr->upcs1 = UP_WCOM|UP_GO;
                     74:        do {
                     75:                DELAY(25);
                     76:        } while ((upaddr->upcs1 & UP_RDY) == 0);
                     77:        if (upaddr->upds & UPDS_ERR) {
                     78:                printf("up error: (cyl,trk,sec)=(%d,%d,%d) cs2=%b er1=%b er2=%b\n",
                     79:                    cn, tn, sn,
                     80:                    upaddr->upcs2, UPCS2_BITS, upaddr->uper1, UPER1_BITS,
                     81:                    upaddr->uper2, UPER2_BITS);
                     82:                return (-1);
                     83:        }
                     84:        ubafree(io, info);
                     85:        return (io->i_cc + (upaddr->upwc * sizeof (short)));
                     86: }
                     87: 
                     88: /*ARGSUSED*/
                     89: upioctl(io, cmd, arg)
                     90:        struct iob *io;
                     91:        int cmd;
                     92:        caddr_t arg;
                     93: {
                     94: 
                     95:        return (ECMD);
                     96: }

unix.superglobalmegacorp.com

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