15c2921b0SApple OSS Distributions#!/usr/bin/env recon 25c2921b0SApple OSS Distributions 35c2921b0SApple OSS Distributionslocal cjson = require 'cjson' 45c2921b0SApple OSS Distributionslocal lpeg = require 'lpeg' 55c2921b0SApple OSS Distributionslpeg.locale(lpeg) 65c2921b0SApple OSS Distributions 75c2921b0SApple OSS Distributions-- Only certain regions of the master file should be parsed. 85c2921b0SApple OSS Distributions-- The convention is that any `#if/#else/#endif` clauses are parsed, assuming the condition is true/defined, except for `COMPAT_GETFSSTAT`. 95c2921b0SApple OSS Distributions 105c2921b0SApple OSS Distributionslocal region_state = { valid = true, } 115c2921b0SApple OSS Distributionslocal function in_valid_region(line) 125c2921b0SApple OSS Distributions -- Only C preprocessor directives can affect the region's validity. 135c2921b0SApple OSS Distributions if line:sub(1, 1) ~= '#' then 145c2921b0SApple OSS Distributions return region_state.valid 155c2921b0SApple OSS Distributions end 165c2921b0SApple OSS Distributions 175c2921b0SApple OSS Distributions -- This is the only macro definition that is assumed to be undefined. 185c2921b0SApple OSS Distributions local assume_defined = not line:match('COMPAT_GETFSSTAT') 195c2921b0SApple OSS Distributions if line:match('^#if') then 205c2921b0SApple OSS Distributions region_state.valid = assume_defined 215c2921b0SApple OSS Distributions elseif line:match('^#else') then 225c2921b0SApple OSS Distributions region_state.valid = not region_state.valid 235c2921b0SApple OSS Distributions elseif line:match('^#endif') then 245c2921b0SApple OSS Distributions region_state.valid = true 255c2921b0SApple OSS Distributions end 265c2921b0SApple OSS Distributionsend 275c2921b0SApple OSS Distributions 285c2921b0SApple OSS Distributions-- Parse a syscall declaration line from `bsd/kern/syscalls.master` into a table with `name`, `number`, `arguments`, and `old` keys. 295c2921b0SApple OSS Distributions 305c2921b0SApple OSS Distributions-- Primitive tokens. 315c2921b0SApple OSS Distributionslocal space = lpeg.S(' \t')^0 325c2921b0SApple OSS Distributionslocal identifier = (lpeg.alnum + lpeg.P('_'))^1 335c2921b0SApple OSS Distributionslocal numeric = lpeg.digit^1 / tonumber 345c2921b0SApple OSS Distributions 355c2921b0SApple OSS Distributions-- Matching the function name of the syscall declaration. 365c2921b0SApple OSS Distributionslocal function_ptn = lpeg.Cg(identifier^1, 'name') * lpeg.P('(') 375c2921b0SApple OSS Distributionslocal nosys_ptn = lpeg.P('e')^-1 * lpeg.P('nosys(') 385c2921b0SApple OSS Distributions 395c2921b0SApple OSS Distributions-- Matching an argument list. 405c2921b0SApple OSS Distributionslocal arg = lpeg.C((1 - lpeg.S(',)'))^1) 415c2921b0SApple OSS Distributionslocal args_ptn = lpeg.Ct(arg * (lpeg.P(',') * space * arg)^0) 425c2921b0SApple OSS Distributions 435c2921b0SApple OSS Distributions-- Matching a normal C-style declaration of the syscall. 445c2921b0SApple OSS Distributionslocal decl_ptn = (1 - function_ptn)^1 * (function_ptn - nosys_ptn) * 455c2921b0SApple OSS Distributions lpeg.Cg(args_ptn, 'arguments') 465c2921b0SApple OSS Distributions 475c2921b0SApple OSS Distributions-- Matching an old breadcrumb, with empty arguments table. 485c2921b0SApple OSS Distributionslocal old_ptn = lpeg.P('old') * space * lpeg.Cg(identifier^1, 'name') * 495c2921b0SApple OSS Distributions lpeg.Cg(lpeg.Cc(true), 'old') * lpeg.Cg(lpeg.Cc({}), 'arguments') 505c2921b0SApple OSS Distributionslocal old_decl_ptn = (1 - old_ptn)^1 * old_ptn 515c2921b0SApple OSS Distributions 525c2921b0SApple OSS Distributionslocal syscall_ptn = lpeg.Ct(lpeg.Cg(numeric, 'number') * 535c2921b0SApple OSS Distributions (decl_ptn + old_decl_ptn)) 545c2921b0SApple OSS Distributions 555c2921b0SApple OSS Distributionslocal bsd_syscalls = {} 565c2921b0SApple OSS Distributionsfor line in io.stdin:lines() do 575c2921b0SApple OSS Distributions if in_valid_region(line) then 585c2921b0SApple OSS Distributions bsd_syscalls[#bsd_syscalls + 1] = syscall_ptn:match(line) 595c2921b0SApple OSS Distributions end 605c2921b0SApple OSS Distributionsend 615c2921b0SApple OSS Distributions 625c2921b0SApple OSS Distributionslocal syscalls = { 635c2921b0SApple OSS Distributions bsd_syscalls = bsd_syscalls, 645c2921b0SApple OSS Distributions mach_syscalls = { 655c2921b0SApple OSS Distributions -- Duplicate the names from `mach_trap_table` here. 665c2921b0SApple OSS Distributions { number = 10, name = 'mach_vm_allocate', 675c2921b0SApple OSS Distributions arguments = { 685c2921b0SApple OSS Distributions 'mach_port_name_t target', 695c2921b0SApple OSS Distributions 'mach_vm_address_t *address', 705c2921b0SApple OSS Distributions 'mach_vm_size_t size', 715c2921b0SApple OSS Distributions 'int flags', 725c2921b0SApple OSS Distributions }, 735c2921b0SApple OSS Distributions }, 745c2921b0SApple OSS Distributions { number = 11, name = 'mach_vm_purgable_control', 755c2921b0SApple OSS Distributions arguments = { 765c2921b0SApple OSS Distributions 'mach_port_name_t target', 775c2921b0SApple OSS Distributions 'mach_vm_offset_t address', 785c2921b0SApple OSS Distributions 'vm_purgable_t control', 795c2921b0SApple OSS Distributions 'int *state', 805c2921b0SApple OSS Distributions }, 815c2921b0SApple OSS Distributions }, 825c2921b0SApple OSS Distributions { number = 12, name = 'mach_vm_deallocate', 835c2921b0SApple OSS Distributions arguments = { 845c2921b0SApple OSS Distributions 'mach_port_name_t target', 855c2921b0SApple OSS Distributions 'mach_vm_address_t address', 865c2921b0SApple OSS Distributions 'mach_vm_size_t size', 875c2921b0SApple OSS Distributions }, 885c2921b0SApple OSS Distributions }, 895c2921b0SApple OSS Distributions { number = 13, name = 'task_dyld_process_info_notify_get', 905c2921b0SApple OSS Distributions arguments = { 915c2921b0SApple OSS Distributions 'mach_port_name_array_t names_addr', 925c2921b0SApple OSS Distributions 'natural_t *names_count_addr', 935c2921b0SApple OSS Distributions }, 945c2921b0SApple OSS Distributions }, 955c2921b0SApple OSS Distributions { number = 14, name = 'mach_vm_protect', 965c2921b0SApple OSS Distributions arguments = { 975c2921b0SApple OSS Distributions 'mach_port_name_t task', 985c2921b0SApple OSS Distributions 'mach_vm_address_t address', 995c2921b0SApple OSS Distributions 'mach_vm_size_t size', 1005c2921b0SApple OSS Distributions 'boolean_t set_maximum', 1015c2921b0SApple OSS Distributions 'vm_prot_t new_protection', 1025c2921b0SApple OSS Distributions } 1035c2921b0SApple OSS Distributions }, 1045c2921b0SApple OSS Distributions { number = 15, name = 'mach_vm_map', 1055c2921b0SApple OSS Distributions arguments = { 1065c2921b0SApple OSS Distributions 'mach_port_name_t target', 1075c2921b0SApple OSS Distributions 'mach_vm_address_t *address', 1085c2921b0SApple OSS Distributions 'mach_vm_size_t size', 1095c2921b0SApple OSS Distributions 'mach_vm_offset_t mask', 1105c2921b0SApple OSS Distributions 'int flags', 1115c2921b0SApple OSS Distributions 'mem_entry_name_port_t object', 1125c2921b0SApple OSS Distributions 'memory_object_offset_t offset', 1135c2921b0SApple OSS Distributions 'boolean_t copy', 1145c2921b0SApple OSS Distributions 'vm_prot_t cur_protection', 1155c2921b0SApple OSS Distributions 'vm_prot_t max_protection', 1165c2921b0SApple OSS Distributions 'vm_inherit_t inheritance', 1175c2921b0SApple OSS Distributions }, 1185c2921b0SApple OSS Distributions }, 1195c2921b0SApple OSS Distributions { number = 16, name = 'mach_port_allocate', 1205c2921b0SApple OSS Distributions arguments = { 1215c2921b0SApple OSS Distributions 'mach_port_name_t target', 1225c2921b0SApple OSS Distributions 'mach_port_right_t right', 1235c2921b0SApple OSS Distributions 'mach_port_name_t *name', 1245c2921b0SApple OSS Distributions }, 1255c2921b0SApple OSS Distributions }, 1265c2921b0SApple OSS Distributions 1275c2921b0SApple OSS Distributions { number = 18, name = 'mach_port_deallocate', 1285c2921b0SApple OSS Distributions arguments = { 1295c2921b0SApple OSS Distributions 'mach_port_name_t target', 1305c2921b0SApple OSS Distributions 'mach_port_name_t name', 1315c2921b0SApple OSS Distributions }, 1325c2921b0SApple OSS Distributions }, 1335c2921b0SApple OSS Distributions { number = 19, name = 'mach_port_mod_refs', 1345c2921b0SApple OSS Distributions arguments = { 1355c2921b0SApple OSS Distributions 'mach_port_name_t target', 1365c2921b0SApple OSS Distributions 'mach_port_name_t name', 1375c2921b0SApple OSS Distributions 'mach_port_right_t right', 1385c2921b0SApple OSS Distributions 'mach_port_delta_t delta', 1395c2921b0SApple OSS Distributions }, 1405c2921b0SApple OSS Distributions }, 1415c2921b0SApple OSS Distributions { number = 20, name = 'mach_port_move_member', 1425c2921b0SApple OSS Distributions arguments = { 1435c2921b0SApple OSS Distributions 'mach_port_name_t target', 1445c2921b0SApple OSS Distributions 'mach_port_name_t member', 1455c2921b0SApple OSS Distributions 'mach_port_name_t after', 1465c2921b0SApple OSS Distributions }, 1475c2921b0SApple OSS Distributions }, 1485c2921b0SApple OSS Distributions { number = 21, name = 'mach_port_insert_right', 1495c2921b0SApple OSS Distributions arguments = { 1505c2921b0SApple OSS Distributions 'mach_port_name_t target', 1515c2921b0SApple OSS Distributions 'mach_port_name_t name', 1525c2921b0SApple OSS Distributions 'mach_port_name_t poly', 1535c2921b0SApple OSS Distributions 'mach_msg_type_name_t polyPoly', 1545c2921b0SApple OSS Distributions }, 1555c2921b0SApple OSS Distributions }, 1565c2921b0SApple OSS Distributions { number = 22, name = 'mach_port_insert_member', 1575c2921b0SApple OSS Distributions arguments = { 1585c2921b0SApple OSS Distributions 'mach_port_name_t target', 1595c2921b0SApple OSS Distributions 'mach_port_name_t name', 1605c2921b0SApple OSS Distributions 'mach_port_name_t pset', 1615c2921b0SApple OSS Distributions }, 1625c2921b0SApple OSS Distributions }, 1635c2921b0SApple OSS Distributions { number = 23, name = 'mach_port_extract_member', 1645c2921b0SApple OSS Distributions arguments = { 1655c2921b0SApple OSS Distributions 'mach_port_name_t target', 1665c2921b0SApple OSS Distributions 'mach_port_name_t name', 1675c2921b0SApple OSS Distributions 'mach_port_name_t pset', 1685c2921b0SApple OSS Distributions }, 1695c2921b0SApple OSS Distributions }, 1705c2921b0SApple OSS Distributions { number = 24, name = 'mach_port_construct', 1715c2921b0SApple OSS Distributions arguments = { 1725c2921b0SApple OSS Distributions 'mach_port_name_t target', 1735c2921b0SApple OSS Distributions 'mach_port_options_t *options', 1745c2921b0SApple OSS Distributions 'uint64_t context', 1755c2921b0SApple OSS Distributions 'mach_port_name_t *name', 1765c2921b0SApple OSS Distributions }, 1775c2921b0SApple OSS Distributions }, 1785c2921b0SApple OSS Distributions { number = 25, name = 'mach_port_destruct', 1795c2921b0SApple OSS Distributions arguments = { 1805c2921b0SApple OSS Distributions 'mach_port_name_t target', 1815c2921b0SApple OSS Distributions 'mach_port_name_t name', 1825c2921b0SApple OSS Distributions 'mach_port_delta_t srdelta', 1835c2921b0SApple OSS Distributions 'uint64_t guard', 1845c2921b0SApple OSS Distributions }, 1855c2921b0SApple OSS Distributions }, 1865c2921b0SApple OSS Distributions { number = 26, name = 'mach_reply_port', 1875c2921b0SApple OSS Distributions arguments = { 'void' }, 1885c2921b0SApple OSS Distributions }, 1895c2921b0SApple OSS Distributions { number = 27, name = 'thread_self', 1905c2921b0SApple OSS Distributions arguments = { 'void' }, 1915c2921b0SApple OSS Distributions }, 1925c2921b0SApple OSS Distributions { number = 28, name = 'task_self', 1935c2921b0SApple OSS Distributions arguments = { 'void' }, 1945c2921b0SApple OSS Distributions }, 1955c2921b0SApple OSS Distributions { number = 29, name = 'host_self', 1965c2921b0SApple OSS Distributions arguments = { 'void' }, 1975c2921b0SApple OSS Distributions }, 1985c2921b0SApple OSS Distributions 1995c2921b0SApple OSS Distributions { number = 31, name = 'mach_msg', 2005c2921b0SApple OSS Distributions arguments = { 2015c2921b0SApple OSS Distributions 'mach_msg_header_t *msg', 2025c2921b0SApple OSS Distributions 'mach_msg_option_t option', 2035c2921b0SApple OSS Distributions 'mach_msg_size_t send_size', 2045c2921b0SApple OSS Distributions 'mach_msg_size_t rcv_size', 2055c2921b0SApple OSS Distributions 'mach_port_name_t rcv_name', 2065c2921b0SApple OSS Distributions 'mach_msg_timeout_t timeout', 2075c2921b0SApple OSS Distributions 'mach_port_name_t notify', 2085c2921b0SApple OSS Distributions }, 2095c2921b0SApple OSS Distributions }, 2105c2921b0SApple OSS Distributions { number = 32, name = 'mach_msg_overwrite', 2115c2921b0SApple OSS Distributions arguments = { 2125c2921b0SApple OSS Distributions 'mach_msg_header_t *msg', 2135c2921b0SApple OSS Distributions 'mach_msg_option_t option', 2145c2921b0SApple OSS Distributions 'mach_msg_size_t send_size', 2155c2921b0SApple OSS Distributions 'mach_msg_size_t rcv_size', 2165c2921b0SApple OSS Distributions 'mach_port_name_t rcv_name', 2175c2921b0SApple OSS Distributions 'mach_msg_timeout_t timeout', 2185c2921b0SApple OSS Distributions 'mach_port_name_t notify', 2195c2921b0SApple OSS Distributions 'mach_msg_header_t *rcv_msg', 2205c2921b0SApple OSS Distributions 'mach_msg_size_t rcv_limit', 2215c2921b0SApple OSS Distributions }, 2225c2921b0SApple OSS Distributions }, 2235c2921b0SApple OSS Distributions { number = 33, name = 'semaphore_signal', 2245c2921b0SApple OSS Distributions arguments = { 2255c2921b0SApple OSS Distributions 'mach_port_name_t signal_name', 2265c2921b0SApple OSS Distributions }, 2275c2921b0SApple OSS Distributions }, 2285c2921b0SApple OSS Distributions { number = 34, name = 'semaphore_signal_all', 2295c2921b0SApple OSS Distributions arguments = { 2305c2921b0SApple OSS Distributions 'mach_port_name_t signal_name', 2315c2921b0SApple OSS Distributions }, 2325c2921b0SApple OSS Distributions }, 2335c2921b0SApple OSS Distributions { number = 35, name = 'semaphore_signal_thread', 2345c2921b0SApple OSS Distributions arguments = { 2355c2921b0SApple OSS Distributions 'mach_port_name_t signal_name', 2365c2921b0SApple OSS Distributions 'mach_port_name_t thread_name', 2375c2921b0SApple OSS Distributions }, 2385c2921b0SApple OSS Distributions }, 2395c2921b0SApple OSS Distributions { number = 36, name = 'semaphore_wait', 2405c2921b0SApple OSS Distributions arguments = { 2415c2921b0SApple OSS Distributions 'mach_port_name_t wait_name', 2425c2921b0SApple OSS Distributions }, 2435c2921b0SApple OSS Distributions }, 2445c2921b0SApple OSS Distributions { number = 37, name = 'semaphore_wait_signal', 2455c2921b0SApple OSS Distributions arguments = { 2465c2921b0SApple OSS Distributions 'mach_port_name_t wait_name', 2475c2921b0SApple OSS Distributions 'mach_port_name_t signal_name', 2485c2921b0SApple OSS Distributions }, 2495c2921b0SApple OSS Distributions }, 2505c2921b0SApple OSS Distributions { number = 38, name = 'semaphore_timedwait', 2515c2921b0SApple OSS Distributions arguments = { 2525c2921b0SApple OSS Distributions 'mach_port_name_t wait_name', 2535c2921b0SApple OSS Distributions 'unsigned int sec', 2545c2921b0SApple OSS Distributions 'clock_res_t nsec', 2555c2921b0SApple OSS Distributions }, 2565c2921b0SApple OSS Distributions }, 2575c2921b0SApple OSS Distributions { number = 39, name = 'semaphore_timedwait_signal', 2585c2921b0SApple OSS Distributions arguments = { 2595c2921b0SApple OSS Distributions 'mach_port_name_t wait_name', 2605c2921b0SApple OSS Distributions 'mach_port_name_t signal_name', 2615c2921b0SApple OSS Distributions 'unsigned int sec', 2625c2921b0SApple OSS Distributions 'clock_res_t nsec', 2635c2921b0SApple OSS Distributions }, 2645c2921b0SApple OSS Distributions }, 2655c2921b0SApple OSS Distributions { number = 40, name = 'mach_port_get_attributes', 2665c2921b0SApple OSS Distributions arguments = { 2675c2921b0SApple OSS Distributions 'mach_port_name_t target', 2685c2921b0SApple OSS Distributions 'mach_port_name_t name', 2695c2921b0SApple OSS Distributions 'mach_port_flavor_t flavor', 2705c2921b0SApple OSS Distributions 'mach_port_info_t port_info_out', 2715c2921b0SApple OSS Distributions 'mach_msg_type_number_t *port_info_outCnt', 2725c2921b0SApple OSS Distributions }, 2735c2921b0SApple OSS Distributions }, 2745c2921b0SApple OSS Distributions { number = 41, name = 'mach_port_guard', 2755c2921b0SApple OSS Distributions arguments = { 2765c2921b0SApple OSS Distributions 'mach_port_name_t target', 2775c2921b0SApple OSS Distributions 'mach_port_name_t name', 2785c2921b0SApple OSS Distributions 'uint64_t guard', 2795c2921b0SApple OSS Distributions 'boolean_t strict', 2805c2921b0SApple OSS Distributions }, 2815c2921b0SApple OSS Distributions }, 2825c2921b0SApple OSS Distributions { number = 42, name = 'mach_port_unguard', 2835c2921b0SApple OSS Distributions arguments = { 2845c2921b0SApple OSS Distributions 'mach_port_name_t target', 2855c2921b0SApple OSS Distributions 'mach_port_name_t name', 2865c2921b0SApple OSS Distributions 'uint64_t guard', 2875c2921b0SApple OSS Distributions }, 2885c2921b0SApple OSS Distributions }, 2895c2921b0SApple OSS Distributions { number = 43, name = 'mach_generate_activity_id', 2905c2921b0SApple OSS Distributions arguments = { 2915c2921b0SApple OSS Distributions 'mach_port_name_t target', 2925c2921b0SApple OSS Distributions 'int count', 2935c2921b0SApple OSS Distributions 'uint64_t *activity_id', 2945c2921b0SApple OSS Distributions }, 2955c2921b0SApple OSS Distributions }, 2965c2921b0SApple OSS Distributions { number = 44, name = 'task_name_for_pid', 2975c2921b0SApple OSS Distributions arguments = { 2985c2921b0SApple OSS Distributions 'mach_port_name_t target_tport', 2995c2921b0SApple OSS Distributions 'int pid', 3005c2921b0SApple OSS Distributions 'mach_port_name_t *tn', 3015c2921b0SApple OSS Distributions }, 3025c2921b0SApple OSS Distributions }, 3035c2921b0SApple OSS Distributions { number = 45, name = 'task_for_pid', 3045c2921b0SApple OSS Distributions arguments = { 3055c2921b0SApple OSS Distributions 'mach_port_name_t target_tport', 3065c2921b0SApple OSS Distributions 'int pid', 3075c2921b0SApple OSS Distributions 'mach_port_name_t *t', 3085c2921b0SApple OSS Distributions }, 3095c2921b0SApple OSS Distributions }, 3105c2921b0SApple OSS Distributions { number = 46, name = 'pid_for_task', 3115c2921b0SApple OSS Distributions arguments = { 3125c2921b0SApple OSS Distributions 'mach_port_name_t t', 3135c2921b0SApple OSS Distributions 'int *x', 3145c2921b0SApple OSS Distributions }, 3155c2921b0SApple OSS Distributions }, 3165c2921b0SApple OSS Distributions { number = 47, name = 'mach_msg2', 3175c2921b0SApple OSS Distributions arguments = { 3185c2921b0SApple OSS Distributions 'void *data', 3195c2921b0SApple OSS Distributions 'mach_msg_option64_t option64', 3205c2921b0SApple OSS Distributions 'mach_msg_header_t header', 3215c2921b0SApple OSS Distributions 'mach_msg_size_t send_size', 3225c2921b0SApple OSS Distributions 'mach_msg_size_t rcv_size', 3235c2921b0SApple OSS Distributions 'mach_port_t rcv_name', 3245c2921b0SApple OSS Distributions 'uint64_t timeout', 3255c2921b0SApple OSS Distributions 'uint32_t priority', 3265c2921b0SApple OSS Distributions }, 3275c2921b0SApple OSS Distributions }, 3285c2921b0SApple OSS Distributions { number = 48, name = 'macx_swapon', 3295c2921b0SApple OSS Distributions arguments = { 3305c2921b0SApple OSS Distributions 'uint64_t filename', 3315c2921b0SApple OSS Distributions 'int flags', 3325c2921b0SApple OSS Distributions 'int size', 3335c2921b0SApple OSS Distributions 'int priority', 3345c2921b0SApple OSS Distributions }, 3355c2921b0SApple OSS Distributions }, 3365c2921b0SApple OSS Distributions { number = 49, name = 'macx_swapoff', 3375c2921b0SApple OSS Distributions arguments = { 3385c2921b0SApple OSS Distributions 'uint64_t filename', 3395c2921b0SApple OSS Distributions 'int flags', 3405c2921b0SApple OSS Distributions }, 3415c2921b0SApple OSS Distributions }, 3425c2921b0SApple OSS Distributions { number = 50, name = 'thread_get_special_reply_port', 3435c2921b0SApple OSS Distributions arguments = { 'void' }, 3445c2921b0SApple OSS Distributions }, 3455c2921b0SApple OSS Distributions { number = 51, name = 'macx_triggers', 3465c2921b0SApple OSS Distributions arguments = { 3475c2921b0SApple OSS Distributions 'int hi_water', 3485c2921b0SApple OSS Distributions 'int low_water', 3495c2921b0SApple OSS Distributions 'int flags', 3505c2921b0SApple OSS Distributions 'mach_port_t alert_port', 3515c2921b0SApple OSS Distributions }, 3525c2921b0SApple OSS Distributions }, 3535c2921b0SApple OSS Distributions { number = 52, name = 'macx_backing_store_suspend', 3545c2921b0SApple OSS Distributions arguments = { 3555c2921b0SApple OSS Distributions 'boolean_t suspend', 3565c2921b0SApple OSS Distributions }, 3575c2921b0SApple OSS Distributions }, 3585c2921b0SApple OSS Distributions { number = 53, name = 'macx_backing_store_recovery', 3595c2921b0SApple OSS Distributions arguments = { 3605c2921b0SApple OSS Distributions 'int pid', 3615c2921b0SApple OSS Distributions }, 3625c2921b0SApple OSS Distributions }, 3635c2921b0SApple OSS Distributions 3645c2921b0SApple OSS Distributions { number = 58, name = 'pfz_exit', 3655c2921b0SApple OSS Distributions arguments = { 'void' }, 3665c2921b0SApple OSS Distributions }, 3675c2921b0SApple OSS Distributions { number = 59, name = 'swtch_pri', 3685c2921b0SApple OSS Distributions arguments = { 3695c2921b0SApple OSS Distributions 'int pri', 3705c2921b0SApple OSS Distributions }, 3715c2921b0SApple OSS Distributions }, 3725c2921b0SApple OSS Distributions { number = 60, name = 'swtch', 3735c2921b0SApple OSS Distributions arguments = { 'void' }, 3745c2921b0SApple OSS Distributions }, 3755c2921b0SApple OSS Distributions { number = 61, name = 'thread_switch', 3765c2921b0SApple OSS Distributions arguments = { 3775c2921b0SApple OSS Distributions 'mach_port_name_t thread_name', 3785c2921b0SApple OSS Distributions 'int option', 3795c2921b0SApple OSS Distributions 'mach_msg_timeout_t option_time', 3805c2921b0SApple OSS Distributions }, 3815c2921b0SApple OSS Distributions }, 3825c2921b0SApple OSS Distributions { number = 62, name = 'clock_sleep', 3835c2921b0SApple OSS Distributions arguments = { 3845c2921b0SApple OSS Distributions 'mach_port_name_t clock_name', 3855c2921b0SApple OSS Distributions 'sleep_type_t sleep_type', 3865c2921b0SApple OSS Distributions 'int sleep_sec', 3875c2921b0SApple OSS Distributions 'int sleep_nsec', 3885c2921b0SApple OSS Distributions 'mach_timespec_t *wakeup_time', 3895c2921b0SApple OSS Distributions }, 3905c2921b0SApple OSS Distributions }, 3915c2921b0SApple OSS Distributions 3925c2921b0SApple OSS Distributions { number = 70, name = 'host_create_mach_voucher', 3935c2921b0SApple OSS Distributions arguments = { 3945c2921b0SApple OSS Distributions 'mach_port_name_t host', 3955c2921b0SApple OSS Distributions 'mach_voucher_attr_raw_recipe_array_t recipes', 3965c2921b0SApple OSS Distributions 'int recipes_size', 3975c2921b0SApple OSS Distributions 'mach_port_name_t *voucher', 3985c2921b0SApple OSS Distributions }, 3995c2921b0SApple OSS Distributions }, 4005c2921b0SApple OSS Distributions 4015c2921b0SApple OSS Distributions { number = 72, name = 'mach_voucher_extract_attr_recipe', 4025c2921b0SApple OSS Distributions arguments = { 4035c2921b0SApple OSS Distributions 'mach_port_name_t voucher_name', 4045c2921b0SApple OSS Distributions 'mach_voucher_attr_key_t key', 4055c2921b0SApple OSS Distributions 'mach_voucher_attr_raw_recipe_t recipe', 4065c2921b0SApple OSS Distributions 'mach_msg_type_number_t *recipe_size', 4075c2921b0SApple OSS Distributions }, 4085c2921b0SApple OSS Distributions }, 4095c2921b0SApple OSS Distributions 4105c2921b0SApple OSS Distributions { number = 76, name = 'mach_port_type', 4115c2921b0SApple OSS Distributions arguments = { 4125c2921b0SApple OSS Distributions 'ipc_space_t task', 4135c2921b0SApple OSS Distributions 'mach_port_name_t name', 4145c2921b0SApple OSS Distributions 'mach_port_type_t *ptype', 4155c2921b0SApple OSS Distributions }, 4165c2921b0SApple OSS Distributions }, 4175c2921b0SApple OSS Distributions { number = 77, name = 'mach_port_request_notification', 4185c2921b0SApple OSS Distributions arguments = { 4195c2921b0SApple OSS Distributions 'ipc_space_t task', 4205c2921b0SApple OSS Distributions 'mach_port_name_t name', 4215c2921b0SApple OSS Distributions 'mach_msg_id_t msgid', 4225c2921b0SApple OSS Distributions 'mach_port_mscount_t sync', 4235c2921b0SApple OSS Distributions 'mach_port_name_t notify', 4245c2921b0SApple OSS Distributions 'mach_msg_type_name_t notifyPoly', 4255c2921b0SApple OSS Distributions 'mach_port_name_t *previous', 4265c2921b0SApple OSS Distributions }, 4275c2921b0SApple OSS Distributions }, 4281031c584SApple OSS Distributions { number = 88, name = 'exclaves_ctl', 4291031c584SApple OSS Distributions arguments = { 4301031c584SApple OSS Distributions 'mach_port_name_t name', 4311031c584SApple OSS Distributions 'uint32_t operation_and_flags', 4321031c584SApple OSS Distributions 'uint64_t identifier', 4331031c584SApple OSS Distributions 'mach_vm_address_t buffer', 4341031c584SApple OSS Distributions 'mach_vm_size_t size', 43594d3b452SApple OSS Distributions 'mach_vm_size_t size2', 43694d3b452SApple OSS Distributions 'mach_vm_size_t offset', 437*4f1223e8SApple OSS Distributions 'mach_vm_address_t status', 4381031c584SApple OSS Distributions }, 4391031c584SApple OSS Distributions }, 4405c2921b0SApple OSS Distributions 4415c2921b0SApple OSS Distributions { number = 89, name = 'mach_timebase_info', 4425c2921b0SApple OSS Distributions arguments = { 4435c2921b0SApple OSS Distributions 'mach_timebase_info_t info', 4445c2921b0SApple OSS Distributions }, 4455c2921b0SApple OSS Distributions }, 4465c2921b0SApple OSS Distributions { number = 90, name = 'mach_wait_until', 4475c2921b0SApple OSS Distributions arguments = { 4485c2921b0SApple OSS Distributions 'uint64_t deadline', 4495c2921b0SApple OSS Distributions }, 4505c2921b0SApple OSS Distributions }, 4515c2921b0SApple OSS Distributions { number = 91, name = 'mk_timer_create', 4525c2921b0SApple OSS Distributions arguments = { 'void' }, 4535c2921b0SApple OSS Distributions }, 4545c2921b0SApple OSS Distributions { number = 92, name = 'mk_timer_destroy', 4555c2921b0SApple OSS Distributions arguments = { 4565c2921b0SApple OSS Distributions 'mach_port_name_t name', 4575c2921b0SApple OSS Distributions }, 4585c2921b0SApple OSS Distributions }, 4595c2921b0SApple OSS Distributions { number = 93, name = 'mk_timer_arm', 4605c2921b0SApple OSS Distributions arguments = { 4615c2921b0SApple OSS Distributions 'mach_port_name_t name', 4625c2921b0SApple OSS Distributions 'uint64_t expire_time', 4635c2921b0SApple OSS Distributions }, 4645c2921b0SApple OSS Distributions }, 4655c2921b0SApple OSS Distributions { number = 94, name = 'mk_timer_cancel', 4665c2921b0SApple OSS Distributions arguments = { 4675c2921b0SApple OSS Distributions 'mach_port_name_t name', 4685c2921b0SApple OSS Distributions 'uint64_t *result_time', 4695c2921b0SApple OSS Distributions }, 4705c2921b0SApple OSS Distributions }, 4715c2921b0SApple OSS Distributions { number = 95, name = 'mk_timer_arm_leeway', 4725c2921b0SApple OSS Distributions arguments = { 4735c2921b0SApple OSS Distributions 'mach_port_name_t name', 4745c2921b0SApple OSS Distributions 'uint64_t mk_timer_flags', 4755c2921b0SApple OSS Distributions 'uint64_t mk_timer_expire_time', 4765c2921b0SApple OSS Distributions 'uint64_t mk_timer_leeway', 4775c2921b0SApple OSS Distributions }, 4785c2921b0SApple OSS Distributions }, 4795c2921b0SApple OSS Distributions { number = 96, name = 'debug_control_port_for_pid', 4805c2921b0SApple OSS Distributions arguments = { 4815c2921b0SApple OSS Distributions 'mach_port_name_t target_tport', 4825c2921b0SApple OSS Distributions 'int pid', 4835c2921b0SApple OSS Distributions 'mach_port_name_t *t', 4845c2921b0SApple OSS Distributions }, 4855c2921b0SApple OSS Distributions }, 4865c2921b0SApple OSS Distributions 4875c2921b0SApple OSS Distributions { number = 100, name = 'iokit_user_client', 4885c2921b0SApple OSS Distributions arguments = { 4895c2921b0SApple OSS Distributions 'void *userClientRef', 4905c2921b0SApple OSS Distributions 'uint32_t index', 4915c2921b0SApple OSS Distributions 'void *p1', 4925c2921b0SApple OSS Distributions 'void *p2', 4935c2921b0SApple OSS Distributions 'void *p3', 4945c2921b0SApple OSS Distributions 'void *p4', 4955c2921b0SApple OSS Distributions 'void *p5', 4965c2921b0SApple OSS Distributions 'void *p6', 4975c2921b0SApple OSS Distributions }, 4985c2921b0SApple OSS Distributions }, 4995c2921b0SApple OSS Distributions }, 5005c2921b0SApple OSS Distributions} 5015c2921b0SApple OSS Distributions 5025c2921b0SApple OSS Distributions-- Basic sanity checking that the same number isn't claimed by two syscalls. 5035c2921b0SApple OSS Distributionsfor type, entries in pairs(syscalls) do 5045c2921b0SApple OSS Distributions local numbers_seen = {} 5055c2921b0SApple OSS Distributions for _, call in ipairs(entries) do 5065c2921b0SApple OSS Distributions if numbers_seen[call.number] then 5075c2921b0SApple OSS Distributions io.stderr:write(('error: %s: saw %d twice: %s and %s\n'):format(type, 5085c2921b0SApple OSS Distributions call.number, call.name, numbers_seen[call.number])) 5095c2921b0SApple OSS Distributions os.exit(1) 5105c2921b0SApple OSS Distributions end 5115c2921b0SApple OSS Distributions numbers_seen[call.number] = call.name 5125c2921b0SApple OSS Distributions end 5135c2921b0SApple OSS Distributionsend 5145c2921b0SApple OSS Distributions 5155c2921b0SApple OSS Distributionsprint(cjson.encode(syscalls)) 516