diff options
author | Luca Dariz <luca@orpolo.org> | 2022-06-28 12:10:41 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2022-08-28 02:42:30 +0200 |
commit | c6fb30a04df6455ae225f6ccf437f5eb907f1a2b (patch) | |
tree | 7a4db68d9fb1894501b6dd88b49e2840b9475f4d /ipc | |
parent | 88444dca8edf573a79730562519220b9ebc9e88c (diff) | |
download | gnumach-c6fb30a04df6455ae225f6ccf437f5eb907f1a2b.tar.gz gnumach-c6fb30a04df6455ae225f6ccf437f5eb907f1a2b.tar.bz2 gnumach-c6fb30a04df6455ae225f6ccf437f5eb907f1a2b.zip |
simplify ipc_kmsg_copyout_body() usage
* ipc/ipc_kmsg.h: change prototype of ipc_kmsg_copyout_body()
* ipc/ipc_kmsg.c: change prototype and usage of
ipc_kmsg_copyout_body() by incorporating common code
* ipc/mach_msg.c: change usage of ipc_kmsg_copyout_body()
Signed-off-by: Luca Dariz <luca@orpolo.org>
Message-Id: <20220628101054.446126-3-luca@orpolo.org>
Diffstat (limited to 'ipc')
-rw-r--r-- | ipc/ipc_kmsg.c | 24 | ||||
-rw-r--r-- | ipc/ipc_kmsg.h | 2 | ||||
-rw-r--r-- | ipc/mach_msg.c | 4 |
3 files changed, 10 insertions, 20 deletions
diff --git a/ipc/ipc_kmsg.c b/ipc/ipc_kmsg.c index 28ed23c6..292aa569 100644 --- a/ipc/ipc_kmsg.c +++ b/ipc/ipc_kmsg.c @@ -2336,13 +2336,17 @@ ipc_kmsg_copyout_object( mach_msg_return_t ipc_kmsg_copyout_body( - vm_offset_t saddr, - vm_offset_t eaddr, + ipc_kmsg_t kmsg, ipc_space_t space, vm_map_t map) { mach_msg_return_t mr = MACH_MSG_SUCCESS; kern_return_t kr; + vm_offset_t saddr, eaddr; + + saddr = (vm_offset_t) (&kmsg->ikm_header + 1); + eaddr = (vm_offset_t) &kmsg->ikm_header + + kmsg->ikm_header.msgh_size; while (saddr < eaddr) { vm_offset_t taddr = saddr; @@ -2502,13 +2506,7 @@ ipc_kmsg_copyout( return mr; if (mbits & MACH_MSGH_BITS_COMPLEX) { - vm_offset_t saddr, eaddr; - - saddr = (vm_offset_t) (&kmsg->ikm_header + 1); - eaddr = (vm_offset_t) &kmsg->ikm_header + - kmsg->ikm_header.msgh_size; - - mr = ipc_kmsg_copyout_body(saddr, eaddr, space, map); + mr = ipc_kmsg_copyout_body(kmsg, space, map); if (mr != MACH_MSG_SUCCESS) mr |= MACH_RCV_BODY_ERROR; } @@ -2560,13 +2558,7 @@ ipc_kmsg_copyout_pseudo( kmsg->ikm_header.msgh_local_port = reply_name; if (mbits & MACH_MSGH_BITS_COMPLEX) { - vm_offset_t saddr, eaddr; - - saddr = (vm_offset_t) (&kmsg->ikm_header + 1); - eaddr = (vm_offset_t) &kmsg->ikm_header + - kmsg->ikm_header.msgh_size; - - mr |= ipc_kmsg_copyout_body(saddr, eaddr, space, map); + mr |= ipc_kmsg_copyout_body(kmsg, space, map); } return mr; diff --git a/ipc/ipc_kmsg.h b/ipc/ipc_kmsg.h index c6cd77f0..2d75b173 100644 --- a/ipc/ipc_kmsg.h +++ b/ipc/ipc_kmsg.h @@ -270,7 +270,7 @@ ipc_kmsg_copyout_object(ipc_space_t, ipc_object_t, mach_msg_type_name_t, mach_port_t *); extern mach_msg_return_t -ipc_kmsg_copyout_body(vm_offset_t, vm_offset_t, ipc_space_t, vm_map_t); +ipc_kmsg_copyout_body(ipc_kmsg_t, ipc_space_t, vm_map_t); extern mach_msg_return_t ipc_kmsg_copyout(ipc_kmsg_t, ipc_space_t, vm_map_t, mach_port_t); diff --git a/ipc/mach_msg.c b/ipc/mach_msg.c index fe0c43e3..0ae8fe0c 100644 --- a/ipc/mach_msg.c +++ b/ipc/mach_msg.c @@ -1148,9 +1148,7 @@ mach_msg_trap( kmsg->ikm_header.msgh_remote_port = MACH_PORT_NULL; mr = ipc_kmsg_copyout_body( - (vm_offset_t) (&kmsg->ikm_header + 1), - (vm_offset_t) &kmsg->ikm_header - + kmsg->ikm_header.msgh_size, + kmsg, space, current_map()); |