diff options
Diffstat (limited to 'sysdeps/mach/thread_state.h')
-rw-r--r-- | sysdeps/mach/thread_state.h | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/sysdeps/mach/thread_state.h b/sysdeps/mach/thread_state.h deleted file mode 100644 index 1a154cd0fa..0000000000 --- a/sysdeps/mach/thread_state.h +++ /dev/null @@ -1,86 +0,0 @@ -/* Generic definitions for dealing with Mach thread states. - Copyright (C) 1994-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - - -/* Everything else is called `thread_state', but CMU's header file is - called `thread_status'. Oh boy. */ -#include <mach/thread_status.h> - -/* The machine-dependent thread_state.h file can either define these - macros, or just define PC and SP to the register names. */ - -#ifndef MACHINE_THREAD_STATE_SET_PC -#define MACHINE_THREAD_STATE_SET_PC(ts, pc) \ - ((ts)->PC = (unsigned long int) (pc)) -#endif -#ifndef MACHINE_THREAD_STATE_SET_SP -#ifdef STACK_GROWTH_UP -#define MACHINE_THREAD_STATE_SET_SP(ts, stack, size) \ - ((ts)->SP = (unsigned long int) (stack)) -#else -#define MACHINE_THREAD_STATE_SET_SP(ts, stack, size) \ - ((ts)->SP = (unsigned long int) (stack) + (size)) -#endif -#endif - -/* These functions are of use in machine-dependent signal trampoline - implementations. */ - -#include <string.h> /* size_t, memcpy */ -#include <mach/mach_interface.h> /* __thread_get_state */ - -static inline int -machine_get_state (thread_t thread, struct machine_thread_all_state *state, - int flavor, void *stateptr, void *scpptr, size_t size) -{ - if (state->set & (1 << flavor)) - { - /* Copy the saved state. */ - memcpy (scpptr, stateptr, size); - return 1; - } - else - { - /* No one asked about this flavor of state before; fetch the state - directly from the kernel into the sigcontext. */ - mach_msg_type_number_t got = (size / sizeof (int)); - return (! __thread_get_state (thread, flavor, scpptr, &got) - && got == (size / sizeof (int))); - } -} - -static inline int -machine_get_basic_state (thread_t thread, - struct machine_thread_all_state *state) -{ - mach_msg_type_number_t count; - - if (state->set & (1 << MACHINE_THREAD_STATE_FLAVOR)) - return 1; - - count = MACHINE_THREAD_STATE_COUNT; - if (__thread_get_state (thread, MACHINE_THREAD_STATE_FLAVOR, - (natural_t *) &state->basic, - &count) != KERN_SUCCESS || - count != MACHINE_THREAD_STATE_COUNT) - /* What kind of thread?? */ - return 0; /* XXX */ - - state->set |= 1 << MACHINE_THREAD_STATE_FLAVOR; - return 1; -} |