1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #include <u.h>
- #include <libc.h>
- #include "scsireq.h"
- long
- SReinitialise(ScsiReq *rp)
- {
- uchar cmd[6];
- memset(cmd, 0, sizeof(cmd));
- cmd[0] = ScmdEInitialise;
- rp->cmd.p = cmd;
- rp->cmd.count = sizeof(cmd);
- rp->data.p = cmd;
- rp->data.count = 0;
- rp->data.write = 1;
- return SRrequest(rp);
- }
- long
- SRmmove(ScsiReq *rp, int transport, int source, int destination, int invert)
- {
- uchar cmd[12];
- memset(cmd, 0, sizeof(cmd));
- cmd[0] = ScmdMMove;
- cmd[2] = transport>>8;
- cmd[3] = transport;
- cmd[4] = source>>8;
- cmd[5] = source;
- cmd[6] = destination>>8;
- cmd[7] = destination;
- cmd[10] = invert & 0x01;
- rp->cmd.p = cmd;
- rp->cmd.count = sizeof(cmd);
- rp->data.p = cmd;
- rp->data.count = 0;
- rp->data.write = 1;
- return SRrequest(rp);
- }
- long
- SRestatus(ScsiReq *rp, uchar type, uchar *list, int nbytes)
- {
- uchar cmd[12];
- memset(cmd, 0, sizeof(cmd));
- cmd[0] = ScmdEStatus;
- cmd[1] = type & 0x07;
- cmd[4] = 0xFF;
- cmd[5] = 0xFF;
- cmd[7] = nbytes>>16;
- cmd[8] = nbytes>>8;
- cmd[9] = nbytes;
- rp->cmd.p = cmd;
- rp->cmd.count = sizeof(cmd);
- rp->data.p = list;
- rp->data.count = nbytes;
- rp->data.write = 0;
- return SRrequest(rp);
- }
|