The question and answers are all missing the key "glue" between the C mkdir() function and the Linux syscall - glibc.
[..] char *cmd = __alloca (80 + strlen (path)); (mkdir command line parsing) status = system (cmd); [..]
That's right, it just relays. I'm not sure how it gets to the kernel. I suspect with a system call somewhere.
What I know is that it arrives in the kernel, in the fs source files: namei.c for the vfs part and <fs-name>/namei.c for filesystem specific implementations (that are called by the vfs code in the end, I guess).
Ps. Feel free to correct me. I only concluded this by poking around the sources a bit, not into kernel development myself.