diff options
author | Michael Brown | 2006-05-19 17:06:51 +0200 |
---|---|---|
committer | Michael Brown | 2006-05-19 17:06:51 +0200 |
commit | d48d0fb1bb53262bf44a03dbe8388529f1566a1c (patch) | |
tree | 31081f33dbeb48c42d2e4cf806570853162781d9 /src/include/gpxe/scsi.h | |
parent | Use typeof(sizeof(...)) to define a size_t. This stops gcc complaining (diff) | |
download | ipxe-d48d0fb1bb53262bf44a03dbe8388529f1566a1c.tar.gz ipxe-d48d0fb1bb53262bf44a03dbe8388529f1566a1c.tar.xz ipxe-d48d0fb1bb53262bf44a03dbe8388529f1566a1c.zip |
Add the concept of a "user pointer" (similar to the void __user * in
the kernel), which encapsulates the information needed to refer to an
external buffer. Under normal operation, this can just be a void *
equivalent, but under -DKEEP_IT_REAL it would be a segoff_t equivalent.
Use this concept to avoid the need for bounce buffers in int13.c,
which reduces memory usage and opens up the possibility of using
multi-sector reads.
Extend the block-device API and the SCSI block device implementation
to support multi-sector reads.
Update iscsi.c to use user buffers.
Move the obsolete portions of realmode.h to old_realmode.h.
MS-DOS now boots an order of magnitude faster over iSCSI (~10 seconds
from power-up to C:> prompt in bochs).
Diffstat (limited to 'src/include/gpxe/scsi.h')
-rw-r--r-- | src/include/gpxe/scsi.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/include/gpxe/scsi.h b/src/include/gpxe/scsi.h index dea39e16..d7da1255 100644 --- a/src/include/gpxe/scsi.h +++ b/src/include/gpxe/scsi.h @@ -3,6 +3,7 @@ #include <stdint.h> #include <gpxe/blockdev.h> +#include <gpxe/uaccess.h> /** * @defgroup scsiops SCSI operation codes @@ -123,14 +124,14 @@ struct scsi_command { /** CDB for this command */ union scsi_cdb cdb; /** Data-out buffer (may be NULL) */ - const void *data_out; + userptr_t data_out; /** Data-out buffer length * * Must be zero if @c data_out is NULL */ size_t data_out_len; /** Data-in buffer (may be NULL) */ - void *data_in; + userptr_t data_in; /** Data-in buffer length * * Must be zero if @c data_in is NULL |