mirror of
https://github.com/dlang/phobos.git
synced 2025-05-09 13:02:30 +03:00
176 lines
4.9 KiB
D
176 lines
4.9 KiB
D
|
|
/* Written by Walter Bright, Sean Kelly, and many others.
|
|
* www.digitalmars.com
|
|
* Placed into public domain.
|
|
*/
|
|
|
|
module std.c.osx.osx;
|
|
|
|
public import std.c.linux.linux : pthread_t;
|
|
|
|
extern (C):
|
|
|
|
alias int kern_return_t;
|
|
|
|
enum : kern_return_t
|
|
{
|
|
KERN_SUCCESS = 0,
|
|
KERN_INVALID_ADDRESS = 1,
|
|
KERN_PROTECTION_FAILURE = 2,
|
|
KERN_NO_SPACE = 3,
|
|
KERN_INVALID_ARGUMENT = 4,
|
|
KERN_FAILURE = 5,
|
|
KERN_RESOURCE_SHORTAGE = 6,
|
|
KERN_NOT_RECEIVER = 7,
|
|
KERN_NO_ACCESS = 8,
|
|
KERN_MEMORY_FAILURE = 9,
|
|
KERN_MEMORY_ERROR = 10,
|
|
KERN_ALREADY_IN_SET = 11,
|
|
KERN_NOT_IN_SET = 12,
|
|
KERN_NAME_EXISTS = 13,
|
|
KERN_ABORTED = 14,
|
|
KERN_INVALID_NAME = 15,
|
|
KERN_INVALID_TASK = 16,
|
|
KERN_INVALID_RIGHT = 17,
|
|
KERN_INVALID_VALUE = 18,
|
|
KERN_UREFS_OVERFLOW = 19,
|
|
KERN_INVALID_CAPABILITY = 20,
|
|
KERN_RIGHT_EXISTS = 21,
|
|
KERN_INVALID_HOST = 22,
|
|
KERN_MEMORY_PRESENT = 23,
|
|
KERN_MEMORY_DATA_MOVED = 24,
|
|
KERN_MEMORY_RESTART_COPY = 25,
|
|
KERN_INVALID_PROCESSOR_SET = 26,
|
|
KERN_POLICY_LIMIT = 27,
|
|
KERN_INVALID_POLICY = 28,
|
|
KERN_INVALID_OBJECT = 29,
|
|
KERN_ALREADY_WAITING = 30,
|
|
KERN_DEFAULT_SET = 31,
|
|
KERN_EXCEPTION_PROTECTED = 32,
|
|
KERN_INVALID_LEDGER = 33,
|
|
KERN_INVALID_MEMORY_CONTROL = 34,
|
|
KERN_INVALID_SECURITY = 35,
|
|
KERN_NOT_DEPRESSED = 36,
|
|
KERN_TERMINATED = 37,
|
|
KERN_LOCK_SET_DESTROYED = 38,
|
|
KERN_LOCK_UNSTABLE = 39,
|
|
KERN_LOCK_OWNED = 40,
|
|
KERN_LOCK_OWNED_SELF = 41,
|
|
KERN_SEMAPHORE_DESTROYED = 42,
|
|
KERN_RPC_SERVER_TERMINATED = 43,
|
|
KERN_RPC_TERMINATE_ORPHAN = 44,
|
|
KERN_RPC_CONTINUE_ORPHAN = 45,
|
|
KERN_NOT_SUPPORTED = 46,
|
|
KERN_NODE_DOWN = 47,
|
|
KERN_OPERATION_TIMED_OUT = 49,
|
|
KERN_RETURN_MAX = 0x100,
|
|
}
|
|
|
|
version( X86 )
|
|
version = i386;
|
|
version( X86_64 )
|
|
version = i386;
|
|
version( i386 )
|
|
{
|
|
alias uint natural_t;
|
|
alias natural_t mach_port_t;
|
|
alias mach_port_t thread_act_t;
|
|
alias void thread_state_t;
|
|
alias int thread_state_flavor_t;
|
|
alias natural_t mach_msg_type_number_t;
|
|
|
|
enum
|
|
{
|
|
x86_THREAD_STATE32 = 1,
|
|
x86_FLOAT_STATE32 = 2,
|
|
x86_EXCEPTION_STATE32 = 3,
|
|
x86_THREAD_STATE64 = 4,
|
|
x86_FLOAT_STATE64 = 5,
|
|
x86_EXCEPTION_STATE64 = 6,
|
|
x86_THREAD_STATE = 7,
|
|
x86_FLOAT_STATE = 8,
|
|
x86_EXCEPTION_STATE = 9,
|
|
x86_DEBUG_STATE32 = 10,
|
|
x86_DEBUG_STATE64 = 11,
|
|
x86_DEBUG_STATE = 12,
|
|
THREAD_STATE_NONE = 13,
|
|
}
|
|
|
|
struct x86_thread_state32_t
|
|
{
|
|
uint eax;
|
|
uint ebx;
|
|
uint ecx;
|
|
uint edx;
|
|
uint edi;
|
|
uint esi;
|
|
uint ebp;
|
|
uint esp;
|
|
uint ss;
|
|
uint eflags;
|
|
uint eip;
|
|
uint cs;
|
|
uint ds;
|
|
uint es;
|
|
uint fs;
|
|
uint gs;
|
|
}
|
|
|
|
struct x86_thread_state64_t
|
|
{
|
|
ulong rax;
|
|
ulong rbx;
|
|
ulong rcx;
|
|
ulong rdx;
|
|
ulong rdi;
|
|
ulong rsi;
|
|
ulong rbp;
|
|
ulong rsp;
|
|
ulong r8;
|
|
ulong r9;
|
|
ulong r10;
|
|
ulong r11;
|
|
ulong r12;
|
|
ulong r13;
|
|
ulong r14;
|
|
ulong r15;
|
|
ulong rip;
|
|
ulong rflags;
|
|
ulong cs;
|
|
ulong fs;
|
|
ulong gs;
|
|
}
|
|
|
|
struct x86_state_hdr_t
|
|
{
|
|
int flavor;
|
|
int count;
|
|
}
|
|
|
|
struct x86_thread_state_t
|
|
{
|
|
x86_state_hdr_t tsh;
|
|
union _uts
|
|
{
|
|
x86_thread_state32_t ts32;
|
|
x86_thread_state64_t ts64;
|
|
}
|
|
_uts uts;
|
|
}
|
|
|
|
enum : mach_msg_type_number_t
|
|
{
|
|
x86_THREAD_STATE32_COUNT = cast(mach_msg_type_number_t)( x86_thread_state32_t.sizeof / int.sizeof ),
|
|
x86_THREAD_STATE64_COUNT = cast(mach_msg_type_number_t)( x86_thread_state64_t.sizeof / int.sizeof ),
|
|
x86_THREAD_STATE_COUNT = cast(mach_msg_type_number_t)( x86_thread_state_t.sizeof / int.sizeof ),
|
|
}
|
|
|
|
alias x86_THREAD_STATE MACHINE_THREAD_STATE;
|
|
alias x86_THREAD_STATE_COUNT MACHINE_THREAD_STATE_COUNT;
|
|
|
|
mach_port_t mach_thread_self();
|
|
mach_port_t pthread_mach_thread_np(pthread_t);
|
|
kern_return_t thread_suspend(thread_act_t);
|
|
kern_return_t thread_resume(thread_act_t);
|
|
kern_return_t thread_get_state(thread_act_t, thread_state_flavor_t, thread_state_t*, mach_msg_type_number_t*);
|
|
}
|