*
*/
static PXENV_EXIT_t pxenv_file_read ( struct s_PXENV_FILE_READ *file_read ) {
- userptr_t buffer;
+ void *buffer;
ssize_t len;
DBG ( "PXENV_FILE_READ %d to %04x:%04x+%04x", file_read->FileHandle,
buffer = real_to_virt ( file_read->Buffer.segment,
file_read->Buffer.offset );
- if ( ( len = read_user ( file_read->FileHandle, buffer, 0,
- file_read->BufferSize ) ) < 0 ) {
+ if ( ( len = read ( file_read->FileHandle, buffer,
+ file_read->BufferSize ) ) < 0 ) {
file_read->Status = PXENV_STATUS ( len );
return PXENV_EXIT_FAILURE;
}
int len = ix86->regs.cx * COMBOOT_FILE_BLOCKSZ;
int rc;
fd_set fds;
- userptr_t buf = real_to_virt ( ix86->segs.es, ix86->regs.bx );
+ void *buf = real_to_virt ( ix86->segs.es,
+ ix86->regs.bx );
/* Wait for data ready to read */
FD_ZERO ( &fds );
select ( &fds, 1 );
- rc = read_user ( fd, buf, 0, len );
+ rc = read ( fd, buf, len );
if ( rc < 0 ) {
DBG ( "COMBOOT: read failed\n" );
ix86->regs.si = 0;
/**
* Read data from file
*
- * @v buffer Data buffer
- * @v offset Starting offset within data buffer
- * @v len Maximum length to read
+ * @v buf Data buffer
+ * @v max_len Maximum length to read
* @ret len Actual length read, or negative error number
*
* This call is non-blocking; if no data is available to read then
* -EWOULDBLOCK will be returned.
*/
-ssize_t read_user ( int fd, userptr_t buffer, off_t offset, size_t max_len ) {
+ssize_t read ( int fd, void *buf, size_t max_len ) {
struct posix_file *file;
struct io_buffer *iobuf;
size_t len;
len = iob_len ( iobuf );
if ( len > max_len )
len = max_len;
- copy_to_user ( buffer, offset, iobuf->data, len );
+ memcpy ( buf, iobuf->data, len );
iob_pull ( iobuf, len );
if ( ! iob_len ( iobuf ) ) {
list_del ( &iobuf->list );
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
-#include <ipxe/uaccess.h>
/** Minimum file descriptor that will ever be allocated */
#define POSIX_FD_MIN ( 1 )
typedef uint32_t fd_set;
extern int open ( const char *uri_string );
-extern ssize_t read_user ( int fd, userptr_t buffer,
- off_t offset, size_t len );
+extern ssize_t read ( int fd, void *buf, size_t len );
extern int select ( fd_set *readfds, int wait );
extern ssize_t fsize ( int fd );
extern int close ( int fd );
return ( *set & ( 1 << fd ) );
}
-/**
- * Read data from file
- *
- * @v fd File descriptor
- * @v buf Data buffer
- * @v len Maximum length to read
- * @ret len Actual length read, or negative error number
- */
-static inline ssize_t read ( int fd, void *buf, size_t len ) {
- return read_user ( fd, virt_to_user ( buf ), 0, len );
-}
-
#endif /* _IPXE_POSIX_IO_H */