Chapter 1 Storage Drivers

Size: px
Start display at page:

Download "Chapter 1 Storage Drivers"

Transcription

1 1.0 Storage Drivers Page 1 of 79 Chapter 1 Storage Drivers This chapter contains the following information: 1.1 Storage Driver Architecture 1.2 Storage Drivers and Device Objects 1.3 System Header Files for Storage Drivers 1.4 Restrictions on Storage Drivers in the Paging Path Subsequent chapters contain guidelines for designing the following kinds of Windows NT kernelmode storage drivers: An operating system-independent miniport driver for a vendor-specific SCSI HBA (see Chapter 2) A miniport driver for a non-scsi storage adapter (see Chapter 2) A class driver for a new type of peripheral device (see Chapter 3) An operating system-independent tape miniclass driver for a vendor-specific tape device (see Chapter 4) A changer miniclass driver for a vendor-specific medium changer device (see Chapter 5) A filter driver for a peripheral device of a type that already has a class driver (see Chapter 6) 1.1 Storage Driver Architecture Windows NT /Windows 2000 class and filter drivers for peripheral storage devices act as an interface between any intermediate or highest level drivers layered above the class or filter driver and a system-supplied port driver. I/O requests from a user application or kernel component reach storage class drivers through Windows NT/Windows 2000 I/O System Services and one or more intermediate or highest level drivers, such as a file system driver. Storage class drivers translate the standard IRPs they get into IRPs with system-defined SCSI request blocks (SRBs) containing SCSI-2 command descriptor blocks (CDBs) before sending each IRP on to the next lower driver. A storage port driver translates SRBs from class drivers into bus-specific commands which it sends to the storage HBA, through an I/O bus driver and possibly one or more filter drivers. Figure 1.1 shows the layered architecture of Windows NT/Windows 2000 storage drivers.

2 1.0 Storage Drivers Page 2 of 79 Figure 1.1 Windows NT/Windows 2000 Storage Driver Architecture Starting from the bottom of the figure, the following describes each type of storage driver: 1. A storage port driver defines an interface to all Windows NT storage class drivers, including the system-supplied disk, tape, CDROM, DVD, and changer class drivers. This port/class interface insulates class drivers from adapter-specific requirements of the host bus adapter to which their respective devices are connected. A storage port driver also synchronizes access to the bus for all drivers of devices on the corresponding HBA. The system supplies storage port drivers for SCSI, IDE, and IEEE 1394 adapters. A storage port driver receives SRBs from the next higher driver (a storage class driver or intervening filter driver) and processes them as follows: ϒ The storage port driver for a SCSI bus passes SRBs with CDBs on to an operating system-independent, HBA-specific SCSI miniport driver, which is dynamically linked to the SCSI port driver and provides hardware-specific support for a particular SCSI HBA. For information about implementing a SCSI miniport driver, see Chapter 2. ϒ The storage port driver for an IDE/ATAPI or IEEE 1394 bus translates the SRBs received from the storage class driver into the format required by the underlying adapter for example, repackaging CDBs according to a bus-specific transport protocol, or translating them into a different format, thereby insulating upper level drivers from peculiarities of the underlying bus. 2. An upper or lower storage filter driver supports device-specific functionality not provided by a system-supplied storage class driver. A lower filter storage driver monitors SRBs and/or IRPs issued by a storage class driver and modifies them as needed before passing them to the next lower driver (a storage port driver or another storage filter driver).

3 1.0 Storage Drivers Page 3 of 79 For information about implementing a storage filter driver, see Chapter A storage class driver uses the well-established SCSI port/class interface to control a device of its type on any bus for which the system provides a storage port driver. A class driver is specific to a particular class of device for example, one class driver can run all CD-ROM devices on any supported bus; another can control all disk devices. The storage class driver handles I/O requests from user applications or higher level drivers by building SRBs containing CDBs and issuing those SRBs to the next lower driver (a storage port driver or intervening filter driver), just as if the device were a SCSI device. The implementation of a storage class driver is transparent to upper level drivers. A class driver for a tape or medium changer device is implemented as a device-specific miniclass driver that links to a system-supplied class driver. System-supplied class drivers for other storage devices, such as disk and CD-ROM/DVD, are implemented as single monolithic drivers. For information about implementing a storage class driver, see Chapter 3. For information about implementing a tape or changer miniclass driver, see Chapter 4 and Chapter 5, respectively. 4. An upper filter storage driver intercepts IRPs from user applications and still higher level drivers and might modify them before passing them to the next lower driver (a storage class driver or another storage filter driver), or might monitor performance of the underlying device. The type of bus to which a device is attached and the implementation of its storage port driver are transparent to upper level drivers. A storage port driver might be implemented according to the port/miniport architecture, like the SCSI port driver; as a monolithic driver that controls a single, standard piece of hardware, such as the IDE/ATAPI port driver; or as a filter driver that translates SRBs into the format required by a different driver stack, such as the IEEE 1394 port driver. The system-supplied SCSI port driver can also act as an interface between a storage class driver and a SCSI miniport that controls a nonscsi storage device of the same type. For example, rather than writing a standard Windows NT driver for a new disk-array controller, a driver writer can save considerable design, development, and debugging effort by writing a pseudoscsi miniport driver that links to the system SCSI port driver and uses the interface it provides. Such a miniport is required to translate incoming SCSI commands into device-specific commands and support higher level Windows NT drivers as if it were a SCSI HBA miniport. On the other hand, the system-supplied port and class drivers handle much necessary work on such a pseudoscsi miniport's behalf, including registry accesses during initialization, all resource and object allocations, synchronization, presizing requested transfers to suit the capabilities of the miniport's device, and retrying requests. For more detailed information about SRBs, see the Kernel-Mode Driver Reference. For device-typespecific information about CDBs, consult the ANSI X X SCSI-2 standard. 1.2 Storage Drivers and Device Objects

4 1.0 Storage Drivers Page 4 of 79 The storage device stack consists of a tree of device objects created by the drivers that are involved in handling I/O to storage devices on the system. The root of this tree is a functional device object (FDO) for a storage adapter or for another driver stack integrated with the storage stack. The leaves of this tree are device objects for use by file systems and user-mode applications. Like any PnP driver, a storage class or storage filter driver adds itself to the tree in its AddDevice routine by creating a device object with IoCreateDevice and attaching it to the device stack with IoAttachDeviceToDeviceStack, using the pointer to the device object passed to the driver's AddDevice routine by the PnP Manager at initialization. IoAttachDeviceToDeviceStack attaches the new device object to the current top of the device stack. A tape miniclass, medium changer miniclass, or SCSI miniport driver is not required to create a device object and attach it to the device stack. Instead, the system-supplied tape class, changer class, or SCSI port driver handles these tasks on behalf of the miniclass/miniport, calling miniclass/miniport routines to gather the data needed to create the device object. For information about designing PnP drivers, see the Setup, Plug and Play, and Power Management Design Guide. For information about PnP-related IoXxx routines, see the Setup, Plug and Play, and Power Management Reference Device Object Example for a SCSI HBA Figure 1.2 shows the device objects that are created for system with a PCI IEEE 1394 controller and a PCI SCSI adapter with a CD-ROM and partitionable disk device attached. Objects for devices attached to the IEEE 1394 controller are shown and described in Section

5 1.0 Storage Drivers Page 5 of 79 Figure 1.2 Device Object Tree for CD-ROM and Disk Devices on a SCSI HBA Starting from the bottom of the figure, the following describes each device object and its associated driver: 1. The storage bus driver creates the FDO for the storage bus and attaches it to the storage bus PDO created by the PnP Manager (not shown in this figure). The structure of the device object tree below the storage bus FDO depends on the storage bus and how it is integrated into the system. Storage drivers above the port driver level do not interact with any of these lower objects. Figure 1.2 shows the storage bus FDO created by the PCI bus driver for a system with a PCI bus. 2. The PCI bus driver enumerates and creates a PDO for each storage adapter on its bus. The corresponding storage port driver creates an FDO and attaches it to the PDO for its adapter. Figure 1.2 shows two adapter PDOs: one for an IEEE 1394 controller (described in Section 1.2.2) and another for a SCSI HBA. The SCSI port driver and an associated miniport create an FDO and attach it to the SCSI adapter PDO. 3. The storage port driver virtualizes target devices by creating a PDO for each target device attached to its adapter. Figure 1.2 shows two such PDOs created by the SCSI port/miniport drivers: one for a hard drive and one for a CD-ROM. 4. One or more filter drivers can attach a filter device object (filter DO) to a target device PDO exported by a storage port driver. Such a filter driver can intercept and alter requests sent by the class driver to the target device, for example, to work around device-specific problems without requiring hardware-specific changes to the generic class or port drivers. Figure 1.2 shows a filter DO attached by a CD audio filter driver to the CD-ROM's PDO. 5. A storage class driver creates an FDO and attaches it to next lower device object, which is either a target device PDO exported by a storage port driver or a filter DO attached to the stack by an intervening filter driver. The class driver issues all subsequent requests to the storage

6 1.0 Storage Drivers Page 6 of 79 device through the lower driver's device object. Figure 1.2 shows two such FDOs: one that represents a CD-ROM device, and one that represents Partition 0 of a hard drive. Partition 0 represents the entire raw disk, and always exists whether the drive is partitioned or not. 6. A class driver can also act as a bus driver, returning a list of PDOs when the PnP Manager queries for its child devices (IRP_MN_QUERY_DEVICE_RELATIONS with BusRelations). For example, a driver of a partitioned media device such as a removable disk might return a list of PDOs representing its partitions. Higher level drivers attach FDOs to these PDOs. Figure 1.2 shows three such PDOs, each representing a disk partition that can be addressed as a target device. In the case of a fixed disk, the partition manager attaches to the FDO that represents Partition 0 and handles PnP operations on behalf of all partitions. The activities of the partition manager are transparent to the disk class driver and any upper level filter drivers. 7. One or more filter drivers can be attached above a class driver. Unlike a lower level filter driver, an upper level filter driver intercepts IRPs sent to the class driver, and can alter them before forwarding them to next lower device object. The filter driver can intercept any readwrite requests and transform the data as necessary, as well as define additional I/O control codes (IOCTLs), for example, to enable a user application to supply passwords or other related information. Figure 1.2 shows a filter DO created by a disk-encryption filter driver and attached to the disk PDO for partition Device Object Example for an IEEE 1394 Controller Figure 1.3 shows the device objects that are created for system with a PCI IEEE 1394 controller with an IEEE 1394 CD-ROM attached. Device objects for devices attached to the SCSI adapter are described in Section

7 1.0 Storage Drivers Page 7 of 79 Figure 1.3 Device Object Tree for a CD-ROM Device on an IEEE 1394 Controller Starting from the bottom of the figure, the following describes each device object and its corresponding driver: 1. For a description of the device tree from the storage bus FDO up to the adapter PDOs, see Section The highest driver in the IEEE 1394 driver stack creates an SBP2 disk device PDO. The IEEE 1394 driver stack ultimately issues SBP2 commands to the target CD-ROM device on the IEEE 1394 bus. 3. The system-supplied IEEE 1394 storage port driver is implemented as a filter driver that creates a filter DO and attaches it to the SBP2 disk device PDO. The IEEE 1394 storage port driver translates SRBs from the CD-ROM class driver into SBP2 commands which are issued to the underlying IEEE 1394 driver stack. The interface this driver presents to higher level storage drivers is identical to that presented by the SCSI port/miniport driver described in Section The CD-ROM class driver creates an FDO and attaches it to the next lower device object, which is either the SBP2 port filter DO or another filter DO attached to the stack by an intervening filter driver. The class driver issues all subsequent requests to the device through the lower driver's device object Device Object Example for a PCI IDE Controller Figure 1.4 shows the device objects that are created for a system using a PCI IDE controller that has two IDE disks attached to one channel and an IDE CD-ROM attached to the other.

8 1.0 Storage Drivers Page 8 of 79 Figure 1.4 Device Object Tree for CD-ROM and Disk Devices on an IDE controller Starting from the bottom of the figure, the following describes each device object and its associated driver: 1. The PCI bus driver creates an FDO for the PCI bus and attaches it to the PCI bus PDO created by the PnP Manager (not shown in this figure). 2. The PCI bus driver enumerates the adapters and controllers on its bus, including all the IDE controllers, and creates a PDO for each one. 3. The IDE controller driver, together with its IDE controller minidriver, create an FDO and attach it to the PDO for the controller. 4. The IDE controller driver "enumerates" the controller's channels. In effect, this means that it creates two PDOs, one for each of the controller's channels, and that it attaches both channel PDOs to the controller FDO. 5. The IDE channel driver creates an FDO and attaches it to the PDO for the channel. 6. The IDE channel driver enumerates the devices on its channel and creates a PDO for each device. Figure 1.3 shows three such PDOs that were created by the IDE channel driver: two hard drive PDOs that were created by the channel driver for the controller's first channel, and a CD-ROM PDO that was created by the channel driver for the controller's second channel. 7. The disk class driver creates an FDO and attaches it to the associated disk PDO, exactly as in the case of the SCSI, and the CD-ROM driver creates an FDO and attaches it to the associated

9 1.0 Storage Drivers Page 9 of 79 CD-ROM PDO. As in the case of the SCSI, a filter driver DO can be inserted between the device PDO and the device FDO. Figure 1.3 illustrates this using a CD Audio Filter DO that can be optionally placed just above the CD-ROM PDO. 1.3 System Header Files for Storage Drivers The system-supplied storage drivers include the header file scsi.h, which contains SCSI-2-compliant definitions for CDBs and other structures used by most SCSI-2-compliant drivers. This header file includes srb.h, which defines the interfaces provided by the system-supplied port drivers to higher level storage class and filter drivers. System-supplied class and filter drivers also can include the header file classpnp.h so they can call the ClassXxx routines provided by classpnp.c. The Windows 2000 DDK provides classpnp.h and classpnp.c as sample source code. However, classpnp.c should not be considered a system-supplied library for all future storage class drivers. Both classpnp.h and classpnp.c are subject to change without notice. operating system-independent SCSI miniport drivers, which can be designed to run both with all platforms of Microsoft Windows NT /Windows 2000 and with x86-only Microsoft Windows systems, include the system-supplied header files miniport.h and scsi.h, which includes srb.h. Tape miniclass drivers include minitape.h. Medium changer miniclass drivers include mcd.h. 1.4 Restrictions on Storage Drivers in Paging Path A driver is in the "paging path" if it participates in I/O operations on the paging file. To prevent deadlock, the I/O routines of such drivers (DispatchRead, DispatchWrite, and DeviceControl routines) must not contain pageable code, and they must never attempt to access pageable memory. In the case of storage drivers, I/O and DeviceControl routines must never contain pageable code, even if the storage driver is not in the paging path. This is because I/O and DeviceControl routines can be called at IRQL > PASSIVE_LEVEL, and the in-paging I/O that services a page fault takes place at IRQL = APC_LEVEL. By default, the code for kernel-mode drivers is not pageable, nor is the global memory used by

10 1.0 Storage Drivers Page 10 of 79 kernel-mode drivers pageable. If a driver routine does no I/O and runs at IRQL = PASSIVE_LEVEL, as is the case with routines such as DriverEntry, Reinitialize, and Unload, then its code can be made pageable by means of the #pragma_alloc_text() compiler directive. It can then be locked and unlocked dynamically at run-time by calling memory manager routines MmLockPagableCodeSection () and MmUnlockPagableImageSection() (See MmLockPagableCodeSection and MmUnlockPagableImageSection for a discussion of these routines and for a discussion of the #pragma_alloc_text() directive). Chapter 2 SCSI Miniport Drivers This chapter contains the following information: 2.1 Supporting Plug and Play in a SCSI Miniport Driver Registry Entries for Plug and Play SCSI Miniport Drivers SCSI Miniport Initialization Under Plug and Play Converting a Windows NT 4.0 SCSI Miniport for Plug and Play 2.2 Required and Optional SCSI Miniport Routines 2.3 SCSI Miniport Driver's DriverEntry Routine Calling ScsiPortInitialize Storage Driver's Return from DriverEntry 2.4 SCSI Miniport Driver's HwScsiFindAdapter Routine Calling ScsiPortXxx from HwScsiFindAdapter Port-Driver-Supplied ConfigInfo for HwScsiFindAdapter Setting up ConfigInfo in HwScsiFindAdapter Setting Again and Returning from HwScsiFindAdapter Returning Control from HwScsiFindAdapter 2.5 SCSI Miniport Driver's HwScsiInitialize Routine 2.6 SCSI Miniport Driver's HwScsiStartIo Routine

11 1.0 Storage Drivers Page 11 of Modifying SRBs Handling SRB_FUNCTION_EXECUTE_SCSI Handling SRB_FUNCTION_ABORT_COMMAND Handling SRB_FUNCTION_RESET_BUS Handling SRB_FUNCTION_RESET_DEVICE Handling SRB_FUNCTION_FLUSH and SRB_FUNCTION_SHUTDOWN Handling SRB_FUNCTION_IO_CONTROL Handling SRB_FUNCTION_WMI Handling Unsupported SRB_FUNCTION_XXX Return from HwScsiStartIo Other SRB_FUNCTION_XXX Requests 2.7 SCSI Miniport Driver's HwScsiDmaStarted Routine 2.8 SCSI Miniport Driver's HwScsiResetBus Routine 2.9 SCSI Miniport Driver's HwScsiInterrupt Routine Deferring Interrupt-Driven I/O from HwScsiInterrupt SCSI Miniport Driver's HwScsiEnableInterruptsCallback Routine SCSI Miniport Driver's HwScsiDisableInterruptsCallback Routine 2.10 SCSI Miniport Driver's HwScsiTimer Routine 2.11 SCSI Miniport Driver's HwScsiAdapterState Routine 2.12 SCSI Miniport Driver's HwScsiAdapterControl Routine 2.13 Error Handling in SCSI Miniport Drivers Windows NT /Windows 2000 SCSI miniport drivers are HBA-specific but operating systemindependent. That is, each miniport driver links itself with the system-supplied SCSI port driver, which is a dynamic-link library (DLL), and calls only the port driver's ScsiPortXxx routines to communicate with the system and its HBA. Such SCSI miniport drivers run on other Microsoft operating systems that support Win32 applications and also export the ScsiPortXxx routines.

12 1.0 Storage Drivers Page 12 of 79 Note that any SCSI miniport driver that calls routines other than the ScsiPortXxx cannot run in both Microsoft operating system environments. To remain portable across Microsoft Windows systems, including Windows NT/Windows 2000, SCSI miniport drivers must call only the system-supplied ScsiPortXxx. A SCSI miniport can be a Plug and Play driver, or it can run as a legacy driver that does not participate in Plug and Play operations such as resource redistribution or power management. The primary differences between a Plug and Play and a legacy miniport driver are the order in which initialization routines are called and enforcement of certain restrictions that were applied to miniports in Windows NT 4.0 but not enforced. 2.1 Supporting Plug and Play in a SCSI Miniport Driver Although Windows 2000 is a Plug and Play operating system, by default SCSI miniports are run as legacy drivers. The HBA for a legacy miniport driver cannot be removed from the system while it is running, nor are legacy miniports automatically detected when added to a running system. These limitations might be acceptable for certain HBAs, but SCSI miniports for PCMCIA/CardBus HBAs and HBAs in laptops should support Plug and Play. A Plug and Play miniport must implement an HwScsiAdapterControl routine to stop and manage power to the HBA. No additional routines are required of a Plug and Play miniport driver to accommodate changes in driver initialization. The SCSI port driver creates PDOs for target devices and the FDO for the miniport driver, and handles AddDevice, StartDevice, and UnloadDevice requests on a Plug and Play miniport driver's behalf. For general information about Plug and Play drivers, see the Setup, Plug and Play, and Power Management Design Guide Registry Entries for Plug and Play SCSI Miniport Drivers To support Plug and Play, a SCSI miniport driver must: Be installed as a service for the HBA. Have a PnPInterface entry in the registry that indicates the interfaces for which the miniport supports Plug and Play.

13 1.0 Storage Drivers Page 13 of 79 Installing a miniport driver as a service for a SCSI HBA is customarily done by providing an INF file that matches the Plug and Play hardware ID for a given HBA to the correct driver to control that device. For details about setting up an INF file, see the Setup, Plug and Play, and Power Management Design Guide. Unless a miniport driver is installed as a service for an HBA, the PnPInterface registry entry will prevent the miniport from initializing. The specified interfaces are initialized only when Plug and Play locates an appropriate HBA. If no service is properly assigned to the HBA, Plug and Play will never determine which driver to notify when it detects the device. This behavior is by design and a miniport should not attempt to circumvent it. The PnPInterface registry entry should be made under the Services key for the miniport. For example, the following registry entry enables Plug and Play for a fictitious miniport driver called Twiddle. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services \Twiddle \Parameters \PnpInterface 5 : REG_DWORD : 1 1 : REG_DWORD : 1 2 : REG_DWORD : 1 8 : REG_DWORD : 1 The values preceding REG_DWORD correspond to the INTERFACE_TYPE enumerated type declared in miniport.h. The values in this example indicate that the Twiddle miniport supports Plug and Play for the following interfaces: PCIBus (5), Isa (1), Eisa (2) and PCMCIABus (8). The value following REG_DWORD is a flag that indicates Plug and Play support for the interface. (Currently, this flag can be any value but must be present. In the future, the flag may be optional.) After the PnPInterface values are set in the registry and the system is restarted, the miniport driver can be initialized as a Plug and Play driver. During initialization, the SCSI port driver checks the registry to determine whether the miniport should be run as a Plug and Play or legacy driver. The SCSI port driver checks the registry for each interface type that the miniport supports (PCI, ISA, etc.). This is intended primarily to simplify debugging for writers of multiple-interface miniport drivers. The miniport driver writer should make sure that a miniport driver is capable of being run as a Plug and Play driver for all interfaces that driver supports SCSI Miniport Initialization Under Plug and Play For Windows 2000, a legacy miniport is initialized in exactly the same way as for Windows NT 4.0. When a legacy miniport calls ScsiPortInitialize, the port driver calls the miniport to locate and initialize its HBA. This is done either once for each HBA it finds (if the HBA is on an enumerable bus) or repeatedly until the miniport reports that it cannot find any more devices. Control then returns to the miniport's DriverEntry routine, where the miniport can call ScsiPortInitialize again for a

14 1.0 Storage Drivers Page 14 of 79 different type of HBA (for example, a different interface or a different vendor and product ID). All of the initialization calls are made within the context of the miniport's DriverEntry routine and are made in the order that ScsiPortInitialize was called. Initialization of legacy drivers occurs at system startup and at no other time. Under Plug and Play, the order of initialization cannot be preserved. When a miniport driver that is enabled for Plug and Play calls ScsiPortInitialize, the port driver stores the initialization data for future reference, then returns STATUS_SUCCESS. This is done for each interface type that is listed in the miniport's PnPInterface registry key any interfaces not listed in that key are still initialized immediately. Later, when the Plug and Play Manager detects an HBA for the miniport, it notifies the port driver. The port driver allocates the necessary system resources (such as memory for the miniport's device extension) and calls the miniport to find the HBA and then to initialize it. This usually happens during system startup, but it might also happen when the system detects a docking operation or when an HBA such as a PCMCIA card is hot-plugged into the system. By the time the Plug and Play Manager reports a device, it has already allocated bus resources (such as I/O ports, memory addresses, and interrupts) for that device and that device alone. These resources are supplied to the miniport, which must either use these resources or report that no device was found. In particular, the miniport must not attempt to access ports or memory locations other than the ones specified to find a device. A miniport driver that has been started as a Plug and Play driver might be asked to detect devices that are on non-enumerable buses. This includes buses such as ISA, which require that the miniport issue commands on the bus to find its HBA. Devices located during such detection are recorded in the registry and initialized as Plug and Play devices the next time the system is started. For more information about Plug and Play, see the Setup, Plug and Play, and Power Management Design Guide Converting a Windows NT 4.0 SCSI Miniport for Plug and Play Even if a miniport driver has enabled Plug and Play in the registry, the driver will fault during initialization unless it honors certain restrictions in the use of the HwContext pointer and resources supplied by the port driver. A miniport might also fault during initialization if it depends on a predictable initialization order of drivers. In order to run successfully under Plug and Play, a Windows NT 4.0 miniport driver's source code might need to be modified as described in the following sections.

15 1.0 Storage Drivers Page 15 of Use the HwContext Pointer to HwScsiFindAdapter Correctly If a miniport's HwScsiFindAdapter receives nonzero access range values from the port driver, it must not use the HwContext pointer. Although this restriction also applied to version 4.0 miniports, nothing prevented such a miniport from using this pointer. If the miniport can be initialized as a Plug and Play driver in Windows 2000, it must not use the HwContext pointer because the SCSI port driver passes in a NULL pointer as the HwContext argument. How an existing miniport must be modified depends on how it currently uses HwContext. For example, if the miniport uses HwContext to maintain a count of HBAs (for example, to use in DebugPrint statements) an alternative might be to use the HwDeviceExtension pointer instead. HwDeviceExtension provides a unique number that is related to the particular HBA originating the DebugPrint message. (Using a global variable to store the HBA count is a bad practice, because miniport drivers should not use global variables to maintain state information.) As another example, if the 4.0 version of the miniport uses HwContext to communicate information about the type of device being initialized (such as information about the capabilities supported by a particular model of PCI HBA), the 5.0 version of the miniport might use ScsiPortGetBusData to get an identifier for the HBA, then use that identifier to search through a list of such parameter blocks to find the correct information. Another possible miniport modification might be to provide this information in a registry string passed in the ArgumentString parameter. The registry string could be set by the miniport's INF file during initialization to information that pertains to the model of card detected. This provides more flexibility than hardcoding the parameters in the miniport, because such a miniport could handle new models of cards using an updated INF file instead of requiring the miniport driver to be recompiled Do Not Depend on Order of SCSI Miniport Initialization Some miniport drivers support HBAs on several different system buses such as PCI, EISA, and ISA. Under Windows NT 4.0, such a miniport driver's HwScsiFindAdapter routine(s) were called in the order that the miniport called ScsiPortInitialize. In several cases, this was used to track the location of a card on one type of bus so the miniport could avoid detecting it on another. For example, assume the Twiddle PCI SCSI HBA is also accessible on the ISA bus. Under Windows NT 4.0, the Twiddle miniport would keep track of which PCI HBAs it was called to initialize and the ISA bus locations in which they appeared. The miniport could use this information while scanning the ISA bus to determine which I/O ranges to skip. Under Windows 2000, this technique is no longer dependable. Because Plug and Play makes

16 1.0 Storage Drivers Page 16 of 79 initialization order unpredictable, the Twiddle miniport could easily be called to scan for its ISA cards before initializing its PCI cards. The miniport would detect each PCI HBA twice, which could lead to a system crash. In this case, if the Twiddle HBA had a command that could be used to determine the real bus interface of the card, the ISA bus scan could query each card it found. If the card were a PCI card and not an ISA card, then the Twiddle miniport driver would leave it alone until Plug and Play issued requests to pick it up. If the order-dependent code of a miniport cannot be removed it must be run as a legacy driver on the Windows 2000 platform Use Only Supplied Resources in a Plug and Play SCSI Miniport One of the goals for a Plug and Play system is to reduce or eliminate the number of drivers that detect their devices by accessing known memory locations. This includes drivers that determine their resources by reading the configuration space for their HBA. Under Plug and Play, devices on enumerable buses are detected by the driver for the bus. This allows the bus driver to handle any resource conflicts, provide special-case fixes for broken bus and bridge parts, and so forth. Consequently, a SCSI miniport must use only the resources provided by the port driver (if any) in Windows 2000 systems. The miniport is allowed to scan the bus for an HBA only if the port driver passes in zero-value access ranges. If the miniport attempts to use resources that are not assigned to it, the ScsiPortGetDeviceBase call will fail. Calls to read and write device registers or ports that have not been properly mapped also might fail Verify Resource Ranges in HwScsiFindAdapter During Detection Although detection of devices by drivers is usually unnecessary under Plug and Play, the port driver might call a Plug and Play miniport's HwScsiFindAdapter routine to detect devices on a nonenumerable bus. Although this operation is similar to detection in Windows NT 4.0, the miniport must take care not to operate on ranges that might be in use by another device. The miniport should call ScsiPortValidateRange before calling ScsiPortGetDeviceBase to ensure that the miniport-supplied range is safe to use. The miniport must be prepared for ScsiPortGetDeviceBase to fail and return a NULL pointer. The miniport should also avoid mapping memory starting at address zero, which makes it impossible to detect the failure of ScsiPortGetDeviceBase on some systems.

17 1.0 Storage Drivers Page 17 of Required and Optional SCSI Miniport Routines Every SCSI miniport driver must have at least the following system-defined routines: DriverEntry to initialize the miniport driver HwScsiFindAdapter to determine how (or whether) driver-supported HBA(s) are configured in the machine HwScsiInitialize to initialize supported HBA(s) HwScsiStartIo to start operations on its HBA(s) for incoming requests HwScsiResetBus to handle bus-reset requests. Depending on each HBA and the driver designer, SCSI miniport drivers also have some or all of the following system-defined routines: HwScsiInterrupt to handle HBA-generated interrupts, which is optional if and only if the HBA does not generate interrupts so the miniport manages all I/O operations on its HBA by polling However, using polling exclusively has an adverse effect on a miniport's performance and on its HBA's I/O throughput. Such a miniport driver should also have a HwScsiTimer routine. HwScsiDisableInterruptsCallback and HwScsiEnableInterruptsCallback to handle deferred I/O processing if interrupt-driven I/O operations take a long time HwScsiTimer to time operations that require long delays on the HBA, or for any other purpose determined by the driver designer A miniport should have a HwScsiTimer routine if it has no HwScsiInterrupt routine so it can use the HwScsiTimer routine for efficient polling of its HBA. HwScsiDmaStarted, which is required if the HBA uses a system DMA controller, to set up an HBA transfer after the system DMA controller has been programmed by the port driver HwScsiAdapterState, which is optional if and only if the HBA has no BIOS or x86-real-mode driver and/or will never run in x86-only Microsoft Windows systems HwScsiAdapterControl, which is required if the miniport driver supports Plug and Play Each of the preceding miniport driver routines, except DriverEntry, has a name chosen to describe its functionality. Except for DriverEntry, which is a required name for every miniport's initial entry point, names for miniport driver routines can be anything the driver writer chooses. The following sections describe the requirements for and functionality of each of these miniport driver routines. See the Kernel-Mode Driver Reference for their formal definitions and descriptions of their parameters. Section 2.13 describes error-handling requirements for SCSI miniport drivers.

18 1.0 Storage Drivers Page 18 of SCSI Miniport Driver's DriverEntry Routine A DriverEntry routine is the initial entry point for most Windows NT kernel-mode drivers and for every SCSI miniport driver. A miniport's DriverEntry routine is called with two input arguments of type PVOID and must do the following: 1. Initialize a HW_INITIALIZATION_DATA structure on the stack with zeros. 2. Set the HwInitializationDataSize member to sizeof(hw_initialization_data). 3. Set driver-specific and HBA-specific values in the HW_INITIALIZATION_DATA members, including the miniport driver's entry points. The following entry points must be set: ϒ HwScsiFindAdapter ϒ HwScsiInitialize ϒ HwScsiStartIo ϒ HwScsiResetBus The following entry points can be set to a driver-supplied routine or must be set to NULL: ϒ HwScsiInterrupt (NULL if the miniport uses polling exclusively) ϒ HwScsiDmaStarted (NULL if the HBA uses PIO or is a busmaster) ϒ HwScsiAdapterState (NULL if the miniport runs only on Windows NT /Windows 2000 platforms or if it is designed to also run on x86-only Windows platforms but the HBA has neither a BIOS nor x86-real-mode driver) ϒ HwScsiAdapterControl (NULL if the miniport does not support Plug and Play) 4. In a legacy miniport driver, set up any driver-determined context data that the miniport's HwScsiFindAdapter routine will use. 5. Call ScsiPortInitialize with the pointers that were input to the DriverEntry routine, the address of the filled-in HW_INITIALIZATION_DATA, and the address of the context data, if any Calling ScsiPortInitialize If a miniport driver's HBA can be connected on more than one type of I/O bus, the miniport must call ScsiPortInitialize for each bus type and can have a different HwScsiFindAdapter routine for each bus type. After each call to ScsiPortInitialize, such a miniport driver must modify the AdapterInterfaceType member, modify the HwScsiFindAdapter member in the HW_INITIALIZATION_DATA if the miniport has a different HwScsiFindAdapter routine for that bus type, possibly modify the miniport-supplied context data for the new bus type, and call

19 1.0 Storage Drivers Page 19 of 79 ScsiPortInitialize for each type of bus on which a supported HBA might be connected. If the miniport is a legacy driver that does not support Plug and Play, ScsiPortInitialize calls the miniport's HwScsiFindAdapter routine one or more times before it returns control to the miniport's DriverEntry routine. All of the HwScsiFindAdapter calls are made in the context of the miniport's DriverEntry routine, in the order DriverEntry called ScsiPortInitialize. If the miniport supports Plug and Play, ScsiPortInitialize stores the initialization data for future use and returns STATUS_SUCCESS to the miniport's DriverEntry routine. The port driver does not call the miniport's HwScsiFindAdapter routine until the Plug and Play Manager detects an HBA for which the miniport is registered as a service. For both Plug and Play and legacy miniport drivers, the port driver does all of the following before it calls the miniport'shwscsifindadapter routine: Checks the validity of the HW_INITIALIZATION_DATA Collects and stores pertinent information in the device extension of a device object that it creates to represent the HBA Allocates memory for and initializes with zeros a device extension of the requested size in which the miniport driver can store driver-determined information about the HBA Allocates memory for a configuration information buffer that is sizeof (PORT_CONFIGURATION_INFORMATION) In the configuration information buffer, fills in a PORT_CONFIGURATION_INFORMATION structure with as much configuration information about an HBA on a particular I/O bus as possible, from the miniport-supplied HW_INITIALIZATION_DATA and from other sources, such as the registry for a legacy miniport or from the Plug and Play Manager for a Plug and Play miniport. For more information about the miniport driver's HwScsiFindAdapter routine, see Section 2.4. If the miniport's DriverEntry routine sets a particular AdapterInterfaceType value in the HW_INITIALIZATION_DATA but there is no bus of that type in the machine, the port driver returns an operating system-specific status value indicating that such an HBA does not exist in the current machine. It does not call the driver-supplied HwScsiFindAdapter routine for that bus type. A miniport driver does not remain loaded if the machine has no I/O buses of the type(s) specified by the miniport's DriverEntry routine. For a legacy miniport, note that ScsiPortInitialize also is responsible for the following before it returns control to the legacy miniport's DriverEntry routine: Setting up all necessary system objects Getting configuration information from and setting configuration information in the registry Allocating system resources on behalf of the miniport driver, including memory in the amounts indicated by the miniport-specified DeviceExtensionSize, SpecificLuExtensionSize, and/or SrbExtensionSize in which the miniport driver can maintain HBA-specific state, per-logicalunit state, and/or per-request state, respectively For a Plug and Play miniport, the port driver performs these operations after the miniport driver's

20 1.0 Storage Drivers Page 20 of 79 HwScsiFindAdapter routine returns and before the port driver calls the miniport's HwScsiInitialize routine. Each SCSI miniport driver defines the internal structure and contents of its device extension, logical unit extensions (if any), and SRB extensions (if any). A pointer to the HBA-specific device extension is an input argument to every system-defined miniport driver routine except DriverEntry. Many ScsiPortXxx routines require this pointer as an argument. ScsiPortInitialize can be called only from a miniport driver's DriverEntry routine. For more information about the HW_INITIALIZATION_DATA structure and ScsiPortInitialize, see the Kernel-Mode Driver Reference Storage Driver's Return from DriverEntry When ScsiPortInitialize returns control, the DriverEntry routine propagates the return value of ScsiPortInitialize when DriverEntry itself returns control. If a miniport driver calls ScsiPortInitialize more than once, its DriverEntry routine must propagate the lowest value returned by ScsiPortInitialize. A miniport driver writer cannot make any assumptions about the values returned by ScsiPortInitialize. 2.4 SCSI Miniport Driver's HwScsiFindAdapter Routine The operating system-specific port driver fills in as much of the PORT_CONFIGURATION_INFORMATION in the configuration information buffer as it can from the miniport's HW_INITIALIZATION_DATA specification and other sources in the system before calling the given HwScsiFindAdapter routine with a pointer to the configuration information buffer. In general, a HwScsiFindAdapter routine is responsible for using the supplied configuration information and/or for calling ScsiPortXxx to collect sufficient configuration information to determine whether it supports an HBA on the I/O bus identified by the SystemIoBusNumber in the PORT_CONFIGURATION_INFORMATION supplied by the port driver. If so, HwScsiFindAdapter is responsible for filling in any remaining configuration information for the supported HBA in the PORT_CONFIGURATION_INFORMATION, for setting up the miniport's device extension with driver-determined state about that HBA, and for setting the Again parameter to an appropriate value before it returns control.

21 1.0 Storage Drivers Page 21 of 79 For more information about the PORT_CONFIGURATION_INFORMATION structure and the HwScsiFindAdapter routine, see also the Kernel-Mode Driver Reference Calling ScsiPortXxx from HwScsiFindAdapter Certain ScsiPortXxx routines can be called only from the miniport driver's HwScsiFindAdapter routine(s), in particular, the following: ScsiPortValidateRange to verify that a miniport-supplied bus-relative access range has not already been claimed in the registry by another driver for its device ScsiPortGetDeviceBase to map the (bus-relative) "physical" address range for an HBA to a system-assigned logical address range that the driver can use to communicate with the HBA by calling the ScsiPortReadXxx and ScsiPortWriteXxx routines with the mapped logical range addresses ScsiPortFreeDeviceBase to release such a mapped range if HwScsiFindAdapter does not find an HBA it can support on a given I/O bus, as indicated by the PORT_CONFIGURATION_INFORMATION SystemIoBusNumber value ScsiPortGetUncachedExtension to allocate a DMA buffer shared between the system and a busmaster HBA In addition to these four routines, there is one routine which can only be called from the miniport driver's HwScsiFindAdapter routine or from HwScsiAdapterControl when the control type is ScsiSetRunningConfig: ScsiPortGetBusData to get BUS_DATA_TYPE-specific configuration information, such as bus-relative device memory (access) ranges, interrupt vector or IRQL, DMA channel or port, etc. For more information about these ScsiPortXxx routines, see also the Kernel-Mode Driver Reference Port-Driver-Supplied ConfigInfo for HwScsiFindAdapter The system port driver always sets up the following PORT_CONFIGURATION_INFORMATION before it calls a miniport's HwScsiFindAdapter routine with a pointer to the PORT_CONFIGURATION_INFORMATION (the ConfigInfo buffer): Length to sizeof(port_configuration_information) AdapterInterfaceType to the miniport's HW_INITIALIZATION_DATA specification

22 1.0 Storage Drivers Page 22 of 79 InterruptMode to LevelSensitive for a PCI bus or Latched for all other bus types If the miniport has no HwScsiInterrupt routine and, therefore, set the HwInterrupt entry point to NULL in the HW_INITIALIZATION_DATA, this member is irrelevant. AtdiskPrimaryClaimed to TRUE if a previously loaded driver is using the I/O port range 0x1F0 to 0x1FF AtdiskSecondaryClaimed to TRUE if a previously loaded driver is using the I/O port range 0x170 to 0x17F NumberOfAccessRanges to the miniport's HW_INITIALIZATION_DATA specification Dma64BitAddresses to the miniport's HW_INITIALIZATION_DATA specification if the system has memory with physical addresses above 4GB The port driver also attempts to fill in the following members with values from other sources in the system, such as the registry for a legacy minport or from the Plug and Play Manager for a Plug and Play miniport: SystemIoBusNumber set to the system-assigned value for the I/O bus The miniport's HwScsiFindAdapter routine can be called for each bus of the given AdapterInterfaceType with an updated value for SystemIoBusNumber, or this can be set to a system-determined value if the system detects an HBA on a particular bus of the given AdapterInterfaceType. AccessRanges elements of type ACCESS_RANGE, set with the bus-relative RangeStart address and RangeLength, as well as whether each range is a RangeInMemory RangeInMemory set to FALSE indicates a range of ports in I/O space, rather than a memoryspace range. The port driver either supplies all the information in an ACCESS_RANGE element or it sets all members of the element to (default) zero. Usually, the port driver supplies additional configuration information if it provides nonzero values for an access range. A miniport driver must map any bus-relative access range values supplied by the port driver with ScsiPortGetDeviceBase and use the mapped logical address values to determine whether the corresponding HBA is one that the driver supports. Never map and use a miniport-supplied range to access an HBA on the bus if the port driver supplies filled-in access range elements in the PORT_CONFIGURATION_INFORMATION it passes to the HwScsiFindAdapter routine. Using miniport-supplied addresses when the port driver has supplied range configuration information can reset an already configured HBA, making it dysfunctional, or even cause the system to fail the boot process. For more information about using mapped logical access ranges, see also Section BusInterruptLevel or BusInterruptVector This member is irrelevant if the miniport has no HwScsiInterrupt routine. DmaChannel or DmaPort if the HBA uses a system DMA controller If the HBA is a busmaster or uses PIO, these members are irrelevant. InitiatorBusId

23 1.0 Storage Drivers Page 23 of 79 If the input InitiatorBusId[0] has the value zero, the miniport can assign a default value if its HBA does not require the use of particular value(s) determined by querying the HBA. Otherwise, the miniport should use any nonzero value assigned by the port driver if possible. Every miniport must update InitiatorBusId specifications to match what its HBA uses, if necessary querying the HBA to determine the appropriate values(s). A miniport driver must set an entry for each SCSI bus supported by the HBA, as indicated by the value of NumberOfBuses Setting up ConfigInfo in HwScsiFindAdapter A HwScsiFindAdapter routine can call ScsiPortGetBusData and examine the returned bus-typespecific configuration information, such as POS data or EISA configuration data, for a supported HBA. If the AccessRanges elements in the input PORT_CONFIGURATION_INFORMATION (the ConfigInfo buffer) have been filled in by the port driver, the HwScsiFindAdapter routine should map the bus-relative access ranges with ScsiPortGetDeviceBase and use the returned logical access range addresses to communicate with the HBA. If access range addresses are supplied by the port driver, HwScsiFindAdapter must not scan for HBAs at other locations on that I/O bus. In addition, if the port driver supplies access range values, HwScsiFindAdapter must not use the HwContext parameter. Such access range values are usually accompanied by additional configuration information, which indicates a Plug and Play environment. In such an environment, HwScsiFindAdapter is being called after the miniport's DriverEntry routine has returned and thus the HwContext pointer is no longer valid. Only drivers that receive zero access range values from the port driver and that do their own scanning for supported HBAs can safely use the HwContext pointer. If the input PORT_CONFIGURATION_INFORMATION contains no configuration information other than that previously supplied by the miniport in the HW_INITIALIZATION_DATA, HwScsiFindAdapter can use values returned by ScsiPortGetBusData or, if necessary, set miniportdriver-defined default values for AccessRanges elements, BusInterruptLevel or BusInterruptVector, DmaChannel or DmaPort if the HBA uses system DMA, and InitiatorBusId. HwScsiFindAdapter must call ScsiPortValidateRange to check whether such miniport-driversupplied access ranges can be used safely before it accesses an HBA on the bus. If ScsiPortValidateRange returns TRUE, the miniport can call ScsiPortGetDeviceBase to map the range and use the returned logical addresses in calls to ScsiPortReadXxx and/or ScsiPortWriteXxx to determine whether it supports an HBA on the I/O bus. If ScsiPortValidateRange returns FALSE, the miniport driver must not attempt to map and use those bus-relative access range values. Similarly, if the port driver calls a Plug and Play miniport to detect devices on a nonenumerable bus,

Ausgewählte Betriebssysteme - Mark Russinovich & David Solomon (used with permission of authors)

Ausgewählte Betriebssysteme - Mark Russinovich & David Solomon (used with permission of authors) Outline Windows 2000 - The I/O Structure Ausgewählte Betriebssysteme Institut Betriebssysteme Fakultät Informatik Components of I/O System Plug n Play Management Power Management I/O Data Structures File

More information

KOSR 22 차세미나. KOSR 연역및소개 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

KOSR 22 차세미나. KOSR 연역및소개 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r KOSR 22 차세미나 KOSR 연역및소개 http://www.kosr.org 1 KOSR 연혁과이념 KOSR 연혁 (2001 ~ ) - 2001.11.02 : WSP(Windows System Programmer) 커뮤니티 Open - 2003.01.19 : KSP(Korea System Programmer) 로독립 - 2004.12.01 : KOSR (Korea

More information

DRIVER MODEL ULB Darmstadt

DRIVER MODEL ULB Darmstadt Microsoft" y / /«Second Edition PROGRAMMING MICROSO FT WIN D 0 WS DRIVER MODEL ULB Darmstadt i minis Walter Oney Acknowledgments Introduction Beginning a Driver Project 1 A Brief History of Device Drivers

More information

Universal Windows Driver Development with WDF UMDF 2.0 and KMDF for IoT, Desktop and Server

Universal Windows Driver Development with WDF UMDF 2.0 and KMDF for IoT, Desktop and Server KMDF - Version: 1.2 11 January 2018 Universal Windows Driver Development with WDF UMDF 2.0 and KMDF for IoT, Desktop and Server Universal Windows Driver Development with WDF UMDF 2.0 and KMDF for IoT,

More information

The control of I/O devices is a major concern for OS designers

The control of I/O devices is a major concern for OS designers Lecture Overview I/O devices I/O hardware Interrupts Direct memory access Device dimensions Device drivers Kernel I/O subsystem Operating Systems - June 26, 2001 I/O Device Issues The control of I/O devices

More information

Input Components C H A P T E R 1 4. See also: System FAQs for WHQL Testing on

Input Components C H A P T E R 1 4. See also: System FAQs for WHQL Testing on Part 4 Device Design Guidelines C H A P T E R 1 4 Input Components This chapter presents the requirements and recommendations for standard input devices and connections under the Microsoft Windows family

More information

Tape Channel Analyzer Windows Driver Spec.

Tape Channel Analyzer Windows Driver Spec. Tape Channel Analyzer Windows Driver Spec. 1.1 Windows Driver The Driver handles the interface between the Adapter and the Adapter Application Program. The driver follows Microsoft Windows Driver Model

More information

SCSI is often the best choice of bus for high-specification systems. It has many advantages over IDE, these include:

SCSI is often the best choice of bus for high-specification systems. It has many advantages over IDE, these include: 13 SCSI 13.1 Introduction SCSI is often the best choice of bus for high-specification systems. It has many advantages over IDE, these include: A single bus system for up to seven connected devices. It

More information

CSE 120. Overview. July 27, Day 8 Input/Output. Instructor: Neil Rhodes. Hardware. Hardware. Hardware

CSE 120. Overview. July 27, Day 8 Input/Output. Instructor: Neil Rhodes. Hardware. Hardware. Hardware CSE 120 July 27, 2006 Day 8 Input/Output Instructor: Neil Rhodes How hardware works Operating Systems Layer What the kernel does API What the programmer does Overview 2 Kinds Block devices: read/write

More information

Accessing I/O Devices Interface to CPU and Memory Interface to one or more peripherals Generic Model of IO Module Interface for an IO Device: CPU checks I/O module device status I/O module returns status

More information

操作系统概念 13. I/O Systems

操作系统概念 13. I/O Systems OPERATING SYSTEM CONCEPTS 操作系统概念 13. I/O Systems 东南大学计算机学院 Baili Zhang/ Southeast 1 Objectives 13. I/O Systems Explore the structure of an operating system s I/O subsystem Discuss the principles of I/O

More information

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif. 95005 831-336-8891 Fax 831-336-3840 http://www.dyneng.com sales@dyneng.com Est. 1988 User Manual PCI LVDS 8R Driver Documentation Revision A Corresponding

More information

Introduction to I/O. 1-Slide Overview to File Management

Introduction to I/O. 1-Slide Overview to File Management Introduction to I/O 1-Slide Overview to File Management I/O Hardware I/O Application Interface I/O Subsystem Issues Note: much material in this set of slides comes directly from Solomon&Russinovich, Inside

More information

STANDARD I/O INTERFACES

STANDARD I/O INTERFACES STANDARD I/O INTERFACES The processor bus is the bus defied by the signals on the processor chip itself. Devices that require a very high-speed connection to the processor, such as the main memory, may

More information

GPO Hardware Classes Die Hardware Classes sind notwendig um die jeweilige Hardware in eine Policy umzusetzen und zu steuern.

GPO Hardware Classes Die Hardware Classes sind notwendig um die jeweilige Hardware in eine Policy umzusetzen und zu steuern. Die Hardware Classes sind notwendig um die jeweilige Hardware in eine Policy umzusetzen und zu steuern. Battery Devices Class = Battery ClassGuid = {72631e54-78a4-11d0-bcf7-00aa00b7b32a} This class includes

More information

Spring 2017 :: CSE 506. Device Programming. Nima Honarmand

Spring 2017 :: CSE 506. Device Programming. Nima Honarmand Device Programming Nima Honarmand read/write interrupt read/write Spring 2017 :: CSE 506 Device Interface (Logical View) Device Interface Components: Device registers Device Memory DMA buffers Interrupt

More information

Input/Output Problems. External Devices. Input/Output Module. I/O Steps. I/O Module Function Computer Architecture

Input/Output Problems. External Devices. Input/Output Module. I/O Steps. I/O Module Function Computer Architecture 168 420 Computer Architecture Chapter 6 Input/Output Input/Output Problems Wide variety of peripherals Delivering different amounts of data At different speeds In different formats All slower than CPU

More information

CS 134. Operating Systems. April 8, 2013 Lecture 20. Input/Output. Instructor: Neil Rhodes. Monday, April 7, 14

CS 134. Operating Systems. April 8, 2013 Lecture 20. Input/Output. Instructor: Neil Rhodes. Monday, April 7, 14 CS 134 Operating Systems April 8, 2013 Lecture 20 Input/Output Instructor: Neil Rhodes Hardware How hardware works Operating system layer What the kernel does API What the programmer does Overview 2 kinds

More information

Eastern Mediterranean University School of Computing and Technology INPUT / OUTPUT

Eastern Mediterranean University School of Computing and Technology INPUT / OUTPUT Eastern Mediterranean University School of Computing and Technology ITEC255 Computer Organization & Architecture INPUT / OUTPUT Introduction Computer system s I/O architecture is its interface to outside

More information

Operating Systems 2010/2011

Operating Systems 2010/2011 Operating Systems 2010/2011 Input/Output Systems part 1 (ch13) Shudong Chen 1 Objectives Discuss the principles of I/O hardware and its complexity Explore the structure of an operating system s I/O subsystem

More information

19: I/O. Mark Handley. Direct Memory Access (DMA)

19: I/O. Mark Handley. Direct Memory Access (DMA) 19: I/O Mark Handley Direct Memory Access (DMA) 1 Interrupts Revisited Connections between devices and interrupt controller actually use interrupt lines on the bus rather than dedicated wires. Interrupts

More information

HP Advanced Backup Troubleshooting and Tuning.

HP Advanced Backup Troubleshooting and Tuning. HP HP0-244 Advanced Backup Troubleshooting and Tuning http://killexams.com/exam-detail/hp0-244 QUESTION: 53 A reboot of a Windows 2000 system after the installation of HP StorageWorks Library and Tape

More information

Accelerated Library Framework for Hybrid-x86

Accelerated Library Framework for Hybrid-x86 Software Development Kit for Multicore Acceleration Version 3.0 Accelerated Library Framework for Hybrid-x86 Programmer s Guide and API Reference Version 1.0 DRAFT SC33-8406-00 Software Development Kit

More information

ESC(LP)-100. Eight Channel Low Profile RS-232 Asynchronous Communications Adapter. for PCI bus. User's Manual

ESC(LP)-100. Eight Channel Low Profile RS-232 Asynchronous Communications Adapter. for PCI bus. User's Manual ESC(LP)-100 Eight Channel Low Profile RS-232 Asynchronous Communications Adapter for PCI bus User's Manual QUATECH, INC. TEL: (330) 655-9000 5675 Hudson Industrial Parkway FAX: (330) 655-9010 Hudson, Ohio

More information

System Memory Heaps. 6.1 System Memory Heaps 6.2 Allocation from the system pool

System Memory Heaps. 6.1 System Memory Heaps 6.2 Allocation from the system pool System Memory Heaps 6.1 System Memory Heaps 6.2 Allocation from the system pool Source code: KmdKit\examples\basic\MemoryWorks\SystemModules Assuming you already grasp the basics, let's review some of

More information

QSC(LP)-100. User's Manual

QSC(LP)-100. User's Manual QSC(LP)-100 Four Channel Low Profile RS-232 Asynchronous Communications Adapter for PCI bus User's Manual QUATECH, INC. TEL: (330) 655-9000 5675 Hudson Industrial Parkway FAX: (330) 655-9010 Hudson, Ohio

More information

Utilizing Linux Kernel Components in K42 K42 Team modified October 2001

Utilizing Linux Kernel Components in K42 K42 Team modified October 2001 K42 Team modified October 2001 This paper discusses how K42 uses Linux-kernel components to support a wide range of hardware, a full-featured TCP/IP stack and Linux file-systems. An examination of the

More information

EXTENDED SYSTEM CONFIGURATION DATA SPECIFICATION

EXTENDED SYSTEM CONFIGURATION DATA SPECIFICATION Compaq Computer Corporation Intel Corporation Phoenix Technologies, Ltd EXTENDED SYSTEM CONFIGURATION DATA SPECIFICATION Version 102A May 31, 1994 This specification is, and shall remain, the property

More information

Organisasi Sistem Komputer

Organisasi Sistem Komputer LOGO Organisasi Sistem Komputer OSK 5 Input Output 1 1 PT. Elektronika FT UNY Input/Output Problems Wide variety of peripherals Delivering different amounts of data At different speeds In different formats

More information

Computer Organization ECE514. Chapter 5 Input/Output (9hrs)

Computer Organization ECE514. Chapter 5 Input/Output (9hrs) Computer Organization ECE514 Chapter 5 Input/Output (9hrs) Learning Outcomes Course Outcome (CO) - CO2 Describe the architecture and organization of computer systems Program Outcome (PO) PO1 Apply knowledge

More information

Operating Systems Design Fall 2010 Exam 1 Review. Paul Krzyzanowski

Operating Systems Design Fall 2010 Exam 1 Review. Paul Krzyzanowski Operating Systems Design Fall 2010 Exam 1 Review Paul Krzyzanowski pxk@cs.rutgers.edu 1 Question 1 To a programmer, a system call looks just like a function call. Explain the difference in the underlying

More information

Answer to exercises chap 13.2

Answer to exercises chap 13.2 Answer to exercises chap 13.2 The advantage of supporting memory-mapped I/O to device-control registers is that it eliminates the need for special I/O instructions from the instruction set and therefore

More information

Hardware OS & OS- Application interface

Hardware OS & OS- Application interface CS 4410 Operating Systems Hardware OS & OS- Application interface Summer 2013 Cornell University 1 Today How my device becomes useful for the user? HW-OS interface Device controller Device driver Interrupts

More information

Device I/O Programming

Device I/O Programming Overview Device I/O Programming Don Porter CSE 506 Many artifacts of hardware evolution Configurability isn t free Bake-in some reasonable assumptions Initially reasonable assumptions get stale Find ways

More information

SATA 300 PCI USER MANUAL

SATA 300 PCI USER MANUAL SATA 300 PCI Express Card USER MANUAL MODEL 150040 MAN-150040-UM-1106-03 Thank you for purchasing the MANHATTAN SATA 300 PCI Express Card, Model 150040. With the following features, this card allows you

More information

Storage and Related Peripherals

Storage and Related Peripherals Part 4 Device Design Guidelines C H A P T E R 1 8 Storage and Related Peripherals This section presents the requirements for storage and related peripherals, including DVD devices, under the Microsoft

More information

Architecture Specification

Architecture Specification PCI-to-PCI Bridge Architecture Specification, Revision 1.2 June 9, 2003 PCI-to-PCI Bridge Architecture Specification Revision 1.1 December 18, 1998 Revision History REVISION ISSUE DATE COMMENTS 1.0 04/05/94

More information

Imagenation PX Series

Imagenation PX Series Imagenation PX Series Guide To Troubleshooting Frame Grabber Installations Imagenation PX Series Frame Grabbers PX500, PX510, PX610 & PX610A Covering all Microsoft Win32 Operating Systems Windows 95, 98,

More information

Windows 7 Overview. Windows 7. Objectives. The History of Windows. CS140M Fall Lake 1

Windows 7 Overview. Windows 7. Objectives. The History of Windows. CS140M Fall Lake 1 Windows 7 Overview Windows 7 Overview By Al Lake History Design Principles System Components Environmental Subsystems File system Networking Programmer Interface Lake 2 Objectives To explore the principles

More information

Computer System Overview OPERATING SYSTEM TOP-LEVEL COMPONENTS. Simplified view: Operating Systems. Slide 1. Slide /S2. Slide 2.

Computer System Overview OPERATING SYSTEM TOP-LEVEL COMPONENTS. Simplified view: Operating Systems. Slide 1. Slide /S2. Slide 2. BASIC ELEMENTS Simplified view: Processor Slide 1 Computer System Overview Operating Systems Slide 3 Main Memory referred to as real memory or primary memory volatile modules 2004/S2 secondary memory devices

More information

Checking and understanding USB settings in Device Manager

Checking and understanding USB settings in Device Manager Checking and understanding USB settings in Device Manager Contents Overview of USB Viewing USB Controllers in Device Manager Checking Properties of the Generic USB Hub Checking Properties of the USB Enhanced

More information

SCSI device drivers are provided for the following operating systems:

SCSI device drivers are provided for the following operating systems: This section describes how to install and configure the Dell small computer system interface (SCSI) device drivers included with your Dell PowerEdge computer system. These device drivers are designed to

More information

VXIPC 800/700 SERIES FOR WINDOWS 95/NT

VXIPC 800/700 SERIES FOR WINDOWS 95/NT READ ME FIRST VXIPC 800/700 SERIES FOR WINDOWS 95/NT Contents This document contains information to help you understand the components of your kit, determine where to start setting up your kit, and learn

More information

What Operating Systems Do An operating system is a program hardware that manages the computer provides a basis for application programs acts as an int

What Operating Systems Do An operating system is a program hardware that manages the computer provides a basis for application programs acts as an int Operating Systems Lecture 1 Introduction Agenda: What Operating Systems Do Computer System Components How to view the Operating System Computer-System Operation Interrupt Operation I/O Structure DMA Structure

More information

Tandem Software Flow

Tandem Software Flow Xilinx Answer 51950 Tandem PCIe Second Stage Bitstream Loading across the PCI Express Link Important Note: This downloadable PDF of an Answer Record is provided to enhance its usability and readability.

More information

Imagenation PXD Series

Imagenation PXD Series Imagenation PXD Series Guide To Troubleshooting Frame Grabber Installations Imagenation PXD Series Frame Grabbers PXD1000 Covering all Supported Microsoft Win32 Operating Systems Windows 98, 98SE, and

More information

OPERATING SYSTEMS & UTILITY PROGRAMS

OPERATING SYSTEMS & UTILITY PROGRAMS OPERATING SYSTEMS & UTILITY PROGRAMS System Software System software consists of the programs that control the operations of the computer and its devices. Functions that system software performs include:

More information

Lecture 2: September 9

Lecture 2: September 9 CMPSCI 377 Operating Systems Fall 2010 Lecture 2: September 9 Lecturer: Prashant Shenoy TA: Antony Partensky & Tim Wood 2.1 OS & Computer Architecture The operating system is the interface between a user

More information

CS330: Operating System and Lab. (Spring 2006) I/O Systems

CS330: Operating System and Lab. (Spring 2006) I/O Systems CS330: Operating System and Lab. (Spring 2006) I/O Systems Today s Topics Block device vs. Character device Direct I/O vs. Memory-mapped I/O Polling vs. Interrupts Programmed I/O vs. DMA Blocking vs. Non-blocking

More information

Module 1. Introduction:

Module 1. Introduction: Module 1 Introduction: Operating system is the most fundamental of all the system programs. It is a layer of software on top of the hardware which constitutes the system and manages all parts of the system.

More information

CARDBUS INTERFACE USER MANUAL

CARDBUS INTERFACE USER MANUAL CARDBUS INTERFACE USER MANUAL 1 Scope The COM-13xx ComBlock modules are PC cards which support communication with a host computer through a standard CardBus interface. These ComBlock modules can be used

More information

NEC Express5800 Series

NEC Express5800 Series NEC Express5800 Series NEC Express5800/120Rf-1,120Rh-2 Operation Manual For Microsoft Windows Server 2003, Standard x64 Edition / Microsoft Windows Server 2003, Enterprise x64 Edition Note: Microsoft and

More information

CSX600 Runtime Software. User Guide

CSX600 Runtime Software. User Guide CSX600 Runtime Software User Guide Version 3.0 Document No. 06-UG-1345 Revision: 3.D January 2008 Table of contents Table of contents 1 Introduction................................................ 7 2

More information

VCI - Virtual CAN Interface VCI-V2 Installation Manual

VCI - Virtual CAN Interface VCI-V2 Installation Manual Manual VCI - Virtual CAN Interface VCI-V2 Installation Manual Software Version 2.16 The expert for industrial and automotive communication IXXAT Headquarter US Sales Office IXXAT Automation GmbH IXXAT

More information

Imagenation PXR Series

Imagenation PXR Series Imagenation PXR Series Guide To Troubleshooting Frame Grabber Installations Imagenation PXR Series Frame Grabbers PXR800 Covering All Supported Microsoft Win32 Operating Systems Windows 98, 98SE, and Me

More information

----- Release notes for the Code drop Dated: 04/21/06 ----- This release notes contains the following: 1. Description of the release 2. Supported hardware 3. List of Software deliverables 4. Major functional

More information

The Kernel Abstraction

The Kernel Abstraction The Kernel Abstraction Debugging as Engineering Much of your time in this course will be spent debugging In industry, 50% of software dev is debugging Even more for kernel development How do you reduce

More information

Final Examination. Thursday, December 3, :20PM 620 PM. NAME: Solutions to Selected Problems ID:

Final Examination. Thursday, December 3, :20PM 620 PM. NAME: Solutions to Selected Problems ID: CSE 237B EMBEDDED SOFTWARE, FALL 2009 PROF. RAJESH GUPTA Final Examination Thursday, December 3, 2009 5:20PM 620 PM NAME: Solutions to Selected Problems ID: Problem Max. Points Points 1 20 2 25 3 35 4

More information

2 Port SATA II - 3Gbps PCI-Express Card

2 Port SATA II - 3Gbps PCI-Express Card 2 Port SATA II - 3Gbps PCI-Express Card User Manual English LINDY No. 51170 www.lindy.com LINDY ELECTRONICS LIMITED & LINDY-ELEKTRONIK GMBH - FIRST EDITION (April 2005) 1. Introduction This Low Profile

More information

RAID SATA II 3Gbps 4 Ports PCI-X Host

RAID SATA II 3Gbps 4 Ports PCI-X Host RAID SATA II 3Gbps 4 Ports PCI-X Host User Manual English LINDY No. 70548 (External) LINDY No. 70549 (Internal) www.lindy.com LINDY ELECTRONICS LIMITED & LINDY-ELEKTRONIK GMBH - FIRST EDITION (November

More information

Linux+ Guide to Linux Certification, Third Edition. Chapter 6 Advanced Installation

Linux+ Guide to Linux Certification, Third Edition. Chapter 6 Advanced Installation Linux+ Guide to Linux Certification, Third Edition Chapter 6 Advanced Installation Objectives Describe the types and structure of SCSI devices Explain the different levels of RAID and types of RAID configurations

More information

Appendix A Fast!UTIL

Appendix A Fast!UTIL Appendix A Fast!UTIL This appendix is part of the QLogic Corporation manual Hardware Installation Guide for the QLA1xxx Boards (PC0056105-00 E). The QLogic disclaimer and copyright notices for this document

More information

Open Source support for OSD

Open Source support for OSD Open Source support for OSD IBM Haifa Research Lab IBM Labs in Haifa 2006 IBM Corporation Outline IBM Labs in Haifa Object Based Storage (OSD) OSD Initiator Past Going forward OSD Simulator on AlphaWorks

More information

Connectivity. Module 2.2. Copyright 2006 EMC Corporation. Do not Copy - All Rights Reserved. Connectivity - 1

Connectivity. Module 2.2. Copyright 2006 EMC Corporation. Do not Copy - All Rights Reserved. Connectivity - 1 Connectivity Module 2.2 2006 EMC Corporation. All rights reserved. Connectivity - 1 Connectivity Upon completion of this module, you will be able to: Describe the physical components of a networked storage

More information

82341C HPIB Installation and Troubleshooting Agilent ChemStations on Windows 95 and Windows NT

82341C HPIB Installation and Troubleshooting Agilent ChemStations on Windows 95 and Windows NT 82341C HPIB Installation and Troubleshooting Agilent ChemStations on Windows 95 and Windows NT This document will give you the background information that you need in order to prepare and install the 82341C

More information

Computer System Overview

Computer System Overview Computer System Overview Operating Systems 2005/S2 1 What are the objectives of an Operating System? 2 What are the objectives of an Operating System? convenience & abstraction the OS should facilitate

More information

Precept 2: Non-preemptive Scheduler. COS 318: Fall 2018

Precept 2: Non-preemptive Scheduler. COS 318: Fall 2018 Precept 2: Non-preemptive Scheduler COS 318: Fall 2018 Project 2 Schedule Precept: Monday 10/01, 7:30pm (You are here) Design Review: Monday 10/08, 3-7pm Due: Sunday 10/14, 11:55pm Project 2 Overview Goal:

More information

Desktop Management BIOS Specification

Desktop Management BIOS Specification American Megatrends Inc. Award Software International Inc. Dell Computer Corporation Intel Corporation Phoenix Technologies Ltd. SystemSoft Corporation Desktop Management BIOS Specification Version 2.0

More information

System Software. System software

System Software. System software System Software 1 System Software 2 System Software System software o Consists of all the programs that enable the computer and its peripheral devices to function smoothly o Divided into two main categories:

More information

The Evolution of Windows Crash Dump Research

The Evolution of Windows Crash Dump Research The Evolution of Windows Crash Dump Research Aaron LeMasters Brucon 2014 Introduction Crash dump infrastructure primer How it is used by the operating system Manipulating the crash dump infrastructure

More information

Windows Kernel Internals II Windows Driver Model

Windows Kernel Internals II Windows Driver Model Windows Kernel Internals II Windows Driver Model University of Tokyo July 2004* Dave Probert, Ph.D. Advanced Operating Systems Group Windows Core Operating Systems Division Microsoft Corporation Microsoft

More information

Table of Contents. 2.2 DSP-100 Enabler for DOS

Table of Contents. 2.2 DSP-100 Enabler for DOS Table of Contents 1 Introduction... 1-1 2 DOS / Windows 3.x Installation... 2-1 2.1 DSP-100 Client Driver for DOS... 2-2 2.1.1 Client Driver Installation... 2-2 2.1.2 Command Line Options... 2-3 2.1.3

More information

CSE 451: Operating Systems Winter I/O System. Gary Kimura

CSE 451: Operating Systems Winter I/O System. Gary Kimura CSE 451: Operating Systems Winter 2012 I/O System Gary Kimura What s Ahead Principles of I/O Hardware Structuring of I/O Software Layers of an I/O System Operation of an I/O System 2 Hardware Environment

More information

SMC-3 Vendor Specific Sense Code Survey

SMC-3 Vendor Specific Sense Code Survey TO: T10 Membership, SMC-3 Working Group FROM: Rod Wideman, ADIC; rod.wideman@adic.com DATE: March 6 th, 2006 SUBJECT: (document ) Rev1 Incorporated additional data from another vendor Rev0 Initial draft.

More information

Upgrading the MSA1000 for Enhanced Features

Upgrading the MSA1000 for Enhanced Features White Paper December 2002 Prepared by: Network Storage Solutions Hewlett Packard Company Contents Benefits of the MSA1000 Enhancements...1 Prerequisites...3 Environmental Monitoring Unit (EMU) issue:...3

More information

Input/Output. Today. Next. Principles of I/O hardware & software I/O software layers Disks. Protection & Security

Input/Output. Today. Next. Principles of I/O hardware & software I/O software layers Disks. Protection & Security Input/Output Today Principles of I/O hardware & software I/O software layers Disks Next Protection & Security Operating Systems and I/O Two key operating system goals Control I/O devices Provide a simple,

More information

Part 1: Introduction to device drivers Part 2: Overview of research on device driver reliability Part 3: Device drivers research at ERTOS

Part 1: Introduction to device drivers Part 2: Overview of research on device driver reliability Part 3: Device drivers research at ERTOS Some statistics 70% of OS code is in device s 3,448,000 out of 4,997,000 loc in Linux 2.6.27 A typical Linux laptop runs ~240,000 lines of kernel code, including ~72,000 loc in 36 different device s s

More information

PCI Express System Interconnect Software Architecture for x86-based Systems. Root Complex. Processor. UP Multi-port PCIe switch DP DP DP

PCI Express System Interconnect Software Architecture for x86-based Systems. Root Complex. Processor. UP Multi-port PCIe switch DP DP DP PCI Express System Interconnect Software Architecture for x86-based Systems Application Note AN-571 Introduction By Kwok Kong and Alex Chang A multi-peer system using a standard-based PCI Express multi-port

More information

How To Force Restore A Computer That Won Boot Up After System

How To Force Restore A Computer That Won Boot Up After System How To Force Restore A Computer That Won Boot Up After System If your computer won't start up normally, you may need to use a disk repair utility This can occur after an improper shutdown, forced restart,

More information

HP / HP HPIB Driver Installation and Troubleshooting ChemStation Version A.07.0x- A.08.0xon Windows NT

HP / HP HPIB Driver Installation and Troubleshooting ChemStation Version A.07.0x- A.08.0xon Windows NT HP 82341 / HP 82350 HPIB Driver Installation and Troubleshooting ChemStation Version A.07.0x- A.08.0xon Windows NT This document will give you the background information that you need in order to prepare

More information

Windows History 2009 Windows 7 2

Windows History 2009 Windows 7 2 Example: Windows 1 Windows History 2009 Windows 7 2 Features added Windows2000 additions Plug-and-play Network directory service New GUI Vista additions New GUI More focus on security clean-up the code

More information

HiCOCAN. Setup Information

HiCOCAN. Setup Information HiCOCAN Setup Information Copyright 72.53.0000.0 Copyright 2008 emtrion GmbH All rights reserved. Without written permission this documentation may neither be photocopied nor stored on electronic media.

More information

DVD :50 PM Page 1 BIOS

DVD :50 PM Page 1 BIOS 99 0789729741 DVD 3.07 06 09 2003 1:50 PM Page 1 BIOS 99 0789729741 DVD 3.07 06 09 2003 1:50 PM Page 2 2 BIOS AMI BIOS POST Checkpoint Codes Table 1 AMI BIOS POST Checkpoint Codes for All AMI BIOS Products

More information

Main Points of the Computer Organization and System Software Module

Main Points of the Computer Organization and System Software Module Main Points of the Computer Organization and System Software Module You can find below the topics we have covered during the COSS module. Reading the relevant parts of the textbooks is essential for a

More information

MAA3182SC, MAB3091SC INTELLIGENT DISK DRIVES OEM MANUAL

MAA3182SC, MAB3091SC INTELLIGENT DISK DRIVES OEM MANUAL MAA3182SC, MAB3091SC INTELLIGENT DISK DRIVES OEM MANUAL SCSI LOGICAL INTERFACE SPECIFICATIONS C141-E039-01EN FOR SAFE OPERATION Handling of This manual This manual contains important information for using

More information

2. Which of the following resources is not one which can result in deadlocking processes? a. a disk file b. a semaphore c. the central processor (CPU)

2. Which of the following resources is not one which can result in deadlocking processes? a. a disk file b. a semaphore c. the central processor (CPU) CSCI 4500 / 8506 Sample Questions for Quiz 4 Covers Modules 7 and 8 1. Deadlock occurs when each process in a set of processes a. is taking a very long time to complete. b. is waiting for an event (or

More information

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto Ricardo Rocha Department of Computer Science Faculty of Sciences University of Porto Slides based on the book Operating System Concepts, 9th Edition, Abraham Silberschatz, Peter B. Galvin and Greg Gagne,

More information

How To Install Windows Xp Without Cd Rom Drive Bootable Usb And Floppy

How To Install Windows Xp Without Cd Rom Drive Bootable Usb And Floppy How To Install Windows Xp Without Cd Rom Drive Bootable Usb And Floppy You can install Windows XP from USB drive or any removable drive. Try this procedure here to prepare bootable pen drive and install

More information

Introduction to Operating Systems. Chapter Chapter

Introduction to Operating Systems. Chapter Chapter Introduction to Operating Systems Chapter 1 1.3 Chapter 1.5 1.9 Learning Outcomes High-level understand what is an operating system and the role it plays A high-level understanding of the structure of

More information

Silberschatz and Galvin Chapter 12

Silberschatz and Galvin Chapter 12 Silberschatz and Galvin Chapter 12 I/O Systems CPSC 410--Richard Furuta 3/19/99 1 Topic overview I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O requests to hardware operations

More information

Techno India Batanagar Department of Computer Science & Engineering. Model Questions. Multiple Choice Questions:

Techno India Batanagar Department of Computer Science & Engineering. Model Questions. Multiple Choice Questions: Techno India Batanagar Department of Computer Science & Engineering Model Questions Subject Name: Operating System Multiple Choice Questions: Subject Code: CS603 1) Shell is the exclusive feature of a)

More information

spwr_base & spwr_chan

spwr_base & spwr_chan DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, CA 95060 831-457-8891 Fax 831-457-4793 http://www.dyneng.com sales@dyneng.com Est. 1988 spwr_base & spwr_chan Linux Driver Documentation Manual Revision

More information

Linux Driver and C/C++ API for PCI/ISA Controllers

Linux Driver and C/C++ API for PCI/ISA Controllers Linux Driver and C/C++ API for PCI/ISA Controllers Procedures to download and install the auto installation program for drivers: step 1: download the galilisa-1.0-1.i386.rpm file if you are using ISA controllers;

More information

Generic Model of I/O Module Interface to CPU and Memory Interface to one or more peripherals

Generic Model of I/O Module Interface to CPU and Memory Interface to one or more peripherals William Stallings Computer Organization and Architecture 7 th Edition Chapter 7 Input/Output Input/Output Problems Wide variety of peripherals Delivering different amounts of data At different speeds In

More information

I/O Systems. Jo, Heeseung

I/O Systems. Jo, Heeseung I/O Systems Jo, Heeseung Today's Topics Device characteristics Block device vs. Character device Direct I/O vs. Memory-mapped I/O Polling vs. Interrupts Programmed I/O vs. DMA Blocking vs. Non-blocking

More information

Manual: Errata 1 P R E L I M I N A R Y. Manual Index: 07. CP605 Manual: 25095

Manual: Errata 1 P R E L I M I N A R Y. Manual Index: 07. CP605 Manual: 25095 CP605 Errata 1 Manual Index: 07 Table of Contents: 1. Reference: Page 5-3, Chapter 5, Phoenix BIOS... 1-3 ID 25095, Rev. 07 Errata 1-1 CP605 This page has been intentionally left blank. Errata 1-2 ID 25095,

More information

Digital System Design

Digital System Design Digital System Design by Dr. Lesley Shannon Email: lshannon@ensc.sfu.ca Course Website: http://www.ensc.sfu.ca/~lshannon/courses/ensc350 Simon Fraser University i Slide Set: 15 Date: March 30, 2009 Slide

More information

ROYAL INSTITUTE OF INFORMATION & MANAGEMENT

ROYAL INSTITUTE OF INFORMATION & MANAGEMENT ROYAL INSTITUTE OF INFORMATION & MANAGEMENT Computer Hardware Course Contents : A+ Operating System Technologies: Introduction to Computers Types of Software & languages Introduction to Operating System

More information

I/O Devices. Nima Honarmand (Based on slides by Prof. Andrea Arpaci-Dusseau)

I/O Devices. Nima Honarmand (Based on slides by Prof. Andrea Arpaci-Dusseau) I/O Devices Nima Honarmand (Based on slides by Prof. Andrea Arpaci-Dusseau) Hardware Support for I/O CPU RAM Network Card Graphics Card Memory Bus General I/O Bus (e.g., PCI) Canonical Device OS reads/writes

More information

Viewing the tm4c123gh6pm_startup_ccs.c file, the first piece of code we see after the comments is shown in Figure 1.

Viewing the tm4c123gh6pm_startup_ccs.c file, the first piece of code we see after the comments is shown in Figure 1. Viewing the tm4c123gh6pm_startup_ccs.c file, the first piece of code we see after the comments is shown in Figure 1. Figure 1 Forward declaration for the default handlers These are the forward declarations,

More information