. add cpufeature detection of both . use it for both ipc and kernelcall traps, using a register for call number . SYSENTER/SYSCALL does not save any context, therefore userland has to save it . to accomodate multiple kernel entry/exit types, the entry type is recorded in the process struct. hitherto all types were interrupt (soft int, exception, hard int); now SYSENTER/SYSCALL is new, with the difference that context is not fully restored from proc struct when running the process again. this can't be done as some information is missing. . complication: cases in which the kernel has to fully change process context (i.e. sigreturn). in that case the exit type is changed from SYSENTER/SYSEXIT to soft-int (i.e. iret) and context is fully restored from the proc struct. this does mean the PC and SP must change, as the sysenter/sysexit userland code will otherwise try to restore its own context. this is true in the sigreturn case. . override all usage by setting libc_ipc=1 |
||
|---|---|---|
| .. | ||
| __getcwd.c | ||
| __getlogin.c | ||
| _exit.c | ||
| _mcontext.c | ||
| _ucontext.c | ||
| accept.c | ||
| access.c | ||
| bind.c | ||
| brk.c | ||
| chdir.c | ||
| chmod.c | ||
| chown.c | ||
| chroot.c | ||
| close.c | ||
| connect.c | ||
| cprofile.c | ||
| dup.c | ||
| dup2.c | ||
| environ.c | ||
| execve.c | ||
| fchmod.c | ||
| fchown.c | ||
| fcntl.c | ||
| flock.c | ||
| fork.c | ||
| fpathconf.c | ||
| fstatfs.c | ||
| fstatvfs.c | ||
| fsync.c | ||
| ftruncate.c | ||
| getdents.c | ||
| getegid.c | ||
| geteuid.c | ||
| getgid.c | ||
| getgroups.c | ||
| getitimer.c | ||
| getpeername.c | ||
| getpgrp.c | ||
| getpid.c | ||
| getppid.c | ||
| getrlimit.c | ||
| getsid.c | ||
| getsockname.c | ||
| getsockopt.c | ||
| gettimeofday.c | ||
| getuid.c | ||
| init.c | ||
| ioctl.c | ||
| issetugid.c | ||
| kill.c | ||
| link.c | ||
| listen.c | ||
| loadname.c | ||
| lseek.c | ||
| lseek64.c | ||
| m_closefrom.c | ||
| Makefile.inc | ||
| minix_rs.c | ||
| MISSING_SYSCALLS | ||
| mkdir.c | ||
| mkfifo.c | ||
| mknod.c | ||
| mmap.c | ||
| mount.c | ||
| nanosleep.c | ||
| open.c | ||
| pathconf.c | ||
| pipe.c | ||
| poll.c | ||
| pread.c | ||
| priority.c | ||
| ptrace.c | ||
| pwrite.c | ||
| read.c | ||
| readlink.c | ||
| reboot.c | ||
| recvfrom.c | ||
| recvmsg.c | ||
| rename.c | ||
| rmdir.c | ||
| sbrk.c | ||
| select.c | ||
| sem.c | ||
| sendmsg.c | ||
| sendto.c | ||
| setgid.c | ||
| setgroups.c | ||
| setitimer.c | ||
| setsid.c | ||
| setsockopt.c | ||
| settimeofday.c | ||
| setuid.c | ||
| shmat.c | ||
| shmctl.c | ||
| shmget.c | ||
| shutdown.c | ||
| sigaction.c | ||
| sigpending.c | ||
| sigprocmask.c | ||
| sigreturn.c | ||
| sigsuspend.c | ||
| sizeup.c | ||
| socket.c | ||
| socketpair.c | ||
| sprofile.c | ||
| stat.c | ||
| statvfs.c | ||
| stime.c | ||
| symlink.c | ||
| sync.c | ||
| syscall.c | ||
| sysuname.c | ||
| truncate.c | ||
| umask.c | ||
| unlink.c | ||
| vectorio.c | ||
| vfork.c | ||
| write.c | ||