Как ловушка mach стала системным вызовом? - PullRequest
0 голосов
/ 06 мая 2020

Я новичок в ядре 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 параметр?

...