Binary Compatibility Guide

System Calls

There are major discrepancies between SunOS 4.x and Solaris 2.x system calls, such as different system call numbers and different interfaces or behaviors. Most of the differences between system calls in the two versions are handled by the Binary Compatibility Package through mappings and the use of alternate routines providing the expected interface and behavior.

The system call mappings can cause the output of the truss(1) program run under the Binary Compatibility Package to differ from your expectations. A system call name might differ, or a system call might not occur when expected. The arguments to the call or the returned value might be different. For example, in cases requiring path name resolution (see "Resolving Path Names "), an open() call to one file can actually open a different file.

Applications should invoke the system calls through the wrapper routines provided in libc. Do not directly invoke system calls through the trap mechanism, as it is then impossible to call the appropriate routine and map the data and system call number properly.