Add scsi_device_t

This commit is contained in:
Laurent Vivier 2005-11-21 21:56:13 +00:00
parent 64e1e16e13
commit 73b3180e0e
2 changed files with 12 additions and 5 deletions

View File

@ -7,9 +7,16 @@
#include <sys/types.h>
#include <macos/scsi.h>
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);

View File

@ -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;