X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fdrvutil_disk.c;h=a57917d03be9c27b4f9d6d805204a90222c523c6;hb=e4342ad9de52043cb8f820643794dc44076f9bd9;hp=db4d631a85fa907381e17392be2e6ed1f4278f1b;hpb=15235fb0b42c91513c30117155dc1b5a020baf76;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/drvutil_disk.c b/KernelLand/Kernel/drvutil_disk.c index db4d631a..a57917d0 100644 --- a/KernelLand/Kernel/drvutil_disk.c +++ b/KernelLand/Kernel/drvutil_disk.c @@ -10,16 +10,16 @@ #include // --- Disk Driver Helpers --- -Uint64 DrvUtil_ReadBlock(Uint64 Start, Uint64 Length, void *Buffer, - tDrvUtil_Read_Callback ReadBlocks, Uint64 BlockSize, void *Argument) +size_t DrvUtil_ReadBlock(Uint64 Start, size_t Length, void *Buffer, + tDrvUtil_Read_Callback ReadBlocks, size_t BlockSize, void *Argument) { Uint8 tmp[BlockSize]; // C99 Uint64 block = Start / BlockSize; int offset = Start - block * BlockSize; - int leading = BlockSize - offset; + size_t leading = BlockSize - offset; Uint64 num; int tailings; - Uint64 ret; + size_t ret; ENTER("XStart XLength pBuffer pReadBlocks XBlockSize pArgument", Start, Length, Buffer, ReadBlocks, BlockSize, Argument); @@ -49,6 +49,7 @@ Uint64 DrvUtil_ReadBlock(Uint64 Start, Uint64 Length, void *Buffer, else { num = Length / BlockSize; tailings = Length % BlockSize; + leading = 0; } // Read central blocks @@ -57,6 +58,7 @@ Uint64 DrvUtil_ReadBlock(Uint64 Start, Uint64 Length, void *Buffer, LOG("Reading %i blocks", num); ret = ReadBlocks(block, num, Buffer, Argument); if(ret != num ) { + LOG("Incomplete read (%i != %i)", ret, num); LEAVE('X', leading + ret * BlockSize); return leading + ret * BlockSize; } @@ -80,17 +82,17 @@ Uint64 DrvUtil_ReadBlock(Uint64 Start, Uint64 Length, void *Buffer, return Length; } -Uint64 DrvUtil_WriteBlock(Uint64 Start, Uint64 Length, const void *Buffer, +size_t DrvUtil_WriteBlock(Uint64 Start, size_t Length, const void *Buffer, tDrvUtil_Read_Callback ReadBlocks, tDrvUtil_Write_Callback WriteBlocks, - Uint64 BlockSize, void *Argument) + size_t BlockSize, void *Argument) { Uint8 tmp[BlockSize]; // C99 Uint64 block = Start / BlockSize; - int offset = Start - block * BlockSize; - int leading = BlockSize - offset; + size_t offset = Start - block * BlockSize; + size_t leading = BlockSize - offset; Uint64 num; int tailings; - Uint64 ret; + size_t ret; ENTER("XStart XLength pBuffer pReadBlocks pWriteBlocks XBlockSize pArgument", Start, Length, Buffer, ReadBlocks, WriteBlocks, BlockSize, Argument);