System calls are usually wrapped in the SYSCALL_DEFINEx()SYSCALL_DEFINEx() macro, which is why a simple grepgrep doesn't find them:
fs/namei.c:SYSCALL_DEFINE2(mkdir, const char __user *, pathname, int, mode)
fs/namei.c:SYSCALL_DEFINE2(mkdir, const char __user *, pathname, int, mode)
The final function name after the macro is expanded ends up being "sys_mkdir"sys_mkdir. The SYSCALL_DEFINEx()SYSCALL_DEFINEx() macro adds boilerplate things like tracing code that each syscall definition needs to have.