POSIX specifies the API available to programs, and also shell and commands and stuff available to users. It does not specify which functions should be available from the standard C library, and which should be available from the kernel: from the standpoint of POSIX, it's all the same. POSIX doesn't care how the API is implemented, just that it is implemented correctly.