Code to implement system calls is not linked into user level programs.
User level programs get the service of system calls by sending a message to a server process containing an integer identifying the system call to be executed.
User code must fill in a message structure with the system call's parameters (possibly none, depending on the system call).
The reply will overwrite the user's message structure with the return results.