Defining System Calls
SYSCALL_DEFINE0(getpid)
{
return task_tgid_vnr(current); // returns current->tgid
}
Expands into
asmlinkage long sys_getpid(void)
The asmlinkage modifier tells the compiler to look only on the stack for this function’s arguments. This is a required modifier for all system calls.
getpid()
system call is defined as sys_getpid()
in the kernel. This is the naming convention taken with all system calls in Linux: System call bar()
is implemented in the kernel as function sys_bar()
.