aboutsummaryrefslogtreecommitdiff
path: root/libstore/device.c
diff options
context:
space:
mode:
authorSergey Bugaev <bugaevc@gmail.com>2023-05-09 00:31:04 +0300
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-05-10 02:18:14 +0200
commit070292f3118b75de9fc0e79fac6ca0186d157c28 (patch)
treebe54835aaa641d50e0453747092d5e53e1cd4958 /libstore/device.c
parent4ba239ddbe936322bd7f9a8b17715ebaeb1cb800 (diff)
downloadhurd-070292f3118b75de9fc0e79fac6ca0186d157c28.tar.gz
hurd-070292f3118b75de9fc0e79fac6ca0186d157c28.tar.bz2
hurd-070292f3118b75de9fc0e79fac6ca0186d157c28.zip
libstore: Port to x86_64
Message-Id: <20230508213136.608575-10-bugaevc@gmail.com>
Diffstat (limited to 'libstore/device.c')
-rw-r--r--libstore/device.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/libstore/device.c b/libstore/device.c
index 098506a0..c7b9d756 100644
--- a/libstore/device.c
+++ b/libstore/device.c
@@ -48,24 +48,30 @@ dev_error (error_t err)
}
static error_t
-dev_read (struct store *store,
- store_offset_t addr, size_t index, mach_msg_type_number_t amount,
- void **buf, mach_msg_type_number_t *len)
+dev_read (struct store *store, store_offset_t addr,
+ size_t index, size_t amount,
+ void **buf, size_t *len)
{
+ error_t err;
recnum_t recnum = addr;
+ mach_msg_type_number_t nread;
if (recnum != addr)
return EOVERFLOW;
- return dev_error (device_read (store->port, 0, recnum, amount,
- (io_buf_ptr_t *)buf, len));
+ err = device_read (store->port, 0, recnum, amount,
+ (io_buf_ptr_t *) buf, &nread);
+ if (err)
+ return dev_error (err);
+
+ *len = nread;
+ return 0;
}
static error_t
-dev_write (struct store *store,
- store_offset_t addr, size_t index,
- const void *buf, mach_msg_type_number_t len,
- mach_msg_type_number_t *amount)
+dev_write (struct store *store, store_offset_t addr,
+ size_t index, const void *buf,
+ size_t len, size_t *amount)
{
recnum_t recnum = addr;
error_t err;
@@ -195,7 +201,7 @@ enforced (struct store *store)
{
error_t err;
dev_status_data_t sizes;
- size_t sizes_len = DEV_STATUS_MAX;
+ mach_msg_type_number_t sizes_len = DEV_STATUS_MAX;
if (store->num_runs != 1 || store->runs[0].start != 0)
/* Can't enforce non-contiguous ranges, or one not starting at 0. */
@@ -324,7 +330,7 @@ store_device_create (device_t device, int flags, struct store **store)
struct store_run run;
size_t block_size = 0;
dev_status_data_t sizes;
- size_t sizes_len = DEV_STATUS_MAX;
+ mach_msg_type_number_t sizes_len = DEV_STATUS_MAX;
error_t err;
#ifdef DEV_GET_RECORDS