Copyright ©1995 by NeXT Computer, Inc. All Rights Reserved.
| Defined Types
IOAddressRange |
| DECLARED IN driverkit/IODeviceInspector.h |
| unsigned | start; | |
| unsigned | length; |
| } IOAddressRange |
| DESCRIPTION Used to describe address ranges. |
| IOCache |
| DECLARED IN driverkit/driverTypes.h |
} IOCache
Used <<where?>> to specify caching. IO_CacheOff inhibits the cache. IOChannelCommand |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION |
| IOChannelDequeueOption |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION |
| IOChannelEnqueueOption |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION |
| IOCharParameter |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION Standard type for a character parameter value, used by the get/set parameter functionality provided by IODevice and IODeviceMaster. |
| IODDMMsg |
| DECLARED IN driverkit/debuggingMsg.h |
} IODDMMsg |
| DESCRIPTION The message format understood by the Driver Debugging Module. You don't usually have to use this message, as long as DDMViewer <<check>> is sufficient for your needs. |
| IODescriptorCommand |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION |
| IODeviceNumber |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION |
| IODeviceStyle |
| DECLARED IN driverkit/driverTypes.h |
} IODeviceStyle |
| DESCRIPTION Returned by the deviceStyle method to specify whether the driver is a direct device driver (one that directly controls hardware), an indirect device driver (one that controls hardware using a direct device driver), or a pseudodriver (one that controls no hardware). The driver style determines how it's configured into the system, as described <<somewhere>>. |
| IODisplayInfo |
| DECLARED IN bsd/dev/i386/displayDefs.h <<to be moved to driverkit/>> |
} IODisplayInfo; |
| DESCRIPTION This structure describes a video display. Each linear mode supported by an IOFrameBufferDisplay has a corresponding IODisplayInfo. <<Tell when it's used.>> The structure's fields are |
| width | Width, in pixels | |
| height | Height, in pixels | |
| totalWidth | Width including undisplayed pixels | |
| rowBytes | The number of bytes to get from one scanline to next. To determine this value, determine how many 8-bit bytes each pixel occupies (rounding up to an integer) and multiply this by the value of totalWidth. For example, a color display mode that uses 15 bits per pixel and has a totalWidth of 1024 has a rowBytes value of 2048. | |
| refreshRate | Monitor refresh setting, in Hz <<how do you decide this?>> | |
| frameBuffer | Pointer to origin of screen; untyped to force actual screen writes to be dependent on bitsPerPixel. The driver's initFromDeviceDescription: method should set this field to the value returned by mapFrameBufferAtPhysicalAddress:length:. | |
| bitsPerPixel | The memory space occupied by one pixel. 8-bit black and white display modes use the value IO_8BitsPerPixel, and "16-bit" color display modes that use 5 bits each for red, green, and blue use the value IO_15BitsPerPixel. See the documentation of the IOBitsPerPixel type for other values. | |
| colorSpace | Specifies the sample-encoding format.<<what does that mean?>> Typically, this value is either IO_DISPLAY_ONEISWHITECOLORSPACE (for monochrome modes) or IO_DISPLAY_RGBCOLORSPACE (for color modes). See the documentation of the IOColorSpace type for other values. | |
| flags | Flags used to indicate special requirements or conditions to DPS. Currently, this should always be zero. <<true? Or is it ignored?>> | |
| parameters | Driver-specific parameters. |
| Here's an array of IODisplayInfo structures for a driver that supports several monochrome and color modes: |
static const IODisplayInfo MyModes[MY_NUM_MODES] = {
{ 1024, 768, 1024, 1024, 66, 0,
IO_8BitsPerPixel, IO_DISPLAY_ONEISWHITECOLORSPACE, 0, 0 },
{ 1280, 1024, 2048, 2048, 68, 0,
IO_8BitsPerPixel, IO_DISPLAY_ONEISWHITECOLORSPACE, 0, 0 },
{ 800, 600, 800, 1600, 72, 0,
IO_15BitsPerPixel, IO_DISPLAY_RGBCOLORSPACE, 0, 0 },
{ 1024, 768, 1024, 2048, 72, 0,
IO_15BitsPerPixel, IO_DISPLAY_RGBCOLORSPACE, 0, 0 }
};
| These structures correspond to the display modes specified in the device configuration bundle's Localizable.strings file: |
"DisplayModes" = "Height:768 Width:1024 Refresh:66Hz ColorSpace: BW:8;
Height:1024 Width:1280 Refresh: 68Hz ColorSpace: BW:8;
Height: 768 Width:1024 Refresh: 72Hz ColorSpace: RGB:555/16;
Height: 600 Width: 800 Refresh: 72Hz ColorSpace: RGB:555/16";
| IODMAAlignment |
| DECLARED IN driverkit/driverTypes.h |
} IODMAAlignment |
| DESCRIPTION Used <<by whom?>> to specify DMA alignment. A field value of 0 means that alignment isn't restricted for values corresponding to the field. |
| IODMABuffer |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION Used as a machine-independent type for a machine-dependent DMA buffer.
SEE ALSO IOEISADMABuffer |
| IODMADirection |
| DECLARED IN driverkit/driverTypes.h |
} IODMADirection |
| DESCRIPTION Used <<where?>> to specify the direction of DMA. IO_DMARead indicates a transfer from the device into system memory; IO_DMAWrite indicates a transfer from system memory to the device. |
| IODMAStatus |
| DECLARED IN driverkit/driverTypes.h |
} IODMAStatus |
| DESCRIPTION Used <<where?>> to specify machine-independent DMA channel status. |
| IO_None | No appropriate status | |
| IO_Complete | DMA channel idle | |
| IO_Running | DMA channel running | |
| IO_Underrun | Underrun or overrun | |
| IO_BusError | Bus error | |
| IO_BufferError | DMA buffer error |
| IODMATransferMode |
| DECLARED IN driverkit/i386/directDevice.h |
} IODMATransferMode |
| DESCRIPTION Used only in the setTransferMode:forChannel: method of the EISA/ISA category of IODirectDevice. |
| IOEISADMABuffer |
| DECLARED IN driverkit/i386/driverTypes.h |
| DESCRIPTION Used as a machine-dependent type for a DMA buffer. |
| IOEISADMATiming |
| DECLARED IN driverkit/i386/directDevice.h |
} IOEISADMATiming |
| DESCRIPTION Used only in the setDMATiming:forChannel: method of the EISA/ISA category of IODirectDevice. |
| IOEISADMATransferWidth |
| DECLARED IN driverkit/i386/directDevice.h |
} IOEISADMATransferWidth |
| DESCRIPTION Used only in the setDMATransferWidth:forChannel: method of the EISA/ISA category of IODirectDevice. |
| IOEISAInterruptHandler |
| DECLARED IN driverkit/i386/driverTypes.h |
|
| DESCRIPTION |
| IOEISAPortAddress |
| DECLARED IN driverkit/i386/driverTypes.h |
| DESCRIPTION |
| IOEISAStopRegisterMode |
| DECLARED IN driverkit/i386/directDevice.h |
} IOEISAStopRegisterMode |
| DESCRIPTION Used only in the setStopRegisterMode:forChannel: method of the EISA/ISA category of IODirectDevice. |
| IOIncrementMode |
| DECLARED IN driverkit/i386/directDevice.h |
} IOIncrementMode |
| DESCRIPTION Used only in the setIncrementMode:forChannel: method of the EISA/ISA category of IODirectDevice. |
| IOInterruptHandler |
| DECLARED IN driverkit/driverTypes.h |
|
| DESCRIPTION |
| IOInterruptMsg |
| DECLARED IN driverkit/interruptMsg.h |
} IOInterruptMsg |
| DESCRIPTION The format of the message sent by the kernel to a driver's interrupt handler. |
| IOIntParameter |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION Standard type for an integer parameter value, used by the get/set parameter functionality provided by IODevice and IODeviceMaster. |
| IOIPCSpace |
| DECLARED IN driverkit/kernelDriver.h |
} IOIPCSpace |
| DESCRIPTION Used only by the IOConvertPort() function to specify which space to convert the port from and to. |
| IONamedValue |
| DECLARED IN driverkit/driverTypes.h |
} IONamedValue |
| DESCRIPTION Map between constants or enumerations and text description. |
| IOObjectNumber |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION |
| IOParameterName |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION Standard type for a parameter name, used by the get/set parameter functionality provided by IODevice and IODeviceMaster. |
| IORange |
| DECLARED IN driverkit/driverTypes.h |
} IORange |
| DESCRIPTION Indicates a range of values. Used for memory regions, port regions, and so on. |
| IOReturn |
| DECLARED IN driverkit/return.h |
| DESCRIPTION IOReturn values are returned by many Driver Kit classes. |
| IOSCSIRequest |
| DECLARED IN driverkit/scsiTypes.h |
} IOSCSIRequest |
| DESCRIPTION Used in the IOSCSIController protocol's executeRequest:buffer:client: method. |
| IOString |
| DECLARED IN driverkit/driverTypes.h |
| DESCRIPTION Standard type for an ASCII name, such as a device's name or type. |
| IOSwitchFunc |
| DECLARED IN driverkit/devsw.h |
| DESCRIPTION Used by IOAddToBdevsw() and IOAddToCdevsw() to specify UNIX-style entry points into a driver. |
| IOThread |
| DECLARED IN driverkit/generalFuncs.h |
| DESCRIPTION An opaque type used by the general-purpose functions to represent a thread. |
| IOThreadFunc |
| DECLARED IN driverkit/generalFuncs.h |
| DESCRIPTION Used by the general-purpose functions to specify the function that a thread should execute. |
| Symbolic Constants
Length Constants |
| DECLARED IN driverkit/driverTypes.h |
| IO_MAX_PARAMETER_NAME_LENGTH IO_MAX_PARAMETER_ARRAY_LENGTH |
| DESCRIPTION These constants are used to determine the maximum length of the following types: |
| IO_STRING_LENGTH | IOString | |
| IO_MAX_PARAMETER_NAME_LENGTH | IOParameterName | |
| IO_MAX_PARAMETER_ARRAY_LENGTH | IOIntParameter |
| Debugging String Length |
| DECLARED IN driverkit/debuggingMsg.h |
| DESCRIPTION The length of the string field in an IODebuggingMsg. |
| Debugging Messages |
| DECLARED IN driverkit/debuggingMsg.h |
| IO_DDM_MSG_BASE | The lowest ID an IODebuggingMsg can have | |
| IO_LOCK_DDM_MSG | Lock the Driver Debugging Module (DDM) | |
| IO_UNLOCK_DDM_MSG | Unlock the DDM | |
| IO_GET_DDM_ENTRY_MSG | Get an entry from the DDM | |
| IO_SET_DDM_MASK_MSG | Set the debugging mask for the DDM | |
| IO_CLEAR_DDM_MSG | Clear all entries from the DDM |
| DESCRIPTION Values for the header.msg_id field of an IODebuggingMsg. See the discussion of the DDM in Chapter 2 for more information on these messages. <<check>> |
| Return Values from the DDM |
| DECLARED IN driverkit/debuggingMsg.h |
| IO_DDM_SUCCESS | The message was received and understood | |
| IO_NO_DDM_BUFFER | The DDM has no entry at the specified offset | |
| IO_BAD_DDM_INDEX | The specified index isn't valid |
| DESCRIPTION Values for the status field of an IODebuggingMsg. |
| DDM Masks |
| DECLARED IN driverkit/debugging.h |
| DESCRIPTION This constant specifies the number of masks used by the Driver Debugging Module. |
| Interrupt Messages |
| DECLARED IN driverkit/interruptMsg.h |
| IO_INTERRUPT_MSG_ID_BASE | The lowest ID an IOInterruptMsg can have | |
| IO_TIMEOUT_MSG | ||
| IO_COMMAND_MSG | ||
| IO_DEVICE_INTERRUPT_MSG | Sent by the kernel when an interrupt occurs | |
| IO_DMA_INTERRUPT_MSG |
| IO_FIRST_UNRESERVED_INTERRUPT_MSG |
| DESCRIPTION Values for the header.msg_id field of an IOInterruptMsg. See the discussion of interrupts in Chapter 2 for more information on interrupt messages. <<check. WHO USES everything except IO_DEVICE_INTERRUPT_MSG, and how?>> |
| IOReturn Constants |
| DECLARED IN driverkit/return.h |
| IO_R_SUCCESS | No error occurred | |
| IO_R_NO_MEMORY | Couldn't allocate memory | |
| IO_R_RESOURCE | Resource shortage | |
| IO_R_VM_FAILURE | Miscellaneous virtual memory failure | |
| IO_R_INTERNAL | Internal library error | |
| IO_R_RLD | Error in loading a relocatable file | |
| IO_R_IPC_FAILURE | Error during IPC | |
| IO_R_NO_CHANNELS | No DMA channels are available | |
| IO_R_NO_SPACE | No address space is available for mapping | |
| IO_R_NO_DEVICE | No such device | |
| IO_R_PRIVILEGE | Privilege/access violation | |
| IO_R_INVALID_ARG | Invalid argument | |
| IO_R_BAD_MSG_ID | ??? | |
| IO_R_UNSUPPORTED | Unsupported function | |
| IO_R_INVALID | Should never be seen | |
| IO_R_LOCKED_READ | Device is read locked | |
| IO_R_LOCKED_WRITE | Device is write locked | |
| IO_R_EXCLUSIVE_ACCESS | Device is exclusive access and is already open | |
| IO_R_CANT_LOCK | Can't acquire requested lock | |
| IO_R_NOT_OPEN | Device not open | |
| IO_R_OPEN | Device is still open | |
| IO_R_NOT_READABLE | Reading not supported | |
| IO_R_NOT_WRITABLE | Writing not supported | |
| IO_R_IO | General I/O error | |
| IO_R_BUSY | Device is busy | |
| IO_R_NOT_READY | Device isn't ready | |
| IO_R_OFFLINE | Device is off line | |
| IO_R_ALIGN | DMA alignment error | |
| IO_R_MEDIA | Media error | |
| IO_R_DMA | DMA failure | |
| IO_R_TIMEOUT | I/O timeout | |
| IO_R_NOT_ATTACHED | The device or channel isn't attached | |
| IO_R_PORT_EXISTS | The device port already exists | |
| IO_R_CANT_WIRE | Can't wire down physical memory <<ever used? can you ever wire down physical | |
| memory?>> | ||
| IO_R_NO_INTERRUPT | No interrupt port is attached | |
| IO_R_NO_FRAMES | No DMA is enqueued |
| DESCRIPTION Values for IOReturns. |
| IODevice Parameter Names |
| DECLARED IN driverkit/IODevice.h |
| IO_CLASS_NAME | The value returned by + name | |
| IO_DEVICE_NAME | The value returned by | |
| IO_DEVICE_KIND | The value returned by | |
| IO_UNIT | The value returned by |
| DESCRIPTION |
| Null Constants |
| DECLARED IN driverkit/driverTypes.h |
| #define IO_NULL_VM_TASK | ((vm_task_t)0) |
| DESCRIPTION Standard null values, used in various places. |
| Unused Constants |
| DECLARED IN driverkit/driverTypes.h |
| IO_CC_START_READ IO_CC_START_WRITE IO_CC_ABORT IO_CC_ENABLE_DEVICE_INTERRUPTS IO_CC_DISABLE_DEVICE_INTERRUPTS IO_CC_ENABLE_INTERRUPTS IO_CC_DISABLE_INTERRUPTS IO_CC_CONNECT_FRAME_LOOP IO_CC_DISCONNECT_FRAME_LOOP IO_CDO_DONE IO_CDO_ALL IO_CDO_ENABLE_INTERRUPTS IO_CDO_ENABLE_INTERRUPTS_IF_EMPTY IO_CEO_END_OF_RECORD IO_CEO_DESCRIPTOR_INTERRUPT IO_CEO_ENABLE_INTERRUPTS IO_CEO_DESCRIPTOR_COMMAND IO_CEO_ENABLE_CHANNEL IO_MAX_BOARD_SIZE IO_MAX_NRW_SLOT_SIZE IO_MAX_SLOT_SIZE IO_NATIVE_SLOT_ID IO_NO_CHANNEL IO_NULL_SLOT_ID IO_NULL_DEVICE_TYPE IO_NULL_DEVICE_INDEX IO_NULL_DMA_ID IO_SLOT_DEVICE_TYPE |
| DESCRIPTION These constants aren't used by drivers for Intel-based computers. |
| Note:
Global Variables
IODDMMasks |
| DECLARED IN driverkit/debugging.h |
| DESCRIPTION The bitmask used to filter storing of debugging events. See the discussion of the Driver Debugging Module in Chapter 2 for more information. |
| IODMAStatusStrings |
| DECLARED IN driverkit/driverTypes.h |
| DECLARED IN Used as an argument to IOFindNameForValue() to convert an IODMAStatus value into an error string. |