mirror of
https://github.com/LIV2/lide.device.git
synced 2025-12-06 00:32:45 +00:00
Debug: Add traceCommand
Prints IO Command return status if enabled
This commit is contained in:
parent
3dc11d92bc
commit
07931d2822
3
Makefile
3
Makefile
@ -39,7 +39,8 @@ OBJ = driver.o \
|
||||
atapi.o \
|
||||
scsi.o \
|
||||
idetask.o \
|
||||
mounter.o
|
||||
mounter.o \
|
||||
debug.o
|
||||
|
||||
ASMOBJ = endskip.o
|
||||
|
||||
|
||||
238
debug.c
Normal file
238
debug.c
Normal file
@ -0,0 +1,238 @@
|
||||
#include <exec/io.h>
|
||||
#include <exec/errors.h>
|
||||
#include <devices/trackdisk.h>
|
||||
#include <devices/scsidisk.h>
|
||||
|
||||
#include "device.h"
|
||||
#include "debug.h"
|
||||
#include "newstyle.h"
|
||||
|
||||
#if DEBUG & DBG_CMD
|
||||
|
||||
void traceCommand(struct IOStdReq *req) {
|
||||
char *commandName;
|
||||
char *err;
|
||||
|
||||
switch (req->io_Command) {
|
||||
case CMD_CLEAR:
|
||||
commandName = "CMD_CLEAR";
|
||||
break;
|
||||
|
||||
case CMD_UPDATE:
|
||||
commandName = "CMD_UPDATE";
|
||||
break;
|
||||
|
||||
case CMD_READ:
|
||||
commandName = "CMD_READ";
|
||||
break;
|
||||
|
||||
case CMD_WRITE:
|
||||
commandName = "CMD_WRITE";
|
||||
break;
|
||||
|
||||
case TD_REMCHANGEINT:
|
||||
commandName = "TD_REMCHANGEINT";
|
||||
break;
|
||||
|
||||
case TD_PROTSTATUS:
|
||||
commandName = "TD_PROTSTATUS";
|
||||
break;
|
||||
|
||||
case TD_CHANGENUM:
|
||||
commandName = "TD_CHANGENUM";
|
||||
break;
|
||||
|
||||
case TD_CHANGESTATE:
|
||||
commandName = "TD_CHANGESTATE";
|
||||
break;
|
||||
|
||||
case TD_EJECT:
|
||||
commandName = "TD_EJECT";
|
||||
break;
|
||||
|
||||
case TD_GETDRIVETYPE:
|
||||
commandName = "TD_GETDRIVETYPE";
|
||||
break;
|
||||
|
||||
case TD_GETGEOMETRY:
|
||||
commandName = "TD_GETGEOMETRY";
|
||||
break;
|
||||
|
||||
case TD_MOTOR:
|
||||
commandName = "TD_MOTOR";
|
||||
break;
|
||||
|
||||
case TD_READ64:
|
||||
commandName = "TD_READ64";
|
||||
break;
|
||||
|
||||
case TD_WRITE64:
|
||||
commandName = "TD_WRITE64";
|
||||
break;
|
||||
|
||||
case TD_FORMAT64:
|
||||
commandName = "TD_FORMAT64";
|
||||
break;
|
||||
|
||||
case NSCMD_DEVICEQUERY:
|
||||
commandName = "NSCMD_DEVICEQUERY";
|
||||
break;
|
||||
|
||||
case NSCMD_TD_READ64:
|
||||
commandName = "NSCMD_TD_READ64";
|
||||
break;
|
||||
|
||||
case NSCMD_TD_WRITE64:
|
||||
commandName = "NSCMD_TD_WRITE64";
|
||||
break;
|
||||
|
||||
case NSCMD_TD_FORMAT64:
|
||||
commandName = "NSCMD_TD_FORMAT64";
|
||||
break;
|
||||
|
||||
case HD_SCSICMD:
|
||||
commandName = "HD_SCSICMD";
|
||||
break;
|
||||
|
||||
default:
|
||||
commandName = "UNKNOWN";
|
||||
break;
|
||||
}
|
||||
|
||||
switch (req->io_Error) {
|
||||
case 0:
|
||||
err = "OK";
|
||||
break;
|
||||
|
||||
case IOERR_OPENFAIL:
|
||||
err = "IOERR_OPENFAIL";
|
||||
break;
|
||||
|
||||
case IOERR_ABORTED:
|
||||
err = "IOERR_ABORTED";
|
||||
break;
|
||||
|
||||
case IOERR_NOCMD:
|
||||
err = "IOERR_NOCMD";
|
||||
break;
|
||||
|
||||
case IOERR_BADLENGTH:
|
||||
err = "IOERR_BADLENGTH";
|
||||
break;
|
||||
|
||||
case IOERR_BADADDRESS:
|
||||
err = "IOERR_BADADDRESS";
|
||||
break;
|
||||
|
||||
case IOERR_UNITBUSY:
|
||||
err = "IOERR_UNITBUSY";
|
||||
break;
|
||||
|
||||
case IOERR_SELFTEST:
|
||||
err = "IOERR_SELFTEST";
|
||||
break;
|
||||
|
||||
case HFERR_SelfUnit:
|
||||
err = "HFERR_SelfUnit";
|
||||
break;
|
||||
|
||||
case HFERR_DMA:
|
||||
err = "HFERR_DMA";
|
||||
break;
|
||||
|
||||
case HFERR_Phase:
|
||||
err = "HFERR_Phase";
|
||||
break;
|
||||
|
||||
case HFERR_Parity:
|
||||
err = "HFERR_Parity";
|
||||
break;
|
||||
|
||||
case HFERR_SelTimeout:
|
||||
err = "HFERR_SelTimeout";
|
||||
break;
|
||||
|
||||
case HFERR_BadStatus:
|
||||
err = "HFERR_BadStatus";
|
||||
break;
|
||||
|
||||
case HFERR_NoBoard:
|
||||
err = "HFERR_NoBoard";
|
||||
break;
|
||||
|
||||
case TDERR_NotSpecified:
|
||||
err = "TDERR_NotSpecified";
|
||||
break;
|
||||
|
||||
case TDERR_NoSecHdr:
|
||||
err = "TDERR_NoSecHdr";
|
||||
break;
|
||||
|
||||
case TDERR_BadSecPreamble:
|
||||
err = "TDERR_BadSecPreamble";
|
||||
break;
|
||||
|
||||
case TDERR_BadSecID:
|
||||
err = "TDERR_BadSecID";
|
||||
break;
|
||||
|
||||
case TDERR_BadHdrSum:
|
||||
err = "TDERR_BadHdrSum";
|
||||
break;
|
||||
|
||||
case TDERR_BadSecSum:
|
||||
err = "TDERR_BadSecSum";
|
||||
break;
|
||||
|
||||
case TDERR_TooFewSecs:
|
||||
err = "TDERR_TooFewSecs";
|
||||
break;
|
||||
|
||||
case TDERR_BadSecHdr:
|
||||
err = "TDERR_BadSecHdr";
|
||||
break;
|
||||
|
||||
case TDERR_WriteProt:
|
||||
err = "TDERR_WriteProt";
|
||||
break;
|
||||
|
||||
case TDERR_DiskChanged:
|
||||
err = "TDERR_DiskChanged";
|
||||
break;
|
||||
|
||||
case TDERR_SeekError:
|
||||
err = "TDERR_SeekError";
|
||||
break;
|
||||
|
||||
case TDERR_NoMem:
|
||||
err = "TDERR_NoMem";
|
||||
break;
|
||||
|
||||
case TDERR_BadUnitNum:
|
||||
err = "TDERR_BadUnitNum";
|
||||
break;
|
||||
|
||||
case TDERR_BadDriveType:
|
||||
err = "TDERR_BadDriveType";
|
||||
break;
|
||||
|
||||
case TDERR_DriveInUse:
|
||||
err = "TDERR_DriveInUse";
|
||||
break;
|
||||
|
||||
case TDERR_PostReset:
|
||||
err = "TDERR_PostReset";
|
||||
break;
|
||||
|
||||
default:
|
||||
err = "UNKNOWN";
|
||||
|
||||
}
|
||||
struct IDEUnit *unit = (struct IDEUnit *)req->io_Unit;
|
||||
LONG unitNum = unit->unitNum;
|
||||
|
||||
KPrintF("Unit: %ld - %s : Error: %s Actual: %ld\n", unitNum, commandName, err, req->io_Actual);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
16
debug.h
16
debug.h
@ -4,23 +4,33 @@
|
||||
*/
|
||||
#define DBG_INFO 1
|
||||
#define DBG_WARN 2
|
||||
#define DBG_TRACE 3
|
||||
#define DBG_TRACE 4
|
||||
#define DBG_CMD 8
|
||||
|
||||
#if DEBUG
|
||||
#include <clib/debug_protos.h>
|
||||
#endif
|
||||
|
||||
#if DEBUG & DBG_INFO
|
||||
#define Info KPrintF
|
||||
#else
|
||||
#define Info
|
||||
#endif
|
||||
|
||||
#if DEBUG >= DBG_WARN
|
||||
#if DEBUG & DBG_WARN
|
||||
#define Warn KPrintF
|
||||
#else
|
||||
#define Warn
|
||||
#endif
|
||||
|
||||
#if DEBUG >= DBG_TRACE
|
||||
#if DEBUG & DBG_TRACE
|
||||
#define Trace KPrintF
|
||||
#else
|
||||
#define Trace
|
||||
#endif
|
||||
|
||||
#if DEBUG & DBG_CMD
|
||||
void traceCommand(struct IOStdReq *req);
|
||||
#else
|
||||
#define traceCommand
|
||||
#endif
|
||||
3
device.h
3
device.h
@ -4,7 +4,8 @@
|
||||
*/
|
||||
#ifndef _DEVICE_H
|
||||
#define _DEVICE_H
|
||||
|
||||
#include <dos/filehandler.h>
|
||||
#include <stdbool.h>
|
||||
#define OAHR_MANUF_ID 5194
|
||||
#define BSC_MANUF_ID 2092
|
||||
|
||||
|
||||
5
driver.c
5
driver.c
@ -621,6 +621,11 @@ static void __attribute__((used, saveds)) begin_io(struct DeviceBase *dev asm("a
|
||||
Warn("Unknown command %d\n", ioreq->io_Command);
|
||||
ioreq->io_Error = IOERR_NOCMD;
|
||||
}
|
||||
|
||||
#if DEBUG & DBG_CMD
|
||||
traceCommand(ioreq);
|
||||
#endif
|
||||
|
||||
if (ioreq && !(ioreq->io_Flags & IOF_QUICK)) {
|
||||
ReplyMsg(&ioreq->io_Message);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user