DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 
Base kernel compatibility

System call compatibility notes

access(2) binary compatibility notes

Two constants defined in unistd.h for deriving the amode argument are not normally used on SCO OpenServer (EX_OK and EFF_ONLY_OK). SCO OpenServer binaries won't normally use these values since they didn't have kernel support, but since they are in unistd.h, it is possible for an SCO OpenServer application to use them. If such a binary runs on UnixWare 7, the EX_OK and EFF_ONLY_OK constants will be evaluated correctly as part of amode. This may be different than the SCO OpenServer behavior.

access(2) source compatibility notes

Two constants defined in unistd.h for deriving the amode argument are not normally used on SCO OpenServer (EX_OK and EFF_ONLY_OK). Application built using the UnixWare and OpenServer Development Kit and using these flags will run correctly on SCO OpenServer with the Binary Compatibility Module installed.

adjtime(2) binary compatibility notes

The SCO OpenServer version of this system call is affected by a number of system tunable parameters that are not present on UnixWare 7 (or SCO UnixWare 2.1.X): update_rtc (if set to 1, the real time clock is set to the new system time after adjtime); clock_drift (the rate at which adjustment is made in nanoseconds/second; and, track_rtc (keeps system clock accurate).

SCO OpenServer applications that make assumptions based on the behavior of adjtime when the above parameters are set (on SCO OpenServer) may exhibit unexpected behavior on UnixWare 7.

execlp(2) binary compatibility notes

The OS libc code retries up to 5 time on an ETXTBSY for execvp and execlp. The SCO UnixWare 2.1.X and UnixWare 7 kernels don't return ETXTBSY so someone expecting this behavior won't see it.

execlp(2) source compatibility notes

The SCO UnixWare 2.1.X and UnixWare 7 kernels don't return ETXTBSY; the SCO OpenServer kernel does return ETXTBSY, and the code retries up to 5 time on an ETXTBSY for execvp and execlp. To run properly on SCO OpenServer, a UnixWare 7-compiled binary should test for ETXTBSY.

execvp(2) binary compatibility notes

The OS libc code retries up to 5 time on an ETXTBSY for execvp and execlp. The SCO UnixWare 2.1.X and UnixWare 7 kernels don't return ETXTBSY so someone expecting this behavior won't see it.

execvp(2) source compatibility notes

The SCO UnixWare 2.1.X and UnixWare 7 don't return ETXTBSY; the SCO OpenServer kernel does return ETXTBSY, and the code retries up to 5 time on an ETXTBSY for execvp and execlp. To run properly on SCO OpenServer a UnixWare 7-compiled binary should test for ETXTBSY.

fcntl(2) source compatibility notes

The UnixWare 7 and SCO UnixWare 2.1.X system calls have many more commands than the SCO OpenServer system call: F_DUP2, F_GETOWN, F_SETOWN, F_FREESP, F_RSETLK, F_RSETLKW, F_RGETLK. A portable application compiled on UnixWare 7 should avoid using these commands, as they will fail with ENOSYS (or SIGSYS) on SCO OpenServer.

fork1, forkall compatibility notes

On SCO OpenServer, these calls behave exactly the same as fork(2).

getrlimit/setrlimit(2) binary compatibility notes

On SCO OpenServer, the mnemonic for resource number 6 is RLIMIT_AS. On UnixWare 7 and SCO UnixWare 2.1.X, the mnemonic is RLIMIT_VMEM. However, the function of resource number 6 in both systems is exactly the same, so this does not cause a problem for SCO OpenServer binaries on UnixWare 7. Any source code brought to UnixWare 7 from SCO OpenServer would have to be changed (if it uses the SCO OpenServer RLIMIT_AS mnemonic) before compiling with the UnixWare 7 compilation system.

getrlimit/setrlimit(2) source compatibility notes

On SCO OpenServer, the mnemonic for resource number 6 is RLIMIT_AS. On UnixWare 7 and SCO UnixWare 2.1.X, the mnemonic is RLIMIT_VMEM. The function of resource number 6 in both systems is exactly the same, so this does not cause a problem for UnixWare 7 binaries run on SCO OpenServer. Any source code brought to SCO OpenServer from UnixWare 7 would have to be changed (if it uses the SCO UnixWare 2.1.X RLIMIT_VMEM mnemonic) before compiling with the SCO OpenServer compilation system.

libattach/libdetach(S) binary compatibility notes

These SCO OpenServer calls support static shared libraries for user applications; the calls are in the SCO OpenServer kernel, but are not documented. These calls are not supported on either UnixWare 7 or SCO UnixWare 2.1.X. A SCO OpenServer application using this call on UnixWare 7 will return ENOSYS for the call.

memcntl(2) binary compatibility notes

Although memcntl isn't documented in SCO OpenServer, there is code in the kernel to support it. The call is documented on UnixWare 7 and SCO UnixWare 2.1.X, and is the same except for two extra subcommands available on SCO OpenServer: MC_MAPCPU and MC_MAPUBLK.

Any SCO OpenServer binary that uses these subcommands will fail with ENOSYS when run on UnixWare 7.

mmap(2) binary compatibility notes

The SCO OpenServer mmap.h contains 4 undocumented subcommands not supported on either SCO UnixWare 2.1.X and UnixWare 7: MAP_PHMEM, MAP_KVMEM, MAP_ANCESTRAL, and MAP_NOEOF. An SCO OpenServer-compiled application will get an ENOSYS error return when it attempts to use these subcommands on UnixWare 7.

mount(2) binary compatibility notes

File-system specific options can be aproblem if a given fstype name is the same on both systems (in sysfs) but the options in data_ptr are not.

There is a difference in the mflags=0x8 defined in mount.h. On SCO OpenServer it is 'MS_CACHE', described in mount.h as "RFS client caching". On UnixWare it is 'MS_HADBAD', described in mount.h as "file system incurred a bad block so set sstate to FSBADBLK on mount".

The MS_NOEXEC mflag is defined in mount.h on SCO OpenServer as "return ENOEXEC on exec()". Its bit value is 0x8000. UnixWare doesn't have anything at that bit value or a function like this at another value. Using this call on UnixWare results in EINVAL.

mount(2) source compatibility notes

File-system specific options can be aproblem if a given fstype name is the same on both systems (in sysfs) but the options in data_ptr are not.

There is a difference in the mflags=0x8 defined in mount.h. On SCO OpenServer it is 'MS_CACHE', described in mount.h as "RFS client caching". On UnixWare it is 'MS_HADBAD', described in mount.h as "file system incurred a bad block so set sstate to FSBADBLK on mount".

The MS_NOEXEC mflag is defined in mount.h on SCO OpenServer as "return ENOEXEC on exec()". Its bit value is 0x8000. UnixWare doesn't have anything at that bit value or a function like this at another value. Using this call on UnixWare results in EINVAL.

The MS_SOFTMOUNT(0x80) and MS_SYSSPACE(0x800) flags are defined in mount.h on SCO UnixWare 2.1.X there are no corresponding hex values in SCO OpenServer mount.h.

nice(2) binary compatibility notes

On SCO UnixWare 2.1.X and UnixWare 7, nice can only work on processes in the time sharing class, and returns EINVAL on attempts to change the priority of a fixed priority class process. On SCO OpenServer, nice does not return EINVAL. If an SCO OpenServer application is run on UnixWare 7 and does a nice on a fixed priority class process, it would get an unexpected EINVAL error.

To fix, alter the SCO OpenServer application source code to expect EINVAL as a possible error return on using nice, and then recompile.

nice(2) source compatibility notes

On SCO UnixWare 2.1.X and UnixWare 7, nice can only work on processes in the time sharing class, and returns EINVAL on attempts to change the priority of a fixed priority class process. On SCO OpenServer, nice does not return EINVAL.

UnixWare 7 applications targeted for SCO OpenServer should not depend on the return of EINVAL.

paccess(S) binary compatibility notes

This SCO OpenServer system call is unsupported on both SCO UnixWare 2.1.X and UnixWare 7.

The paccess(S) system call on SCO OpenServer gets and sets parameters in the u area of the current process and is used by a parent process to trace a child process.

An SCO OpenServer application using paccess must be recoded to use the /proc file system to access status information about a process. See proc(4).

pipe(2) binary compatibility notes

pipe(2) source compatibility notes

On SCO UnixWare 2.1.X and UnixWare 7, pipes are implemented as two bidirectional, STREAMs-based file descriptors. On SCO OpenServer, a pipe is implemented as two one-way file descriptors, with one fd being 'send' and the other 'receive'. An application compiled using the UnixWare and OpenServer Development Kit and run on SCO OpenServer should not depend on the pipe file descriptors being bidirectional, or it will fail.

poll(2) binary compatibility notes

The SCO OpenServer poll code shows a system wide tunable poll_delay_compatibility that effects whether a poll call with no file descriptors will honor the timeout; if the tunable is set, the timeout is honored.

SCO OpenServer binaries executed on UnixWare 7 will behave the same as on SCO OpenServer (i.e., the poll_delay_compatibility tunable is checked and the timeout is honored only if the tunable is set). This behavior occurs only for SCO OpenServer binaries (see ``Executable formats'').

poll(2) source compatibility notes

On SCO UnixWare 2.1.X, the poll_delay_compatibility tunable is unsupported (see ``poll(2) binary compatibility notes'') and all poll calls, even those with no file descriptors, honor the timeout.

priocntl(2) source compatibility notes

UnixWare 7 supports a few documented commands not supported on SCO OpenServer: PC_ADMIN, PC_SETAGEPARMS, and PC_GETAGEPARMS. A UnixWare 7-compiled application will get an ENOSYS error return when it attempts to use these subcommands on SCO OpenServer.

probe(S) binary compatibility notes

On SCO OpenServer, this undocumented system call executes all the configured probe routines and returns the information they return to the calling user process. This system call is unsupported on both SCO UnixWare 2.1.X and UnixWare 7. SCO OpenServer applications run on UnixWare 7 will return ENOSYS if they make a call to probe.

ptrace(2) binary compatibility notes

An SCO OpenServer application using ptrace should be recoded to use the /proc file system, which is the preferred UnixWare interface for accessing status information about a process. See proc(4).

While ptrace(2) is supported on SCO UnixWare 2.1.X and UnixWare 7, only requests '0' through '9' are supported. The SCO OpenServer kernel supports '0' through '13'.

In order to run on UnixWare, an SCO OpenServer application that needs to use ptrace would probably need to be recompiled using the UnixWare and OpenServer Development Kit. It is highly recommended that such an application be rewritten to use /proc instead.

ptrace(2) source compatibility notes

Since the UnixWare 7 debugger is supported on SCO OpenServer, UDK-produced binaries can use UnixWare 7-style child tracing on SCO OpenServer.

Security(S) binary compatibility notes

SCO OpenServer applications executing on UnixWare 7 (or SCO UnixWare 2.1.X) will return ENOSYS when using this call and its subcommands. UnixWare 7 equivalents should be used instead, as follows:

Security subcommand UnixWare 7 equivalent
stopio  
getluid getuid(2)
setluid setuid(2)
statpriv filepriv(2)
chpriv filepriv(2)

setcontext(2) binary compatibility notes

There are differences in the ucontext structure used by this system call on UnixWare 7 and SCO OpenServer:

This incompatibility is managed by the UnixWare 7 kernel for SCO OpenServer applications provided these applications always preceed a call to setcontext with a call to getcontext. If an SCO OpenServer-compiled application running on UnixWare 7 (or SCO UnixWare 2.1.X) makes a call to setcontext that is not preceded by a call to getcontext, the application could pass bad data tosetcontext, with unpredictable results.

statfs(2) source compatibility notes

SCO UnixWare 2.1.X dropped support for statfs. Although the code remains preserved for compatibility in SCO UnixWare 2.1.X and UnixWare 7, there is no manual page and support for this call may be dropped in the future. Recompiled applications should use statvfs(2) instead.

sysi86(2) binary compatibility notes

On SCO OpenServer, the SI86GETFEATURES call is used extensively by libc and other libs to determine if a feature is available in the kernel. This subcommand is supported on UnixWare 7. On UnixWare 7, however, FEATURE_TCGETS and FEATURE_SID will be turned off, as these services are not provided by the UnixWare 7 kernel (they are provided by the SCO OpenServer kernel).

There are a number of sysi86 subcommands that are on SCO OpenServer but not on UnixWare 7 or SCO UnixWare 2.1.X. If an SCO OpenServer executable invokes any of these subcommands, the UnixWare 7 kernel returns EINVAL:

sysinfo source compatibility notes

The following commands are not supported on SCO OpenServer, and a UnixWare and OpenServer Development Kit-compiled binary will get ENOSYS if it attempts to use these commands on SCO OpenServer:

   SI_SET_HOSTNAME
   SI_HW_PROVIDER
   SI_HW_SERIAL
   SI_ARCHITECTURE
   SI_INITTAB_NAME

The following commands are not supported on both SCO OpenServer and SCO UnixWare 2.1.X:

   SI_BUSTYPES
   SI_KERNEL_STAMP
   SI_OS_BASE
   SI_OS_PROVIDER
   SI_USER_LIMIT

syssetconf binary compatibility notes

This SCO OpenServer system call and the kernel tunables it provides are unsupported on both SCO UnixWare 2.1.X and UnixWare 7.

The SCO OpenServer syssetconf system call is an extension to sysconf that provides a set of 'kernel' type tunables, none of which are documented on the SCO OpenServer sysconf(S) man page (syssetconf itself is undocumented on SCO OpenServer). These constants are visible to applications, however, in the &osr ``sys/unistd.h.'' header file, so an SCO OpenServer application may use them. None of these values are defined on SCO UnixWare 2.1.X or UnixWare 7. SCO OpenServer applications run on UnixWare 7 that use syssetconf on UnixWare 7 will return ENOSYS (and/or a SIGSYS signal). Such applications need to be recoded to work properly on UnixWare 7.

Note that in UnixWare 7 (and SCO UnixWare 2.1.X), sysconf(3C) is implemented as a C library function, not a system call.

uadmin(2) binary compatibility notes

There are two commands for this system call on SCO OpenServer that are unsupported opn UnixWare 7 and SCO UnixWare 2.1.X: A_BDEVSYNC, A_GETDEV, and AD_PWRNAP. SCO OpenServer applications using these commands on UnixWare 7 will get an ENOSYS error return and a SIGSYS signal).

On UnixWare 7 and SCO UnixWare 2.1.X, the AD_HALT subcommand (to A_SHUTDOWN) shuts the system down, but does not support the "reboot on keystroke" functionality supported by SCO OpenServer.

uadmin(2) source compatibility notes

UnixWare 7 applications executing on SCO OpenServer and using the AD_HALT subcommand (to A_SHUTDOWN) will get the "reboot on keystroke" functionality as well as shutting the system down (there is no "reboot on keystroke" on UnixWare 7 and SCO UnixWare 2.1.X). The AD_PWRDOWN command, supported on UnixWare 7 and SCO OpenServer only, shuts the system down on both systems with no reboot option.

ulimit(2) source compatibility notes

The UnixWare 7 and SCO UnixWare 2.1.X system call support two more commands than SCO OpenServer: UL_GMEMLIM and UL_GDESLIM. A portable application compiled on UnixWare 7 should avoid using these commands, as they will fail with ENOSYS (or SIGSYS) on SCO OpenServer.

waitid(2) binary compatibility notes

To be written.

waitid(2) source compatibility notes

To be written.

xsetre[gu]id(S) binary compatibility notes

The SCO OpenServer xsetregid(S) and xsetreuid(S) functions allow setting the 'real' and 'effective' uids and gids in one system call. There are versions supported on SCO OpenServer in both libc.so.1 and libsocket.a. SCO OpenServer applications must have been compiled using the version in libc.so.1 in order to run on UnixWare 7 (applications linked with static archives are unsupported on UnixWare 7).

When an SCO OpenServer application using these calls is run on UnixWare 7, these calls are mapped to the setreuid(3C) and setregid(3C) functions.


Previous topic: System calls (uadmin - xsetreuid)

© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 27 April 2004