aboutsummaryrefslogtreecommitdiff
path: root/mach/mach.h
diff options
context:
space:
mode:
authorSergey Bugaev <bugaevc@gmail.com>2023-05-17 22:14:30 +0300
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-05-17 22:56:23 +0200
commit01f317e98f7e36b597905a7ad267ce6b59d463ee (patch)
treebbbdf78bba95c131553e62fe56bff1b8dc845598 /mach/mach.h
parentbe9c1b9cf4b5c1e436d08e189ea4305e57082a89 (diff)
downloadglibc-01f317e98f7e36b597905a7ad267ce6b59d463ee.zip
glibc-01f317e98f7e36b597905a7ad267ce6b59d463ee.tar.gz
glibc-01f317e98f7e36b597905a7ad267ce6b59d463ee.tar.bz2
mach: Add __mach_setup_thread_call ()
This is just like mach_setup_thread (), but it's suitable for making the thread call a function correctly, as opposed to explicitly setting the thread's stack and instruction pointers to the given values. Internally, it uses MACHINE_THREAD_STATE_SETUP_CALL. Unlike mach_setup_thread (), which is exported via mach.h for the benefit of the Hurd exec server, __mach_setup_thread_call () is private to glibc for the time being. Signed-off-by: Sergey Bugaev <bugaevc@gmail.com> Message-Id: <20230517191436.73636-5-bugaevc@gmail.com>
Diffstat (limited to 'mach/mach.h')
-rw-r--r--mach/mach.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/mach/mach.h b/mach/mach.h
index d115f5a..348f019 100644
--- a/mach/mach.h
+++ b/mach/mach.h
@@ -88,7 +88,11 @@ extern FILE *mach_open_devstream (mach_port_t device_port, const char *mode);
If STACK_BASE is not null it is filled in with the chosen stack base.
If STACK_SIZE is not null it is filled in with the chosen stack size.
Regardless, an extra page of red zone is allocated off the end; this
- is not included in *STACK_SIZE. */
+ is not included in *STACK_SIZE.
+
+ Mote: this function is unsuitable for setting up the thread to call a
+ function at PC, since the architecture ABI may impose additional
+ requirements beyond setting PC and stack. */
kern_return_t __mach_setup_thread (task_t task, thread_t thread, void *pc,
vm_address_t *stack_base,
vm_size_t *stack_size);