summaryrefslogtreecommitdiff
path: root/Kernel/API
AgeCommit message (Collapse)Author
2021-08-17Kernel+Userland: Remove global futexesAndreas Kling
We only ever use private futexes, so it doesn't make sense to carry around all the complexity required for global (cross-process) futexes.
2021-08-16Kernel: Make makedev()/minor()/major() staticItamar
This was originally done in 7274037 and for some reason reverted in 740140a. This avoids "multiple definitions" link errors and fixes the libuv port.
2021-08-15Kernel+Userland: Remove chroot functionalityAndreas Kling
We are not using this for anything and it's just been sitting there gathering dust for well over a year, so let's stop carrying all this complexity around for no good reason.
2021-08-14LibC: Add SOCK_RDM and SOCK_SEQPACKET to socket.hKenneth Myhra
2021-08-14LibC: Add IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP to netin/in.hKenneth Myhra
2021-08-14Kernel+LibC: Share definitions for sys/statvfs.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for sched.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for sys/uio.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for sys/ptrace.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for sys/time.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for sys/times.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for stdio.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for unistd.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for poll.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for utsname.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for dirent.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for serenity.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for sys/wait.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for net/{if,if_arp,route}.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for futex.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for signal.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for netinet/in.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for sys/socket.h and sys/un.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for termios.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for sys/mman.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions for time.h and sys/stat.hAndreas Kling
2021-08-14Kernel+LibC: Share definitions in fcntl.h and sys/types.hAndreas Kling
This patch begins the work of sharing types and macros between Kernel and LibC instead of duplicating them via the kludge in UnixTypes.h. The basic idea is that the Kernel vends various POSIX headers via Kernel/API/POSIX/ and LibC simply #include's them to get the macros.
2021-08-12Kernel+LibC: Add sys$perf_register_string()Andreas Kling
This syscall allows userspace to register a keyed string that appears in a new "strings" JSON object in profile output. This will be used to add custom strings to profile signposts. :^)
2021-08-10Kernel: Add CLOCK_MONOTONIC_COARSE to the kernel time pageAndreas Kling
This allows clock_gettime(CLOCK_MONOTONIC_COARSE) without syscalls. Core::EventLoop takes advantage of this automatically. :^)
2021-08-10Kernel: Only expose CLOCK_REALTIME_COARSE via the kernel time pageAndreas Kling
Non-COARSE clock sources may probably still require a syscall.
2021-08-10Kernel+LibC: Allow clock_gettime() to run without syscallsAndreas Kling
This patch adds a vDSO-like mechanism for exposing the current time as an array of per-clock-source timestamps. LibC's clock_gettime() calls sys$map_time_page() to map the kernel's "time page" into the process address space (at a random address, ofc.) This is only done on first call, and from then on the timestamps are fetched from the time page. This first patch only adds support for CLOCK_REALTIME, but eventually we should be able to support all clock sources this way and get rid of sys$clock_gettime() in the kernel entirely. :^) Accesses are synchronized using two atomic integers that are incremented at the start and finish of the kernel's time page update cycle.
2021-08-10Kernel: Alphabetize the syscall listAndreas Kling
2021-08-10Kernel+UserspaceEmulator: Remove unused sys$gettimeofday()Andreas Kling
Now that LibC uses clock_gettime() to implement gettimeofday(), we can get rid of this entire syscall. :^)
2021-08-07Kernel: Disable big process lock for sys$syncIdan Horowitz
This syscall doesn't touch any intra-process shared resources and only calls VirtualFileSystem::sync, which is self-locking.
2021-08-06Kernel: Disable big process lock for sys$sysconfIdan Horowitz
This syscall only reads constant kernel globals, and as such does not need to hold the big lock.
2021-08-06Kernel: Disable big process lock for sys$get_stack_boundsIdan Horowitz
This syscall only reads from the shared m_space field, but that field is only over written to by Process::attach_resources, before the process was initialized (aka, before syscalls can happen), by Process::finalize which is only called after all the process' threads have exited (aka, syscalls can not happen anymore), and by Process::do_exec which calls all other syscall-capable threads before doing so. Space's find_region_containing already holds its own lock, and as such there's no need to hold the big lock.
2021-08-06Kernel: Disable big process lock for sys$gettimeofdayIdan Horowitz
This syscall doesn't touch any intra-process shared resources and only accesses the time via the atomic TimeManagement::now so there's no need to hold the big lock.
2021-08-06Kernel: Disable big process lock for sys$clock_nanosleepIdan Horowitz
This syscall doesn't touch any intra-process shared resources and only accesses the time via the atomic TimeManagement::current_time so there's no need to hold the big lock.
2021-08-06Kernel: Disable big process lock for sys$clock_gettime()Idan Horowitz
This syscall doesn't touch any intra-process shared resources and reads the time via the atomic TimeManagement::current_time, so it doesn't need to hold any lock.
2021-08-06Kernel: Disable big process lock for sys$getkeymapIdan Horowitz
This syscall only reads non process-related global values, and as such doesn't need to hold the big lock.
2021-08-06Kernel: Disable big process lock for sys$getrandomIdan Horowitz
This syscall doesn't touch any intra-process shared resources and already holds the global kernel RNG lock so there's no reason to hold the big lock.
2021-08-06Kernel: Disable big process lock for sys$dbgputchIdan Horowitz
This syscall doesn't touch any intra-process shared resources and already holds the global logging lock so there's no reason to hold the big lock.
2021-08-06Kernel: Disable big process lock for sys$dbgputstrIdan Horowitz
This syscall doesn't touch any intra-process shared resources and already holds the global logging lock so there's no reason to hold the big lock.
2021-08-06Kernel: Disable big process lock for sys$dump_backtrace()Idan Horowitz
This syscall only dumps the current thread's backtrace and as such doesn't touch any shared intra-process resources.
2021-08-06Kernel: Disable big process lock for sys$beep()Idan Horowitz
The PCSpeaker is global and not locked anyways, so there's no need for mutual exclusion between threads in the same process.
2021-08-06Kernel: Make a bunch of "char const* to_string()" return StringViewAndreas Kling
2021-07-25Kernel+LibSystem: Add a 4th syscall argumentAndreas Kling
Let's allow passing 4 function arguments to a syscall. The 4th argument goes into ESI or RSI.
2021-07-20Kernel: Disable big process lock for sys$yield()Brian Gianforcaro
2021-07-20Kernel: Disable big process lock for sys$gettid()Brian Gianforcaro
This syscall reads a read only value from the current thread, and hence has no need for the big process lock.
2021-07-20Kernel: Disable big process lock for sys$getpid()Brian Gianforcaro