The syscall function is just a library function that can be linked into user mode programs.
It executes in user mode.
What does it do? Not much.
It calls another function:
int sendrec(int who, message *msgptr)
Ok, so how does the message really get sent?