From 73b3180e0e21a4077aed36a22bb266c24d67aeb1 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Mon, 21 Nov 2005 21:56:13 +0000 Subject: [PATCH] Add scsi_device_t --- libscsi/libscsi.h | 9 ++++++++- libscsi/scsi_read_sector.c | 8 ++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/libscsi/libscsi.h b/libscsi/libscsi.h index 3beab7e..e4d231a 100644 --- a/libscsi/libscsi.h +++ b/libscsi/libscsi.h @@ -7,9 +7,16 @@ #include #include +typedef struct { + int target; + unsigned int sector_size; +} scsi_device_t; + extern int scsi_command(int target, char* cdb, int count, TIB_t* tib); extern int scsi_INQUIRY(int target, char* buffer, size_t count); extern int scsi_READ(int target, unsigned long offset, unsigned short nb_blocks, char *buffer, int buffer_size); -extern int scsi_read_sector(off_t offset, void* buffer, size_t size); +extern scsi_device_t *scsi_open(int target); +extern int scsi_read_sector(scsi_device_t *device, off_t offset, void* buffer, size_t size); +extern int scsi_close(scsi_device_t *device); diff --git a/libscsi/scsi_read_sector.c b/libscsi/scsi_read_sector.c index b9cae40..2fbfbbf 100644 --- a/libscsi/scsi_read_sector.c +++ b/libscsi/scsi_read_sector.c @@ -11,18 +11,18 @@ #include "libscsi.h" -#define SECTOR_SIZE (2048) -#define ISO_BLOCKS(X) (((X) / SECTOR_SIZE) + (((X)%SECTOR_SIZE)?1:0)) +#define ISO_BLOCKS(X) (((X) / device->sector_size) + (((X)%device->sector_size)?1:0)) /* offset is a block number * size is the number of bytes to read */ -int scsi_read_sector(off_t offset, void* buffer, size_t size) +int scsi_read_sector(scsi_device_t *device, + off_t offset, void* buffer, size_t size) { OSErr err; - err = scsi_READ(3, offset, ISO_BLOCKS(size), buffer, size); + err = scsi_READ(device->target, offset, ISO_BLOCKS(size), buffer, size); if (err != noErr) return -1;