summaryrefslogtreecommitdiff
path: root/sbin/pdisk/DoSCSICommand.h
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/pdisk/DoSCSICommand.h')
-rw-r--r--sbin/pdisk/DoSCSICommand.h130
1 files changed, 130 insertions, 0 deletions
diff --git a/sbin/pdisk/DoSCSICommand.h b/sbin/pdisk/DoSCSICommand.h
new file mode 100644
index 00000000000..34d7e6cd8dd
--- /dev/null
+++ b/sbin/pdisk/DoSCSICommand.h
@@ -0,0 +1,130 @@
+/*
+ * DoScsiCommand.h -
+ *
+ * Modifed by Eryk Vershen (eryk@apple.com)
+ * from an original by Martin Minow
+ */
+
+/*
+ * Copyright 1993-1998 by Apple Computer, Inc.
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appears in all copies and
+ * that both the copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * APPLE COMPUTER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL APPLE COMPUTER BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
+ * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef __DoScsiCommand__
+#define __DoScsiCommand__
+
+#include <SCSI.h>
+#include "MacSCSICommand.h"
+
+
+/*
+ * Defines
+ */
+#ifndef EXTERN
+#define EXTERN extern
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#define FALSE 0
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#define kOriginalSCSIBusAdaptor (0xFF)
+
+#define SameSCSIDevice(a, b) ((*((UInt32 *) &a)) == (*((UInt32 *) &b)))
+
+/*
+ * Cheap 'n dirty memory clear routine.
+ */
+#define CLEAR(dst) clear_memory((void *) &dst, sizeof dst)
+
+
+/*
+ * Types
+ */
+#if !defined(__NewTypesDefined__)
+#define __NewTypesDefined__
+typedef signed char SInt8;
+typedef signed short SInt16;
+typedef signed long SInt32;
+typedef unsigned char UInt8;
+typedef unsigned short UInt16;
+typedef unsigned long UInt32;
+typedef unsigned long ItemCount;
+typedef unsigned long ByteCount;
+#endif
+
+
+/*
+ * Global Constants
+ */
+enum {
+ bit0 = (1 << 0),
+ bit1 = (1 << 1),
+ bit2 = (1 << 2),
+ bit3 = (1 << 3),
+ bit4 = (1 << 4),
+ bit5 = (1 << 5),
+ bit6 = (1 << 6),
+ bit7 = (1 << 7)
+};
+
+
+/*
+ * Global Variables
+ */
+EXTERN int gSCSIHiBusID;
+EXTERN SCSIExecIOPB *gSCSIExecIOPBPtr;
+EXTERN UInt32 gSCSIExecIOPBPtrLen;
+
+
+/*
+ * Forward declarations
+ */
+void AllocatePB();
+Boolean IsIllegalRequest(OSErr scsiStatus, const SCSI_Sense_Data *senseDataPtr);
+Boolean IsNoMedia(OSErr scsiStatus, const SCSI_Sense_Data *senseDataPtr);
+/*
+ * All SCSI Commands come here.
+ * if scsiDevice.busID == kOriginalSCSIBusAdaptor, IM-IV SCSI will be called.
+ * scsiFlags should be scsiDirectionNone, scsiDirectionIn, or scsiDirectionOut
+ * actualTransferCount may be NULL if you don't care.
+ * Both old and new SCSI return SCSI Manager 4.3 errors.
+ *
+ * DoSCSICommand throws really serious errors, but returns SCSI errors such
+ * as dataRunError and scsiDeviceNotThere.
+ */
+OSErr DoSCSICommand(
+ DeviceIdent scsiDevice,
+ ConstStr255Param currentAction,
+ const SCSI_CommandPtr callerSCSICommand,
+ Ptr dataBuffer,
+ ByteCount dataLength,
+ UInt32 scsiFlags,
+ ByteCount *actualTransferCount,
+ SCSI_Sense_Data *sensePtr,
+ StringPtr senseMessage
+);
+
+
+#endif /* __DoScsiCommand__ */