What is the difference between a system call and a function call? Is fopen() a system call or a function call?
Actually, the system call is not related to function call. The only common of these two mechanism is that they both provides services to the caller.
From view of thread execution to see system call:
A system call is function for application mode program to request services provided by underline OS. The system call will bring the running thread from user mode into kernel mode, execute the system call handler function, then return back to user mode.
Syscall Parameters:
The parameter of a system call is (syscall number, params...). The meaning and format of params depends on syscall number.
From view of syscall library provided to userland program:
The user mode program usually calls glibc's library to call system call. For example, the open() function in glibc: