|
|
Normally, native UnixWare 7 processes enter the kernel through a mechanism known to Intel CPUs as a ``call gate''. Linux binaries, however, use a different mechanism known as an ``int80'' software interrupt. This difference provides the means by which UnixWare 7 distinguishes between UNIX and Linux processes.
Native UnixWare 7 processes do not issue int80 interrupts. If the LKP is not installed, the UnixWare 7 kernel terminates any process that makes an int80 call.
If the LKP is installed, the UnixWare 7 kernel traps int80 interrupts, understanding them to be Linux process requests for kernel functions. When a process executes an int80 instruction, the UnixWare 7 kernel marks it as a Linux process and moves it into a Linux working environment. In effect, the kernel switches personality from UnixWare 7 to Linux for that process.
For each int80 software interrupt it receives, the LKP layer of the UnixWare 7 kernel identifies the type of call, and retrieves its arguments. Depending on the system call type, the LKP layer then does one of the following:
When the call is complete, the UnixWare 7 kernel sends the results back to the caller process.
The LKP supports most Linux system calls, but cannot support system calls that get or set Linux kernel attributes. The following Linux system calls are not currently supported.
| acct | adjtimex | bdflush | capget | capset |
| create_module | delete_module | get_kernel_syms | init_module | mount |
| nfsservctl | old_umount | old_vm86 | pivot_root | prctl |
| query_module | quotactl | reboot | sendfile | setdomainname |
| setfsuid | setfsuid16 | setfsgid | setfsgid16 | sethostname |
| sigqueueinfo | swapoff | swapon | sysfs | sysinfo |
| syslog | umount | uselib | ustat | vhangup |
| vm86 |