mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-30 18:02:02 +00:00
add thread-info and memmap-info
This commit is contained in:
@@ -17,6 +17,7 @@ kern_return_t :: distinct u64
|
||||
thread_act_t :: distinct u64
|
||||
thread_state_t :: distinct ^u32
|
||||
thread_list_t :: [^]thread_act_t
|
||||
vm_region_recurse_info_t :: distinct ^i32
|
||||
|
||||
MACH_PORT_NULL :: 0
|
||||
MACH_PORT_DEAD :: ~mach_port_t(0)
|
||||
@@ -141,6 +142,36 @@ arm_thread_state64_t :: struct {
|
||||
}
|
||||
ARM_THREAD_STATE64_COUNT :: size_of(arm_thread_state64_t) / size_of(u32)
|
||||
|
||||
THREAD_IDENTIFIER_INFO :: 4
|
||||
thread_identifier_info :: struct {
|
||||
thread_id: u64,
|
||||
thread_handler: u64,
|
||||
dispatch_qaddr: u64,
|
||||
}
|
||||
THREAD_IDENTIFIER_INFO_COUNT :: size_of(thread_identifier_info) / size_of(u32)
|
||||
|
||||
vm_region_submap_info_64 :: struct {
|
||||
protection: u32,
|
||||
max_protection: u32,
|
||||
inheritance: u32,
|
||||
offset: u64,
|
||||
user_tag: u32,
|
||||
pages_residept: u32,
|
||||
pages_shared_now_private: u32,
|
||||
pages_swapped_out: u32,
|
||||
pages_dirtied: u32,
|
||||
ref_count: u32,
|
||||
shadow_depth: u16,
|
||||
external_pager: u8,
|
||||
share_mode: u8,
|
||||
is_submap: b32,
|
||||
behavior: i32,
|
||||
object_id: u32,
|
||||
user_wired_count: u16,
|
||||
pages_reusable: u32,
|
||||
}
|
||||
VM_REGION_SUBMAP_INFO_COUNT_64 :: size_of(vm_region_submap_info_64) / size_of(u32)
|
||||
|
||||
@(default_calling_convention="c")
|
||||
foreign mach {
|
||||
mach_task_self :: proc() -> task_t ---
|
||||
@@ -149,6 +180,7 @@ foreign mach {
|
||||
mach_vm_allocate :: proc(target_task: task_t, adddress: u64, size: u64, flags: i32) -> kern_return_t ---
|
||||
mach_vm_deallocate :: proc(target_task: task_t, adddress: ^u64, size: u64) -> kern_return_t ---
|
||||
mach_vm_remap :: proc(target_task: task_t, page: rawptr, size: u64, mask: u64, flags: i32, src_task: task_t, src_address: u64, copy: b32, cur_protection: ^i32, max_protection: ^i32, inheritance: i32) -> kern_return_t ---
|
||||
mach_vm_region_recurse :: proc(target_task: task_t, address: ^u64, size: ^u64, depth: ^u32, info: vm_region_recurse_info_t, count: ^u32) -> kern_return_t ---
|
||||
|
||||
mach_port_allocate :: proc(task: task_t, right: u32, name: rawptr) -> kern_return_t ---
|
||||
mach_port_deallocate :: proc(task: task_t, name: u32) -> kern_return_t ---
|
||||
@@ -158,7 +190,9 @@ foreign mach {
|
||||
task_suspend :: proc(task: task_t) -> kern_return_t ---
|
||||
task_resume :: proc(task: task_t) -> kern_return_t ---
|
||||
task_threads :: proc(task: task_t, thread_list: ^thread_list_t, list_count: ^u32) -> kern_return_t ---
|
||||
|
||||
thread_get_state :: proc(thread: thread_act_t, flavor: i32, thread_state: thread_state_t, old_state_count: ^u32) -> kern_return_t ---
|
||||
thread_info :: proc(thread: thread_act_t, flavor: u32, thread_info: ^thread_identifier_info, info_count: ^u32) -> kern_return_t ---
|
||||
|
||||
bootstrap_register2 :: proc(bp: mach_port_t, service_name: name_t, sp: mach_port_t, flags: u64) -> kern_return_t ---
|
||||
bootstrap_look_up :: proc(bp: mach_port_t, service_name: name_t, sp: ^mach_port_t) -> kern_return_t ---
|
||||
|
||||
Reference in New Issue
Block a user