Я новичок в ядре XNU и частично запутался.
Я вижу, что мы функция в файле vm_unix.c
:
kern_return_t task_for_pid(struct task_for_pid_args *args)
с комментарием:
// This should be a BSD system call, not a Mach trap!!!
, затем 2 объявления в osfmk\mach
:
/*
* Obsolete interfaces.
*/
extern kern_return_t task_for_pid(
mach_port_name_t target_tport,
int pid,
mach_port_name_t *t);
extern kern_return_t task_for_pid(
struct task_for_pid_args *args);
и отклонение ловушки в kern
/* 45 */ MACH_TRAP(task_for_pid, 3, 3, munge_www),
Итак, как вы можете видеть, я нашел 2 объявления и только 1 реализацию .
Где реализация ловушки совпадения с тремя параметрами? Как произошел переход с 3 параметров на 1 параметр?