Enabled -Wall and -Werror and fixed resulting bugs.

svn path=/trunk/; revision=6638
This commit is contained in:
Eric Kohl 2003-11-13 14:22:03 +00:00
parent 3145ec42fb
commit 97dc195d03
16 changed files with 451 additions and 398 deletions

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.13 2001/08/21 20:13:10 chorns Exp $ # $Id: makefile,v 1.14 2003/11/13 14:20:44 ekohl Exp $
PATH_TO_TOP = ../../.. PATH_TO_TOP = ../../..
@ -8,6 +8,8 @@ TARGET_NAME = beep
TARGET_OBJECTS = beep.o TARGET_OBJECTS = beep.o
TARGET_CFLAGS = -Wall -Werror
include $(PATH_TO_TOP)/rules.mak include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk include $(TOOLS_PATH)/helper.mk

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.20 2003/04/05 09:37:41 chorns Exp $ # $Id: makefile,v 1.21 2003/11/13 14:20:53 ekohl Exp $
PATH_TO_TOP = ../../.. PATH_TO_TOP = ../../..
@ -10,6 +10,8 @@ TARGET_NAME = blue
TARGET_OBJECTS = blue.o TARGET_OBJECTS = blue.o
TARGET_CFLAGS = -Wall -Werror
include $(PATH_TO_TOP)/rules.mak include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk include $(TOOLS_PATH)/helper.mk

View file

@ -1,4 +1,4 @@
# $Id: Makefile,v 1.11 2003/04/05 09:37:42 chorns Exp $ # $Id: Makefile,v 1.12 2003/11/13 14:22:03 ekohl Exp $
PATH_TO_TOP = ../../.. PATH_TO_TOP = ../../..
@ -13,6 +13,8 @@ TARGET_OBJECTS = \
floppy.o \ floppy.o \
isr.o isr.o
TARGET_CFLAGS = -Wall -Werror
include $(PATH_TO_TOP)/rules.mak include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk include $(TOOLS_PATH)/helper.mk

View file

@ -11,134 +11,180 @@
VOID STDCALL VOID STDCALL
FloppyDpc(PKDPC Dpc, FloppyDpc (PKDPC Dpc,
PDEVICE_OBJECT DeviceObject, PDEVICE_OBJECT DeviceObject,
PIRP Irp, PIRP Irp,
PVOID Context) PVOID Context)
{ {
PCONTROLLER_OBJECT Controller = (PCONTROLLER_OBJECT)Context; PCONTROLLER_OBJECT Controller;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension;
ControllerExtension->DpcState( Dpc,
Controller = (PCONTROLLER_OBJECT)Context;
ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
ControllerExtension->DpcState (Dpc,
DeviceObject, DeviceObject,
Irp, Irp,
Context ); Context);
} }
VOID STDCALL VOID STDCALL
FloppyDpcDetect(PKDPC Dpc, FloppyDpcDetect (PKDPC Dpc,
PDEVICE_OBJECT DeviceObject, PDEVICE_OBJECT DeviceObject,
PIRP Irp, PIRP Irp,
PVOID Context) PVOID Context)
{ {
PCONTROLLER_OBJECT Controller = (PCONTROLLER_OBJECT)Context; PCONTROLLER_OBJECT Controller;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension;
KeSetEvent( &ControllerExtension->Event, 0, FALSE );
Controller = (PCONTROLLER_OBJECT)Context;
ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
KeSetEvent (&ControllerExtension->Event,
0,
FALSE);
} }
VOID STDCALL VOID STDCALL
FloppyDpcFailIrp(PKDPC Dpc, FloppyDpcFailIrp (PKDPC Dpc,
PDEVICE_OBJECT DeviceObject, PDEVICE_OBJECT DeviceObject,
PIRP Irp, PIRP Irp,
PVOID Context) PVOID Context)
{ {
Irp->IoStatus.Status = STATUS_DEVICE_NOT_READY; Irp->IoStatus.Status = STATUS_DEVICE_NOT_READY;
Irp->IoStatus.Information = 0;
CHECKPOINT; CHECKPOINT;
IoCompleteRequest( Irp, 0 ); IoCompleteRequest (Irp,
IO_NO_INCREMENT);
} }
VOID STDCALL
FloppyMotorSpindownDpc(PKDPC Dpc,
PVOID Context,
PVOID Arg1,
PVOID Arg2 )
{
PCONTROLLER_OBJECT Controller = (PCONTROLLER_OBJECT)Context;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
PFLOPPY_DEVICE_EXTENSION DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)ControllerExtension->Device->DeviceExtension;
// queue call to turn off motor
IoAllocateController( Controller,
ControllerExtension->Device,
FloppyExecuteSpindown,
ControllerExtension );
}
VOID STDCALL VOID STDCALL
FloppyMotorSpinupDpc(PKDPC Dpc, FloppyMotorSpindownDpc (PKDPC Dpc,
PVOID Context, PVOID Context,
PVOID Arg1, PVOID Arg1,
PVOID Arg2) PVOID Arg2)
{ {
PCONTROLLER_OBJECT Controller = (PCONTROLLER_OBJECT)Context; PCONTROLLER_OBJECT Controller;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension;
PFLOPPY_DEVICE_EXTENSION DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)ControllerExtension->Device->DeviceExtension;
LARGE_INTEGER Timeout;
Timeout.QuadPart = FLOPPY_MOTOR_SPINDOWN_TIME; Controller = (PCONTROLLER_OBJECT)Context;
// Motor has had time to spin up, mark motor as spun up and restart IRP ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
// don't forget to set the spindown timer
KeSetTimer( &ControllerExtension->SpinupTimer, /* queue call to turn off motor */
Timeout, IoAllocateController (Controller,
&ControllerExtension->MotorSpindownDpc );
DPRINT( "Motor spun up, retrying operation\n" );
ControllerExtension->MotorOn = DeviceExtension->DriveSelect;
IoFreeController( Controller );
IoAllocateController( Controller,
ControllerExtension->Device, ControllerExtension->Device,
FloppyExecuteReadWrite, FloppyExecuteSpindown,
ControllerExtension->Irp ); ControllerExtension);
} }
VOID STDCALL VOID STDCALL
FloppySeekDpc(PKDPC Dpc, FloppyMotorSpinupDpc (PKDPC Dpc,
PVOID Context,
PVOID Arg1,
PVOID Arg2)
{
PCONTROLLER_OBJECT Controller;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension;
PFLOPPY_DEVICE_EXTENSION DeviceExtension;
LARGE_INTEGER Timeout;
Controller = (PCONTROLLER_OBJECT)Context;
ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)ControllerExtension->Device->DeviceExtension;
Timeout.QuadPart = FLOPPY_MOTOR_SPINDOWN_TIME;
// Motor has had time to spin up, mark motor as spun up and restart IRP
// don't forget to set the spindown timer
KeSetTimer (&ControllerExtension->SpinupTimer,
Timeout,
&ControllerExtension->MotorSpindownDpc);
DPRINT ("Motor spun up, retrying operation\n");
ControllerExtension->MotorOn = DeviceExtension->DriveSelect;
IoFreeController (Controller);
IoAllocateController (Controller,
ControllerExtension->Device,
FloppyExecuteReadWrite,
ControllerExtension->Irp);
}
VOID STDCALL
FloppySeekDpc (PKDPC Dpc,
PDEVICE_OBJECT DeviceObject, PDEVICE_OBJECT DeviceObject,
PIRP Irp, PIRP Irp,
PVOID Context) PVOID Context)
{ {
PFLOPPY_DEVICE_EXTENSION DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)DeviceObject->DeviceExtension; PFLOPPY_DEVICE_EXTENSION DeviceExtension;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)DeviceExtension->Controller->ControllerExtension; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension;
// if the seek failed, fail the IRP DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
if( ControllerExtension->St0 & FLOPPY_ST0_GDMASK ) ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)DeviceExtension->Controller->ControllerExtension;
/* If the seek failed, fail the IRP */
if (ControllerExtension->St0 & FLOPPY_ST0_GDMASK)
{ {
ControllerExtension->Irp->IoStatus.Status = STATUS_DISK_CORRUPT_ERROR; ControllerExtension->Irp->IoStatus.Status = STATUS_DISK_CORRUPT_ERROR;
ControllerExtension->Irp->IoStatus.Information = 0; ControllerExtension->Irp->IoStatus.Information = 0;
DPRINT( "Failing IRP: St0 = %2x, St1 = %2x, St2 = %2x\n", DPRINT ("Failing IRP: St0 = %2x, St1 = %2x, St2 = %2x\n",
ControllerExtension->St0, ControllerExtension->St0,
ControllerExtension->St1, ControllerExtension->St1,
ControllerExtension->St2 ); ControllerExtension->St2);
for(;;); for (;;);
IoCompleteRequest( ControllerExtension->Irp, 0 ); IoCompleteRequest (ControllerExtension->Irp,
IoFreeController( DeviceExtension->Controller ); IO_NO_INCREMENT);
IoFreeController (DeviceExtension->Controller);
return; return;
} }
KeStallExecutionProcessor( 10000 );
DPRINT( "Seek completed, now on cyl %2x\n", DeviceExtension->Cyl ); KeStallExecutionProcessor (10000);
// now that we are on the right cyl, restart the read
if( FloppyExecuteReadWrite( DeviceObject, DPRINT ("Seek completed, now on cyl %2x\n", DeviceExtension->Cyl);
/* Now that we are on the right cyl, restart the read */
if (FloppyExecuteReadWrite (DeviceObject,
ControllerExtension->Irp, ControllerExtension->Irp,
ControllerExtension->MapRegisterBase, ControllerExtension->MapRegisterBase,
ControllerExtension->Irp ) == DeallocateObject ) ControllerExtension->Irp) == DeallocateObject)
IoFreeController( DeviceExtension->Controller ); {
IoFreeController (DeviceExtension->Controller);
}
} }
VOID STDCALL VOID STDCALL
FloppyDpcReadWrite(PKDPC Dpc, FloppyDpcReadWrite (PKDPC Dpc,
PDEVICE_OBJECT DeviceObject, PDEVICE_OBJECT DeviceObject,
PIRP Irp, PIRP Irp,
PVOID Context) PVOID Context)
{ {
PCONTROLLER_OBJECT Controller = (PCONTROLLER_OBJECT)Context; PCONTROLLER_OBJECT Controller;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension;
PFLOPPY_DEVICE_EXTENSION DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)ControllerExtension->Device->DeviceExtension; PFLOPPY_DEVICE_EXTENSION DeviceExtension;
DWORD SectorSize = 128 << ControllerExtension->SectorSizeCode; ULONG SectorSize;
PIO_STACK_LOCATION Stk = IoGetCurrentIrpStackLocation( ControllerExtension->Irp ); PIO_STACK_LOCATION Stack;
BOOLEAN WriteToDevice = Stk->MajorFunction == IRP_MJ_WRITE ? TRUE : FALSE; BOOLEAN WriteToDevice;
Controller = (PCONTROLLER_OBJECT)Context;
ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)ControllerExtension->Device->DeviceExtension;
Irp = ControllerExtension->Irp; Irp = ControllerExtension->Irp;
// if the IO failed, fail the IRP
if( ControllerExtension->St0 & FLOPPY_ST0_GDMASK ) Stack = IoGetCurrentIrpStackLocation (Irp);
SectorSize = 128 << ControllerExtension->SectorSizeCode;
WriteToDevice = Stack->MajorFunction == IRP_MJ_WRITE ? TRUE : FALSE;
/* If the IO failed, fail the IRP */
if (ControllerExtension->St0 & FLOPPY_ST0_GDMASK)
{ {
Irp->IoStatus.Status = STATUS_DISK_CORRUPT_ERROR; Irp->IoStatus.Status = STATUS_DISK_CORRUPT_ERROR;
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;
@ -147,71 +193,86 @@ FloppyDpcReadWrite(PKDPC Dpc,
ControllerExtension->St1, ControllerExtension->St1,
ControllerExtension->St2 ); ControllerExtension->St2 );
for(;;); for(;;);
IoCompleteRequest( Irp, 0 ); IoCompleteRequest (Irp,
IoFreeController( Controller ); IO_NO_INCREMENT);
IoFreeController (Controller);
return; return;
} }
// don't forget to flush the buffers
/* Don't forget to flush the buffers */
IoFlushAdapterBuffers( ControllerExtension->AdapterObject, IoFlushAdapterBuffers( ControllerExtension->AdapterObject,
ControllerExtension->Irp->MdlAddress, ControllerExtension->Irp->MdlAddress,
ControllerExtension->MapRegisterBase, ControllerExtension->MapRegisterBase,
ControllerExtension->Irp->Tail.Overlay.DriverContext[0], ControllerExtension->Irp->Tail.Overlay.DriverContext[0],
ControllerExtension->TransferLength, ControllerExtension->TransferLength,
WriteToDevice ); WriteToDevice);
DPRINT( "St0 = %2x, St1 %2x, St2 = %2x\n", DPRINT ("St0 = %2x St1 = %2x St2 = %2x\n",
ControllerExtension->St0, ControllerExtension->St0,
ControllerExtension->St1, ControllerExtension->St1,
ControllerExtension->St2 ); ControllerExtension->St2);
// update buffer info
Stk->Parameters.Read.ByteOffset.u.LowPart += ControllerExtension->TransferLength;
Stk->Parameters.Read.Length -= ControllerExtension->TransferLength;
// drivercontext used for current va
(DWORD)ControllerExtension->Irp->Tail.Overlay.DriverContext[0] += ControllerExtension->TransferLength;
DPRINT( "First dword: %x\n", *((DWORD *)ControllerExtension->MapRegisterBase) ) /* Update buffer info */
Stack->Parameters.Read.ByteOffset.u.LowPart += ControllerExtension->TransferLength;
Stack->Parameters.Read.Length -= ControllerExtension->TransferLength;
// if there is more IO to be done, restart execute routine to issue next read /* drivercontext used for current va */
if( Stk->Parameters.Read.Length ) (ULONG)ControllerExtension->Irp->Tail.Overlay.DriverContext[0] += ControllerExtension->TransferLength;
DPRINT ("First ulong: %x\n", *((PULONG)ControllerExtension->MapRegisterBase))
/* If there is more IO to be done, restart execute routine to issue next read */
if (Stack->Parameters.Read.Length != 0)
{ {
if( FloppyExecuteReadWrite( DeviceObject, if (FloppyExecuteReadWrite (DeviceObject,
Irp, Irp,
ControllerExtension->MapRegisterBase, ControllerExtension->MapRegisterBase,
Irp ) == DeallocateObject ) Irp ) == DeallocateObject)
IoFreeController( Controller ); {
IoFreeController (Controller);
} }
else { }
IoFreeController( Controller ); else
// otherwise, complete the Irp {
IoCompleteRequest( Irp, 0 ); /* Otherwise, complete the IRP */
IoCompleteRequest (Irp,
IO_NO_INCREMENT);
IoFreeController (Controller);
} }
} }
VOID STDCALL VOID STDCALL
FloppyDpcDetectMedia(PKDPC Dpc, FloppyDpcDetectMedia (PKDPC Dpc,
PDEVICE_OBJECT DeviceObject, PDEVICE_OBJECT DeviceObject,
PIRP Irp, PIRP Irp,
PVOID Context) PVOID Context)
{ {
PCONTROLLER_OBJECT Controller = (PCONTROLLER_OBJECT)Context; PCONTROLLER_OBJECT Controller;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension;
// If the read ID failed, fail the irp
if( ControllerExtension->St1 != 0 ) Controller = (PCONTROLLER_OBJECT)Context;
ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
/* If the read ID failed, fail the IRP */
if (ControllerExtension->St1 != 0)
{ {
DPRINT1( "Read ID failed: ST1 = %2x\n", ControllerExtension->St1 ); DPRINT1 ("Read ID failed: ST1 = %2x\n", ControllerExtension->St1);
IoFreeController( Controller ); IoFreeController (Controller);
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;
Irp->IoStatus.Status = STATUS_DEVICE_NOT_READY; Irp->IoStatus.Status = STATUS_DEVICE_NOT_READY;
IoCompleteRequest( Irp, 0 ); IoCompleteRequest (Irp,
IO_NO_INCREMENT);
return; return;
} }
// set media type, and restart the IRP from the beginning
((PFLOPPY_DEVICE_EXTENSION)ControllerExtension->Device->DeviceExtension)->MediaType = 0;
DPRINT( "Media detected, restarting IRP\n" );
// don't forget to free the controller so that the now queued routine may execute
IoFreeController( Controller );
IoAllocateController( Controller, /* Set media type, and restart the IRP from the beginning */
((PFLOPPY_DEVICE_EXTENSION)ControllerExtension->Device->DeviceExtension)->MediaType = 0;
DPRINT ("Media detected, restarting IRP\n");
/* Don't forget to free the controller so that the now queued routine may execute */
IoFreeController (Controller);
IoAllocateController (Controller,
DeviceObject, DeviceObject,
FloppyExecuteReadWrite, FloppyExecuteReadWrite,
Irp ); Irp);
} }

View file

@ -42,10 +42,10 @@ FloppyCreateController(PDRIVER_OBJECT DriverObject,
UNICODE_STRING DeviceName; UNICODE_STRING DeviceName;
NTSTATUS Status; NTSTATUS Status;
PDEVICE_OBJECT DeviceObject; PDEVICE_OBJECT DeviceObject;
PCONFIGURATION_INFORMATION ConfigInfo; // PCONFIGURATION_INFORMATION ConfigInfo;
LARGE_INTEGER Timeout; LARGE_INTEGER Timeout;
BYTE Byte; // BYTE Byte;
int c; // int c;
PCONFIGURATION_INFORMATION Config; PCONFIGURATION_INFORMATION Config;
DEVICE_DESCRIPTION DeviceDescription; DEVICE_DESCRIPTION DeviceDescription;
ULONG MaxMapRegs; ULONG MaxMapRegs;
@ -431,79 +431,99 @@ FloppyExecuteReadWrite(PDEVICE_OBJECT DeviceObject,
return KeepObject; return KeepObject;
} }
NTSTATUS STDCALL NTSTATUS STDCALL
FloppyDispatchOpenClose(PDEVICE_OBJECT DeviceObject, FloppyDispatchOpenClose (PDEVICE_OBJECT DeviceObject,
PIRP Irp) PIRP Irp)
{ {
DPRINT("FloppyDispatchOpenClose\n"); DPRINT ("FloppyDispatchOpenClose\n");
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
NTSTATUS STDCALL NTSTATUS STDCALL
FloppyDispatchReadWrite(PDEVICE_OBJECT DeviceObject, FloppyDispatchReadWrite (PDEVICE_OBJECT DeviceObject,
PIRP Irp) PIRP Irp)
{ {
PFLOPPY_DEVICE_EXTENSION DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)DeviceObject->DeviceExtension; PFLOPPY_DEVICE_EXTENSION DeviceExtension;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)DeviceExtension->Controller->ControllerExtension; PIO_STACK_LOCATION Stack;
PIO_STACK_LOCATION Stk = IoGetCurrentIrpStackLocation( Irp );
KIRQL oldlvl; KIRQL oldlvl;
if( Stk->Parameters.Read.ByteOffset.u.HighPart ) DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
Stack = IoGetCurrentIrpStackLocation (Irp);
if (Stack->Parameters.Read.ByteOffset.u.HighPart)
{ {
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER; Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;
IoCompleteRequest( Irp, 1 ); IoCompleteRequest (Irp, 1);
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
} }
// store currentva in drivercontext
Irp->Tail.Overlay.DriverContext[0] = MmGetMdlVirtualAddress( Irp->MdlAddress ); /* Store currentva in drivercontext */
DPRINT( "FloppyDispatchReadWrite: offset = %x, length = %x, va = %x\n", Irp->Tail.Overlay.DriverContext[0] = MmGetMdlVirtualAddress (Irp->MdlAddress);
Stk->Parameters.Read.ByteOffset.u.LowPart, DPRINT ("FloppyDispatchReadWrite: offset = %x, length = %x, va = %x\n",
Stk->Parameters.Read.Length, Stack->Parameters.Read.ByteOffset.u.LowPart,
Irp->Tail.Overlay.DriverContext[0] ); Stack->Parameters.Read.Length,
// Queue IRP Irp->Tail.Overlay.DriverContext[0]);
/* Queue IRP */
Irp->IoStatus.Status = STATUS_SUCCESS; Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = Stk->Parameters.Read.Length; Irp->IoStatus.Information = Stack->Parameters.Read.Length;
IoMarkIrpPending( Irp ); IoMarkIrpPending (Irp);
KeRaiseIrql( DISPATCH_LEVEL, &oldlvl );
IoAllocateController( ((PFLOPPY_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->Controller, KeRaiseIrql (DISPATCH_LEVEL,
&oldlvl);
IoAllocateController (DeviceExtension->Controller,
DeviceObject, DeviceObject,
FloppyExecuteReadWrite, FloppyExecuteReadWrite,
Irp ); Irp);
KeLowerIrql( oldlvl ); KeLowerIrql (oldlvl);
DPRINT( "oldlvl = %x\n", oldlvl ); DPRINT( "oldlvl = %x\n", oldlvl );
return STATUS_PENDING; return STATUS_PENDING;
} }
IO_ALLOCATION_ACTION STDCALL IO_ALLOCATION_ACTION STDCALL
FloppyAdapterControl(PDEVICE_OBJECT DeviceObject, FloppyAdapterControl (PDEVICE_OBJECT DeviceObject,
PIRP Irp, PIRP Irp,
PVOID MapRegisterBase, PVOID MapRegisterBase,
PVOID Context) PVOID Context)
{ {
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Context; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension;
// just set the event, and return KeepObject ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Context;
CHECKPOINT; CHECKPOINT;
/* Just set the event, and return KeepObject */
ControllerExtension->MapRegisterBase = MapRegisterBase; ControllerExtension->MapRegisterBase = MapRegisterBase;
KeSetEvent( &ControllerExtension->Event, 0, FALSE ); KeSetEvent (&ControllerExtension->Event,
0,
FALSE);
return KeepObject; return KeepObject;
} }
NTSTATUS STDCALL NTSTATUS STDCALL
FloppyDispatchDeviceControl(PDEVICE_OBJECT DeviceObject, FloppyDispatchDeviceControl (PDEVICE_OBJECT DeviceObject,
PIRP Irp) PIRP Irp)
{ {
PIO_STACK_LOCATION IrpStack; PIO_STACK_LOCATION Stack;
ULONG ControlCode, InputLength, OutputLength; ULONG ControlCode;
ULONG InputLength;
ULONG OutputLength;
NTSTATUS Status; NTSTATUS Status;
DPRINT("FloppyDispatchDeviceControl\n"); DPRINT ("FloppyDispatchDeviceControl\n");
IrpStack = IoGetCurrentIrpStackLocation(Irp); Stack = IoGetCurrentIrpStackLocation(Irp);
ControlCode = IrpStack->Parameters.DeviceIoControl.IoControlCode; ControlCode = Stack->Parameters.DeviceIoControl.IoControlCode;
InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength; InputLength = Stack->Parameters.DeviceIoControl.InputBufferLength;
OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength; OutputLength = Stack->Parameters.DeviceIoControl.OutputBufferLength;
switch (ControlCode) switch (ControlCode)
{ {
@ -515,6 +535,7 @@ FloppyDispatchDeviceControl(PDEVICE_OBJECT DeviceObject,
else else
{ {
PDISK_GEOMETRY Geometry = Irp->AssociatedIrp.SystemBuffer; PDISK_GEOMETRY Geometry = Irp->AssociatedIrp.SystemBuffer;
// FIXME: read the first sector of the diskette // FIXME: read the first sector of the diskette
Geometry->MediaType = F3_1Pt44_512; Geometry->MediaType = F3_1Pt44_512;
Geometry->Cylinders.QuadPart = 80; Geometry->Cylinders.QuadPart = 80;
@ -525,15 +546,23 @@ FloppyDispatchDeviceControl(PDEVICE_OBJECT DeviceObject,
Irp->IoStatus.Information = sizeof(DISK_GEOMETRY); Irp->IoStatus.Information = sizeof(DISK_GEOMETRY);
} }
break; break;
default: default:
Status = STATUS_INVALID_DEVICE_REQUEST; Status = STATUS_INVALID_DEVICE_REQUEST;
Irp->IoStatus.Information = 0;
break;
} }
Irp->IoStatus.Status = Status; Irp->IoStatus.Status = Status;
IoCompleteRequest(Irp, NT_SUCCESS(Status) ? IO_DISK_INCREMENT : IO_NO_INCREMENT); IoCompleteRequest (Irp,
NT_SUCCESS(Status) ? IO_DISK_INCREMENT : IO_NO_INCREMENT);
return Status; return Status;
} }
/* ModuleEntry
/*
* DriverEntry
* *
* DESCRIPTION: * DESCRIPTION:
* This function initializes the driver, locates and claims * This function initializes the driver, locates and claims
@ -553,10 +582,10 @@ FloppyDispatchDeviceControl(PDEVICE_OBJECT DeviceObject,
* NTSTATUS * NTSTATUS
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
DriverEntry(IN PDRIVER_OBJECT DriverObject, DriverEntry (IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath) IN PUNICODE_STRING RegistryPath)
{ {
DPRINT("Floppy driver\n"); DPRINT ("Floppy driver\n");
/* Export other driver entry points... */ /* Export other driver entry points... */
DriverObject->MajorFunction[IRP_MJ_CREATE] = (PDRIVER_DISPATCH)FloppyDispatchOpenClose; DriverObject->MajorFunction[IRP_MJ_CREATE] = (PDRIVER_DISPATCH)FloppyDispatchOpenClose;
@ -567,11 +596,11 @@ DriverEntry(IN PDRIVER_OBJECT DriverObject,
(PDRIVER_DISPATCH)FloppyDispatchDeviceControl; (PDRIVER_DISPATCH)FloppyDispatchDeviceControl;
/* Try to detect controller and abort if it fails */ /* Try to detect controller and abort if it fails */
if (!FloppyCreateController(DriverObject, if (!FloppyCreateController (DriverObject,
&ControllerParameters[0], &ControllerParameters[0],
0)) 0))
{ {
DPRINT("Could not find floppy controller\n"); DPRINT ("Could not find floppy controller\n");
return STATUS_NO_SUCH_DEVICE; return STATUS_NO_SUCH_DEVICE;
} }

View file

@ -48,7 +48,7 @@ BOOLEAN FloppyIsrUnexpected( PCONTROLLER_OBJECT Controller )
BOOLEAN FloppyIsrDetectMedia( PCONTROLLER_OBJECT Controller ) BOOLEAN FloppyIsrDetectMedia( PCONTROLLER_OBJECT Controller )
{ {
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
BYTE SectorSize; UCHAR SectorSize;
DPRINT("FloppyIsrDetectMedia() called\n"); DPRINT("FloppyIsrDetectMedia() called\n");
@ -128,10 +128,12 @@ BOOLEAN FloppyIsrReadWrite( PCONTROLLER_OBJECT Controller )
{ {
// read result registers from read or write command, and queue dpc to start next operation // read result registers from read or write command, and queue dpc to start next operation
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
BYTE Cyl, Head, Sector; UCHAR Cyl;
PFLOPPY_DEVICE_EXTENSION DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)ControllerExtension->Device->DeviceExtension; UCHAR Head;
PIO_STACK_LOCATION Stk = IoGetCurrentIrpStackLocation( ControllerExtension->Irp ); UCHAR Sector;
BOOLEAN WriteToDevice = Stk->MajorFunction == IRP_MJ_WRITE ? TRUE : FALSE; // PFLOPPY_DEVICE_EXTENSION DeviceExtension = (PFLOPPY_DEVICE_EXTENSION)ControllerExtension->Device->DeviceExtension;
// PIO_STACK_LOCATION Stk = IoGetCurrentIrpStackLocation( ControllerExtension->Irp );
// BOOLEAN WriteToDevice = Stk->MajorFunction == IRP_MJ_WRITE ? TRUE : FALSE;
ControllerExtension->St0 = FloppyReadDATA( ControllerExtension->PortBase ); ControllerExtension->St0 = FloppyReadDATA( ControllerExtension->PortBase );
@ -147,6 +149,7 @@ BOOLEAN FloppyIsrReadWrite( PCONTROLLER_OBJECT Controller )
Sector = FloppyReadDATA( ControllerExtension->PortBase ); // sector Sector = FloppyReadDATA( ControllerExtension->PortBase ); // sector
KeStallExecutionProcessor( 100 ); KeStallExecutionProcessor( 100 );
ControllerExtension->SectorSizeCode = FloppyReadDATA( ControllerExtension->PortBase ); ControllerExtension->SectorSizeCode = FloppyReadDATA( ControllerExtension->PortBase );
// reprogam for next sector if we are not done reading track // reprogam for next sector if we are not done reading track
/* if( ( ControllerExtension->TransferLength -= ( 128 << ControllerExtension->SectorSizeCode ) ) ) /* if( ( ControllerExtension->TransferLength -= ( 128 << ControllerExtension->SectorSizeCode ) ) )
{ {
@ -176,15 +179,19 @@ BOOLEAN FloppyIsrReadWrite( PCONTROLLER_OBJECT Controller )
return TRUE; return TRUE;
} }
// actual ISR, passes controll to handler for current state in state machine // actual ISR, passes controll to handler for current state in state machine
BOOLEAN STDCALL BOOLEAN STDCALL
FloppyIsr(PKINTERRUPT Interrupt, FloppyIsr (PKINTERRUPT Interrupt,
PVOID ServiceContext) PVOID ServiceContext)
{ {
PCONTROLLER_OBJECT Controller = (PCONTROLLER_OBJECT)ServiceContext; PCONTROLLER_OBJECT Controller;
PFLOPPY_CONTROLLER_EXTENSION ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension; PFLOPPY_CONTROLLER_EXTENSION ControllerExtension;
BYTE Byte; UCHAR Byte;
Controller = (PCONTROLLER_OBJECT)ServiceContext;
ControllerExtension = (PFLOPPY_CONTROLLER_EXTENSION)Controller->ControllerExtension;
// need to make sure interrupt is for us, and add some delay for the damn FDC // need to make sure interrupt is for us, and add some delay for the damn FDC
// without the delay, even though the thing has interrupted, it's still not ready // without the delay, even though the thing has interrupted, it's still not ready
@ -200,4 +207,4 @@ FloppyIsr(PKINTERRUPT Interrupt,
return ControllerExtension->IsrState( Controller ); return ControllerExtension->IsrState( Controller );
} }
/* EOF */

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: atapi.c,v 1.44 2003/08/22 13:50:39 ekohl Exp $ /* $Id: atapi.c,v 1.45 2003/11/13 14:17:51 ekohl Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS ATAPI miniport driver * PROJECT: ReactOS ATAPI miniport driver
@ -200,22 +200,16 @@ AtapiIdentifyDevice(IN ULONG CommandPort,
OUT PIDE_DRIVE_IDENTIFY DrvParms); OUT PIDE_DRIVE_IDENTIFY DrvParms);
static BOOLEAN static BOOLEAN
IDEResetController(IN ULONG CommandPort,
IN ULONG ControlPort);
static int
AtapiPolledRead(IN ULONG CommandPort, AtapiPolledRead(IN ULONG CommandPort,
IN ULONG ControlPort, IN ULONG ControlPort,
IN BYTE PreComp, IN UCHAR PreComp,
IN BYTE SectorCnt, IN UCHAR SectorCnt,
IN BYTE SectorNum, IN UCHAR SectorNum,
IN BYTE CylinderLow, IN UCHAR CylinderLow,
IN BYTE CylinderHigh, IN UCHAR CylinderHigh,
IN BYTE DrvHead, IN UCHAR DrvHead,
IN BYTE Command, IN UCHAR Command,
OUT BYTE *Buffer); OUT PUCHAR Buffer);
static ULONG static ULONG
AtapiSendAtapiCommand(IN PATAPI_MINIPORT_EXTENSION DeviceExtension, AtapiSendAtapiCommand(IN PATAPI_MINIPORT_EXTENSION DeviceExtension,
@ -1170,7 +1164,8 @@ AtapiFindDevices(PATAPI_MINIPORT_EXTENSION DeviceExtension,
ULONG ControlPortBase; ULONG ControlPortBase;
ULONG UnitNumber; ULONG UnitNumber;
ULONG Retries; ULONG Retries;
BYTE High, Low; UCHAR High;
UCHAR Low;
DPRINT("AtapiFindDevices() called\n"); DPRINT("AtapiFindDevices() called\n");
@ -1302,56 +1297,6 @@ AtapiFindDevices(PATAPI_MINIPORT_EXTENSION DeviceExtension,
} }
// AtapiResetController
//
// DESCRIPTION:
// Reset the controller and report completion status
//
// RUN LEVEL:
// PASSIVE_LEVEL
//
// ARGUMENTS:
// IN WORD CommandPort The address of the command port
// IN WORD ControlPort The address of the control port
//
// RETURNS:
//
static BOOLEAN
AtapiResetController(IN ULONG CommandPort,
IN ULONG ControlPort)
{
int Retries;
/* Assert drive reset line */
IDEWriteDriveControl(ControlPort, IDE_DC_SRST);
/* Wait for min. 25 microseconds */
ScsiPortStallExecution(IDE_RESET_PULSE_LENGTH);
/* Negate drive reset line */
IDEWriteDriveControl(ControlPort, 0);
/* Wait for BUSY negation */
for (Retries = 0; Retries < IDE_RESET_BUSY_TIMEOUT * 1000; Retries++)
{
if (!(IDEReadStatus(CommandPort) & IDE_SR_BUSY))
{
break;
}
ScsiPortStallExecution(10);
}
if (Retries >= IDE_RESET_BUSY_TIMEOUT * 1000)
{
return(FALSE);
}
// return TRUE if controller came back to life. and
// the registers are initialized correctly
return(IDEReadError(CommandPort) == 1);
}
/* /*
* AtapiIdentifyDevice * AtapiIdentifyDevice
* *
@ -1397,10 +1342,10 @@ AtapiIdentifyDevice(IN ULONG CommandPort,
0, 0,
(DriveNum ? IDE_DH_DRV1 : 0), (DriveNum ? IDE_DH_DRV1 : 0),
(Atapi ? IDE_CMD_IDENT_ATAPI_DRV : IDE_CMD_IDENT_ATA_DRV), (Atapi ? IDE_CMD_IDENT_ATAPI_DRV : IDE_CMD_IDENT_ATA_DRV),
(BYTE *)DrvParms) != 0) (PUCHAR)DrvParms) == FALSE)
{ {
DPRINT("IDEPolledRead() failed\n"); DPRINT("IDEPolledRead() failed\n");
return(FALSE); return FALSE;
} }
/* Report on drive parameters if debug mode */ /* Report on drive parameters if debug mode */
@ -1467,7 +1412,7 @@ AtapiIdentifyDevice(IN ULONG CommandPort,
} }
DPRINT("BytesPerSector %d\n", DrvParms->BytesPerSector); DPRINT("BytesPerSector %d\n", DrvParms->BytesPerSector);
return(TRUE); return TRUE;
} }
@ -1480,38 +1425,38 @@ AtapiIdentifyDevice(IN ULONG CommandPort,
// PASSIVE_LEVEL // PASSIVE_LEVEL
// //
// ARGUMENTS: // ARGUMENTS:
// IN WORD Address Address of command port for drive // IN ULONG CommandPort Address of command port for drive
// IN BYTE PreComp Value to write to precomp register // IN ULONG ControlPort Address of control port for drive
// IN BYTE SectorCnt Value to write to sectorCnt register // IN UCHAR PreComp Value to write to precomp register
// IN BYTE SectorNum Value to write to sectorNum register // IN UCHAR SectorCnt Value to write to sectorCnt register
// IN BYTE CylinderLow Value to write to CylinderLow register // IN UCHAR SectorNum Value to write to sectorNum register
// IN BYTE CylinderHigh Value to write to CylinderHigh register // IN UCHAR CylinderLow Value to write to CylinderLow register
// IN BYTE DrvHead Value to write to Drive/Head register // IN UCHAR CylinderHigh Value to write to CylinderHigh register
// IN BYTE Command Value to write to Command register // IN UCHAR DrvHead Value to write to Drive/Head register
// OUT BYTE *Buffer Buffer for output data // IN UCHAR Command Value to write to Command register
// OUT PUCHAR Buffer Buffer for output data
// //
// RETURNS: // RETURNS:
// int 0 is success, non 0 is an error code // BOOLEAN: TRUE success, FALSE error
// //
static int static BOOLEAN
AtapiPolledRead(IN ULONG CommandPort, AtapiPolledRead(IN ULONG CommandPort,
IN ULONG ControlPort, IN ULONG ControlPort,
IN BYTE PreComp, IN UCHAR PreComp,
IN BYTE SectorCnt, IN UCHAR SectorCnt,
IN BYTE SectorNum, IN UCHAR SectorNum,
IN BYTE CylinderLow, IN UCHAR CylinderLow,
IN BYTE CylinderHigh, IN UCHAR CylinderHigh,
IN BYTE DrvHead, IN UCHAR DrvHead,
IN BYTE Command, IN UCHAR Command,
OUT BYTE *Buffer) OUT PUCHAR Buffer)
{ {
ULONG SectorCount = 0; ULONG SectorCount = 0;
ULONG RetryCount; ULONG RetryCount;
BOOLEAN Junk = FALSE; BOOLEAN Junk = FALSE;
UCHAR Status; UCHAR Status;
//#if 0
/* Wait for BUSY to clear */ /* Wait for BUSY to clear */
for (RetryCount = 0; RetryCount < IDE_MAX_BUSY_RETRIES; RetryCount++) for (RetryCount = 0; RetryCount < IDE_MAX_BUSY_RETRIES; RetryCount++)
{ {
@ -1527,9 +1472,8 @@ AtapiPolledRead(IN ULONG CommandPort,
if (RetryCount >= IDE_MAX_BUSY_RETRIES) if (RetryCount >= IDE_MAX_BUSY_RETRIES)
{ {
DPRINT("Drive is BUSY for too long\n"); DPRINT("Drive is BUSY for too long\n");
return(IDE_ER_ABRT); return FALSE;
} }
//#endif
/* Write Drive/Head to select drive */ /* Write Drive/Head to select drive */
IDEWriteDriveHead(CommandPort, IDE_DH_FIXED | DrvHead); IDEWriteDriveHead(CommandPort, IDE_DH_FIXED | DrvHead);
@ -1552,7 +1496,7 @@ AtapiPolledRead(IN ULONG CommandPort,
} }
if (RetryCount >= IDE_MAX_BUSY_RETRIES) if (RetryCount >= IDE_MAX_BUSY_RETRIES)
{ {
return IDE_ER_ABRT; return FALSE;
} }
#endif #endif
@ -1601,8 +1545,9 @@ AtapiPolledRead(IN ULONG CommandPort,
ScsiPortStallExecution(50); ScsiPortStallExecution(50);
IDEReadStatus(CommandPort); IDEReadStatus(CommandPort);
return(IDE_ER_ABRT); return FALSE;
} }
if (Status & IDE_SR_DRQ) if (Status & IDE_SR_DRQ)
{ {
break; break;
@ -1613,7 +1558,7 @@ AtapiPolledRead(IN ULONG CommandPort,
ScsiPortStallExecution(50); ScsiPortStallExecution(50);
IDEReadStatus(CommandPort); IDEReadStatus(CommandPort);
return(IDE_ER_ABRT); return FALSE;
} }
} }
ScsiPortStallExecution(10); ScsiPortStallExecution(10);
@ -1626,7 +1571,7 @@ AtapiPolledRead(IN ULONG CommandPort,
ScsiPortStallExecution(50); ScsiPortStallExecution(50);
IDEReadStatus(CommandPort); IDEReadStatus(CommandPort);
return(IDE_ER_ABRT); return FALSE;
} }
while (1) while (1)
@ -1656,7 +1601,7 @@ AtapiPolledRead(IN ULONG CommandPort,
ScsiPortStallExecution(50); ScsiPortStallExecution(50);
IDEReadStatus(CommandPort); IDEReadStatus(CommandPort);
return(IDE_ER_ABRT); return FALSE;
} }
if (Status & IDE_SR_DRQ) if (Status & IDE_SR_DRQ)
{ {
@ -1678,7 +1623,7 @@ AtapiPolledRead(IN ULONG CommandPort,
ScsiPortStallExecution(50); ScsiPortStallExecution(50);
IDEReadStatus(CommandPort); IDEReadStatus(CommandPort);
return(0); return TRUE;
} }
} }
} }
@ -1822,7 +1767,7 @@ AtapiSendAtapiCommand(IN PATAPI_MINIPORT_EXTENSION DeviceExtension,
break; break;
} }
CdbSize = (DeviceExtension->DeviceParams[Srb->TargetId].ConfigBits & 0x3 == 1) ? 16 : 12; CdbSize = ((DeviceExtension->DeviceParams[Srb->TargetId].ConfigBits & 0x3) == 1) ? 16 : 12;
DPRINT("CdbSize: %lu\n", CdbSize); DPRINT("CdbSize: %lu\n", CdbSize);
/* Write command packet */ /* Write command packet */
@ -2281,7 +2226,7 @@ AtapiFlushCache(PATAPI_MINIPORT_EXTENSION DeviceExtension,
/* Wait for controller ready */ /* Wait for controller ready */
for (Retries = 0; Retries < IDE_MAX_WRITE_RETRIES; Retries++) for (Retries = 0; Retries < IDE_MAX_WRITE_RETRIES; Retries++)
{ {
BYTE Status = IDEReadStatus(DeviceExtension->CommandPortBase); Status = IDEReadStatus(DeviceExtension->CommandPortBase);
if (!(Status & IDE_SR_BUSY) || (Status & IDE_SR_ERR)) if (!(Status & IDE_SR_BUSY) || (Status & IDE_SR_ERR))
{ {
break; break;

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.2 2003/04/05 09:37:43 chorns Exp $ # $Id: makefile,v 1.3 2003/11/13 14:17:51 ekohl Exp $
PATH_TO_TOP = ../../.. PATH_TO_TOP = ../../..
@ -12,6 +12,8 @@ TARGET_DDKLIBS = scsiport.a
TARGET_OBJECTS = $(TARGET_NAME).o TARGET_OBJECTS = $(TARGET_NAME).o
TARGET_CFLAGS = -Werror -Wall
include $(PATH_TO_TOP)/rules.mak include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk include $(TOOLS_PATH)/helper.mk

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: cdrom.c,v 1.25 2003/11/10 18:09:54 ekohl Exp $ /* $Id: cdrom.c,v 1.26 2003/11/13 14:18:26 ekohl Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -437,16 +437,15 @@ CdromClassCreateDeviceObject(IN PDRIVER_OBJECT DriverObject,
IN PCLASS_INIT_DATA InitializationData) IN PCLASS_INIT_DATA InitializationData)
{ {
PDEVICE_EXTENSION DiskDeviceExtension; /* defined in class2.h */ PDEVICE_EXTENSION DiskDeviceExtension; /* defined in class2.h */
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING UnicodeDeviceDirName;
PDEVICE_OBJECT DiskDeviceObject; PDEVICE_OBJECT DiskDeviceObject;
SCSI_REQUEST_BLOCK Srb;
PCDROM_DATA CdromData; PCDROM_DATA CdromData;
CHAR NameBuffer[80]; CHAR NameBuffer[80];
HANDLE Handle; #if 0
SCSI_REQUEST_BLOCK Srb;
PUCHAR Buffer; PUCHAR Buffer;
ULONG Length; ULONG Length;
PCDB Cdb; PCDB Cdb;
#endif
NTSTATUS Status; NTSTATUS Status;
DPRINT("CdromClassCreateDeviceObject() called\n"); DPRINT("CdromClassCreateDeviceObject() called\n");

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.2 2003/04/05 09:37:43 chorns Exp $ # $Id: makefile,v 1.3 2003/11/13 14:18:26 ekohl Exp $
PATH_TO_TOP = ../../.. PATH_TO_TOP = ../../..
@ -12,6 +12,8 @@ TARGET_DDKLIBS = class2.a
TARGET_OBJECTS = $(TARGET_NAME).o TARGET_OBJECTS = $(TARGET_NAME).o
TARGET_CFLAGS = -Werror -Wall
include $(PATH_TO_TOP)/rules.mak include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk include $(TOOLS_PATH)/helper.mk

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: class2.c,v 1.45 2003/11/11 15:31:31 ekohl Exp $ /* $Id: class2.c,v 1.46 2003/11/13 14:18:53 ekohl Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -729,7 +729,6 @@ ScsiClassFindUnclaimedDevices(IN PCLASS_INIT_DATA InitializationData,
PUCHAR Buffer; PUCHAR Buffer;
ULONG Bus; ULONG Bus;
ULONG UnclaimedDevices = 0; ULONG UnclaimedDevices = 0;
NTSTATUS Status;
DPRINT("ScsiClassFindUnclaimedDevices() called\n"); DPRINT("ScsiClassFindUnclaimedDevices() called\n");
@ -1028,7 +1027,6 @@ ScsiClassInterpretSenseInfo(IN PDEVICE_OBJECT DeviceObject,
PIO_ERROR_LOG_PACKET LogPacket; PIO_ERROR_LOG_PACKET LogPacket;
#endif #endif
PSENSE_DATA SenseData; PSENSE_DATA SenseData;
NTSTATUS LogStatus;
BOOLEAN LogError; BOOLEAN LogError;
BOOLEAN Retry; BOOLEAN Retry;

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.4 2003/04/05 09:37:43 chorns Exp $ # $Id: makefile,v 1.5 2003/11/13 14:18:53 ekohl Exp $
PATH_TO_TOP = ../../.. PATH_TO_TOP = ../../..
@ -10,6 +10,8 @@ TARGET_NAME = class2
TARGET_OBJECTS = $(TARGET_NAME).o TARGET_OBJECTS = $(TARGET_NAME).o
TARGET_CFLAGS = -Werror -Wall
include $(PATH_TO_TOP)/rules.mak include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk include $(TOOLS_PATH)/helper.mk

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: disk.c,v 1.32 2003/07/23 18:45:08 ekohl Exp $ /* $Id: disk.c,v 1.33 2003/11/13 14:19:23 ekohl Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -1714,7 +1714,9 @@ ScsiDiskUpdateFixedDiskGeometry(IN PDEVICE_EXTENSION DeviceExtension)
HANDLE BusKey; HANDLE BusKey;
ULONG DiskNumber; ULONG DiskNumber;
ULONG Length; ULONG Length;
#if 0
ULONG i; ULONG i;
#endif
ULONG Cylinders; ULONG Cylinders;
ULONG Sectors; ULONG Sectors;
ULONG SectorsPerTrack; ULONG SectorsPerTrack;

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.3 2003/04/05 09:37:43 chorns Exp $ # $Id: makefile,v 1.4 2003/11/13 14:19:23 ekohl Exp $
PATH_TO_TOP = ../../.. PATH_TO_TOP = ../../..
@ -12,6 +12,8 @@ TARGET_DDKLIBS = class2.a
TARGET_OBJECTS = $(TARGET_NAME).o TARGET_OBJECTS = $(TARGET_NAME).o
TARGET_CFLAGS = -Werror -Wall
include $(PATH_TO_TOP)/rules.mak include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk include $(TOOLS_PATH)/helper.mk

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.5 2003/04/05 09:37:44 chorns Exp $ # $Id: makefile,v 1.6 2003/11/13 14:20:03 ekohl Exp $
PATH_TO_TOP = ../../.. PATH_TO_TOP = ../../..
@ -10,6 +10,8 @@ TARGET_NAME = scsiport
TARGET_OBJECTS = $(TARGET_NAME).o TARGET_OBJECTS = $(TARGET_NAME).o
TARGET_CFLAGS = -Werror -Wall
include $(PATH_TO_TOP)/rules.mak include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk include $(TOOLS_PATH)/helper.mk

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: scsiport.c,v 1.43 2003/11/01 10:42:32 hbirr Exp $ /* $Id: scsiport.c,v 1.44 2003/11/13 14:20:03 ekohl Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -73,12 +73,6 @@ static VOID STDCALL
ScsiPortStartIo(IN PDEVICE_OBJECT DeviceObject, ScsiPortStartIo(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp); IN PIRP Irp);
static IO_ALLOCATION_ACTION STDCALL
ScsiPortAllocateController(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID MapRegisterBase,
IN PVOID Context);
static BOOLEAN STDCALL static BOOLEAN STDCALL
ScsiPortStartPacket(IN OUT PVOID Context); ScsiPortStartPacket(IN OUT PVOID Context);
@ -127,6 +121,9 @@ static PSCSI_REQUEST_BLOCK
ScsiPortInitSenseRequestSrb(PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, ScsiPortInitSenseRequestSrb(PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
PSCSI_REQUEST_BLOCK OriginalSrb); PSCSI_REQUEST_BLOCK OriginalSrb);
static VOID
ScsiPortFreeSenseRequestSrb(PSCSI_PORT_DEVICE_EXTENSION DeviceExtension);
static NTSTATUS static NTSTATUS
SpiBuildDeviceMap (PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, SpiBuildDeviceMap (PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
PUNICODE_STRING RegistryPath); PUNICODE_STRING RegistryPath);
@ -471,6 +468,7 @@ ScsiPortGetSrb(IN PVOID DeviceExtension,
{ {
DPRINT1("ScsiPortGetSrb()\n"); DPRINT1("ScsiPortGetSrb()\n");
UNIMPLEMENTED; UNIMPLEMENTED;
return NULL;
} }
@ -610,7 +608,7 @@ ScsiPortInitialize(IN PVOID Argument1,
IN PVOID HwContext) IN PVOID HwContext)
{ {
PDRIVER_OBJECT DriverObject = (PDRIVER_OBJECT)Argument1; PDRIVER_OBJECT DriverObject = (PDRIVER_OBJECT)Argument1;
PUNICODE_STRING RegistryPath = (PUNICODE_STRING)Argument2; // PUNICODE_STRING RegistryPath = (PUNICODE_STRING)Argument2;
PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; PSCSI_PORT_DEVICE_EXTENSION DeviceExtension;
PCONFIGURATION_INFORMATION SystemConfig; PCONFIGURATION_INFORMATION SystemConfig;
PPORT_CONFIGURATION_INFORMATION PortConfig; PPORT_CONFIGURATION_INFORMATION PortConfig;
@ -1544,7 +1542,6 @@ ScsiPortStartIo(IN PDEVICE_OBJECT DeviceObject,
PIO_STACK_LOCATION IrpStack; PIO_STACK_LOCATION IrpStack;
PSCSI_REQUEST_BLOCK Srb; PSCSI_REQUEST_BLOCK Srb;
KIRQL oldIrql; KIRQL oldIrql;
BOOLEAN Result;
DPRINT("ScsiPortStartIo() called!\n"); DPRINT("ScsiPortStartIo() called!\n");
@ -1568,7 +1565,7 @@ ScsiPortStartIo(IN PDEVICE_OBJECT DeviceObject,
&oldIrql); &oldIrql);
IoStartNextPacket (DeviceObject, IoStartNextPacket (DeviceObject,
FALSE); FALSE);
KeLowerIrql(oldIrql); KeLowerIrql (oldIrql);
} }
else else
{ {
@ -1597,7 +1594,7 @@ ScsiPortStartIo(IN PDEVICE_OBJECT DeviceObject,
&oldIrql); &oldIrql);
IoStartNextPacket (DeviceObject, IoStartNextPacket (DeviceObject,
FALSE); FALSE);
KeLowerIrql(oldIrql); KeLowerIrql (oldIrql);
} }
else else
{ {
@ -1649,7 +1646,7 @@ ScsiPortStartIo(IN PDEVICE_OBJECT DeviceObject,
&oldIrql); &oldIrql);
IoStartNextPacket (DeviceObject, IoStartNextPacket (DeviceObject,
FALSE); FALSE);
KeLowerIrql(oldIrql); KeLowerIrql (oldIrql);
} }
else else
{ {
@ -1866,7 +1863,6 @@ SpiScanAdapter (IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension)
ULONG Bus; ULONG Bus;
ULONG Target; ULONG Target;
ULONG Lun; ULONG Lun;
BOOLEAN Result;
NTSTATUS Status; NTSTATUS Status;
DPRINT ("SpiScanAdapter() called\n"); DPRINT ("SpiScanAdapter() called\n");
@ -2093,7 +2089,7 @@ ScsiPortDpcForIsr(IN PKDPC Dpc,
RtlZeroMemory(&DeviceExtension->InternalSenseData, sizeof(SENSE_DATA)); RtlZeroMemory(&DeviceExtension->InternalSenseData, sizeof(SENSE_DATA));
IrpStack->Parameters.Scsi.Srb = DeviceExtension->OriginalSrb; IrpStack->Parameters.Scsi.Srb = DeviceExtension->OriginalSrb;
DeviceExtension->OriginalSrb = NULL; ScsiPortFreeSenseRequestSrb (DeviceExtension);
} }
else if ((SRB_STATUS(Srb->SrbStatus) != SRB_STATUS_SUCCESS) && else if ((SRB_STATUS(Srb->SrbStatus) != SRB_STATUS_SUCCESS) &&
(Srb->ScsiStatus == SCSISTAT_CHECK_CONDITION)) (Srb->ScsiStatus == SCSISTAT_CHECK_CONDITION))