diff options
author | Sergey Bugaev <bugaevc@gmail.com> | 2023-05-09 00:31:22 +0300 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-05-10 02:41:45 +0200 |
commit | 75f76d10aad328a1af5961cb365a2b4325b98d8e (patch) | |
tree | 9072fb9c33576788ebe2f52afbeae7d0b2ecba31 /boot/boot.c | |
parent | 202585da4315df1c68e6619d8097b06aaac98bbc (diff) | |
download | hurd-75f76d10aad328a1af5961cb365a2b4325b98d8e.tar.gz hurd-75f76d10aad328a1af5961cb365a2b4325b98d8e.tar.bz2 hurd-75f76d10aad328a1af5961cb365a2b4325b98d8e.zip |
boot: Port to x64_64
Message-Id: <20230508213136.608575-28-bugaevc@gmail.com>
Diffstat (limited to 'boot/boot.c')
-rw-r--r-- | boot/boot.c | 68 |
1 files changed, 35 insertions, 33 deletions
diff --git a/boot/boot.c b/boot/boot.c index 144ca1c3..f7935697 100644 --- a/boot/boot.c +++ b/boot/boot.c @@ -644,18 +644,18 @@ main (int argc, char **argv, char **envp) /* Initialize boot script variables. */ if (boot_script_set_variable ("host-port", VAL_PORT, privileged - ? (int) privileged_host_port - : (int) pseudo_privileged_host_port) + ? privileged_host_port + : pseudo_privileged_host_port) || boot_script_set_variable ("device-port", VAL_PORT, - (integer_t) pseudo_master_device_port) + pseudo_master_device_port) || boot_script_set_variable ("kernel-task", VAL_PORT, - (integer_t) pseudo_kernel) + pseudo_kernel) || boot_script_set_variable ("kernel-command-line", VAL_STR, - (integer_t) kernel_command_line) + (intptr_t) kernel_command_line) || boot_script_set_variable ("root-device", - VAL_STR, (integer_t) bootdevice) + VAL_STR, (intptr_t) bootdevice) || boot_script_set_variable ("boot-args", - VAL_STR, (integer_t) bootstrap_args)) + VAL_STR, (intptr_t) bootstrap_args)) { static const char msg[] = "error setting variable"; @@ -676,7 +676,7 @@ main (int argc, char **argv, char **envp) if (eq == 0) continue; *eq++ = '\0'; - err = boot_script_set_variable (word, VAL_STR, (integer_t) eq); + err = boot_script_set_variable (word, VAL_STR, (intptr_t) eq); if (err) { char *msg; @@ -1020,7 +1020,7 @@ ds_device_write (device_t device, dev_mode_t mode, recnum_t recnum, io_buf_ptr_t data, - size_t datalen, + mach_msg_type_number_t datalen, int *bytes_written) { if (device == pseudo_console) @@ -1057,7 +1057,7 @@ ds_device_write_inband (device_t device, dev_mode_t mode, recnum_t recnum, const io_buf_ptr_inband_t data, - size_t datalen, + mach_msg_type_number_t datalen, int *bytes_written) { if (device == pseudo_console) @@ -1095,8 +1095,9 @@ ds_device_read (device_t device, recnum_t recnum, int bytes_wanted, io_buf_ptr_t *data, - size_t *datalen) + mach_msg_type_number_t *datalen) { + error_t err; if (device == pseudo_console) { int avail; @@ -1121,8 +1122,6 @@ ds_device_read (device_t device, } else { - kern_return_t err; - unlock_readlock (); err = queue_read (DEV_READ, reply_port, reply_type, bytes_wanted); if (err) @@ -1132,11 +1131,12 @@ ds_device_read (device_t device, } else if (device == pseudo_root) { - *datalen = 0; - return - (store_read (root_store, recnum, bytes_wanted, (void **)data, datalen) == 0 - ? D_SUCCESS - : D_IO_ERROR); + size_t data_size = 0; + err = store_read (root_store, recnum, bytes_wanted, (void **)data, &data_size); + if (err) + return D_IO_ERROR; + *datalen = data_size; + return D_SUCCESS; } else return D_NO_SUCH_DEVICE; @@ -1150,7 +1150,7 @@ ds_device_read_inband (device_t device, recnum_t recnum, int bytes_wanted, io_buf_ptr_inband_t data, - size_t *datalen) + mach_msg_type_number_t *datalen) { if (device == pseudo_console) { @@ -1188,17 +1188,18 @@ ds_device_read_inband (device_t device, { error_t err; void *returned = data; + size_t data_size = bytes_wanted; - *datalen = bytes_wanted; - err = - store_read (root_store, recnum, bytes_wanted, (void **)&returned, datalen); + err = store_read (root_store, recnum, bytes_wanted, + (void **)&returned, &data_size); + *datalen = data_size; if (! err) { if (returned != data) { - memcpy ((void *)data, returned, *datalen); - munmap ((caddr_t) returned, *datalen); + memcpy ((void *)data, returned, data_size); + munmap ((caddr_t) returned, data_size); } return D_SUCCESS; } @@ -1243,7 +1244,7 @@ kern_return_t ds_device_set_status (device_t device, dev_flavor_t flavor, dev_status_t status, - size_t statuslen) + mach_msg_type_number_t statuslen) { if (device != pseudo_console && device != pseudo_root) return D_NO_SUCH_DEVICE; @@ -1254,7 +1255,7 @@ kern_return_t ds_device_get_status (device_t device, dev_flavor_t flavor, dev_status_t status, - size_t *statuslen) + mach_msg_type_number_t *statuslen) { if (device == pseudo_console) return D_INVALID_OPERATION; @@ -1289,7 +1290,7 @@ ds_device_set_filter (device_t device, mach_port_t receive_port, int priority, filter_array_t filter, - size_t filterlen) + mach_msg_type_number_t filterlen) { if (device != pseudo_console && device != pseudo_root) return D_NO_SUCH_DEVICE; @@ -1663,7 +1664,7 @@ S_io_reauthenticate (mach_port_t object, { uid_t *gu, *au; gid_t *gg, *ag; - size_t gulen = 0, aulen = 0, gglen = 0, aglen = 0; + mach_msg_type_number_t gulen = 0, aulen = 0, gglen = 0, aglen = 0; error_t err; /* XXX: This cannot possibly work, authserver is 0. */ @@ -1702,9 +1703,9 @@ S_io_restrict_auth (mach_port_t object, mach_port_t *newobject, mach_msg_type_name_t *newobjtype, const uid_t *uids, - size_t nuids, + mach_msg_type_number_t nuids, const uid_t *gids, - size_t ngids) + mach_msg_type_number_t ngids) { if (object != pseudo_console) return EOPNOTSUPP; @@ -2023,7 +2024,7 @@ static void task_ihash_cleanup (hurd_ihash_value_t value, void *cookie) { (void) cookie; - mach_port_deallocate (mach_task_self (), (mach_port_t) value); + mach_port_deallocate (mach_task_self (), (mach_port_t)(uintptr_t) value); } static struct hurd_ihash task_ihash = @@ -2065,7 +2066,8 @@ S_mach_notify_new_task (mach_port_t notify, mach_port_mod_refs (mach_task_self (), task, MACH_PORT_RIGHT_SEND, +1); err = hurd_ihash_add (&task_ihash, - (hurd_ihash_key_t) task, (hurd_ihash_value_t) task); + (hurd_ihash_key_t) task, + (hurd_ihash_value_t)(uintptr_t) task); if (err) { mach_port_deallocate (mach_task_self (), task); @@ -2110,7 +2112,7 @@ S_processor_set_tasks(mach_port_t processor_set, i = 1; HURD_IHASH_ITERATE (&task_ihash, value) { - task_t task = (task_t) value; + task_t task = (task_t)(uintptr_t) value; if (task == pseudo_kernel) continue; |