| ... | ... | @@ -438,6 +438,18 @@ const mach_task = if (builtin.target.isDarwin()) struct { |
| 438 | 438 | }, |
| 439 | 439 | } |
| 440 | 440 | } |
| 441 | |
| 442 | pub fn getThreads(task: MachTask) MachError![]std.c.mach_port_t { |
| 443 | var thread_list: std.c.mach_port_array_t = undefined; |
| 444 | var thread_count: std.c.mach_msg_type_number_t = undefined; |
| 445 | switch (std.c.getKernError(std.c.task_threads(task.port, &thread_list, &thread_count))) { |
| 446 | .SUCCESS => return thread_list[0..thread_count], |
| 447 | else => |err| { |
| 448 | log.err("task_threads kernel call failed with error code: {s}", .{@tagName(err)}); |
| 449 | return error.Unexpected; |
| 450 | }, |
| 451 | } |
| 452 | } |
| 441 | 453 | }; |
| 442 | 454 | |
| 443 | 455 | pub fn machTaskForPid(pid: std.os.pid_t) MachError!MachTask { |