例如,int setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs)
,这对我来说很有意义。但是我不能理解这样的东西,SYSCALL_DEFINE3(sigaltstack, const stack_t __user *, uss,stack_t __user *, uoss, struct pt_regs *, regs)
。为什么"const stack_t __user*"one_answers"uss"之间有一个","。通过这个函数的主体,我可以得出结论,"const stack_t __user"modefy"uss。我了解到"__user"是一个宏
SYSCALL_DEFINE3是一个用于带有3个参数的系统调用的宏。其论点如下所述:https://elixir.bootlin.com/linux/latest/source/include/linux/syscalls.h#L101
第一个是系统调用的名称,后面是3对(type,name(,它们是每个参数的类型和名称。这允许编译器在Linux可以运行的各种体系结构上满足系统调用的调用约定。