Andreas Kling
4226b662cd
Kernel+Userland: Remove global futexes
...
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-17 01:21:47 +02:00
Itamar
f3aa87c436
Kernel: Make makedev()/minor()/major() static
...
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-16 23:26:52 +02:00
Andreas Kling
1b739a72c2
Kernel+Userland: Remove chroot functionality
...
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-15 12:44:35 +02:00
Kenneth Myhra
cb10c62327
LibC: Add SOCK_RDM and SOCK_SEQPACKET to socket.h
2021-08-14 22:32:00 +01:00
Kenneth Myhra
3875e8bd4b
LibC: Add IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP to netin/in.h
2021-08-14 22:32:00 +01:00
Andreas Kling
e1273a8ff7
Kernel+LibC: Share definitions for sys/statvfs.h
2021-08-14 19:58:11 +02:00
Andreas Kling
dfd78b75d8
Kernel+LibC: Share definitions for sched.h
2021-08-14 19:58:11 +02:00
Andreas Kling
c9a5d83ccc
Kernel+LibC: Share definitions for sys/uio.h
2021-08-14 19:58:11 +02:00
Andreas Kling
37e98a55b7
Kernel+LibC: Share definitions for sys/ptrace.h
2021-08-14 19:58:11 +02:00
Andreas Kling
6b6eca0631
Kernel+LibC: Share definitions for sys/time.h
2021-08-14 19:58:11 +02:00
Andreas Kling
35b52338bb
Kernel+LibC: Share definitions for sys/times.h
2021-08-14 19:58:11 +02:00
Andreas Kling
808ce594db
Kernel+LibC: Share definitions for stdio.h
2021-08-14 19:58:11 +02:00
Andreas Kling
9c2212a60a
Kernel+LibC: Share definitions for unistd.h
2021-08-14 19:58:11 +02:00
Andreas Kling
d33b43276c
Kernel+LibC: Share definitions for poll.h
2021-08-14 19:58:11 +02:00
Andreas Kling
d794ed1de7
Kernel+LibC: Share definitions for utsname.h
2021-08-14 19:58:11 +02:00
Andreas Kling
c65a735d71
Kernel+LibC: Share definitions for dirent.h
2021-08-14 19:58:11 +02:00
Andreas Kling
77c2c0f620
Kernel+LibC: Share definitions for serenity.h
2021-08-14 19:58:11 +02:00
Andreas Kling
6f78377864
Kernel+LibC: Share definitions for sys/wait.h
2021-08-14 19:58:11 +02:00
Andreas Kling
661bd992b0
Kernel+LibC: Share definitions for net/{if,if_arp,route}.h
2021-08-14 19:58:11 +02:00
Andreas Kling
ff50122dc5
Kernel+LibC: Share definitions for futex.h
2021-08-14 19:58:11 +02:00
Andreas Kling
6fd7212476
Kernel+LibC: Share definitions for signal.h
2021-08-14 19:58:11 +02:00
Andreas Kling
9dc1350177
Kernel+LibC: Share definitions for netinet/in.h
2021-08-14 19:58:11 +02:00
Andreas Kling
b92e6b02e5
Kernel+LibC: Share definitions for sys/socket.h and sys/un.h
2021-08-14 19:58:11 +02:00
Andreas Kling
d277cdfd4c
Kernel+LibC: Share definitions for termios.h
2021-08-14 19:58:11 +02:00
Andreas Kling
a8d1c2dde9
Kernel+LibC: Share definitions for sys/mman.h
2021-08-14 19:58:11 +02:00
Andreas Kling
0a78056453
Kernel+LibC: Share definitions for time.h and sys/stat.h
2021-08-14 19:58:11 +02:00
Andreas Kling
740140a661
Kernel+LibC: Share definitions in fcntl.h and sys/types.h
...
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-14 19:58:11 +02:00
Andreas Kling
4657c79143
Kernel+LibC: Add sys$perf_register_string()
...
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-12 00:03:39 +02:00
Andreas Kling
b7dae4f90e
Kernel: Add CLOCK_MONOTONIC_COARSE to the kernel time page
...
This allows clock_gettime(CLOCK_MONOTONIC_COARSE) without syscalls.
Core::EventLoop takes advantage of this automatically. :^)
2021-08-10 21:51:05 +02:00
Andreas Kling
aaead6f332
Kernel: Only expose CLOCK_REALTIME_COARSE via the kernel time page
...
Non-COARSE clock sources may probably still require a syscall.
2021-08-10 21:51:05 +02:00
Andreas Kling
fdfc66db61
Kernel+LibC: Allow clock_gettime() to run without syscalls
...
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-10 19:21:16 +02:00
Andreas Kling
595ed59eb7
Kernel: Alphabetize the syscall list
2021-08-10 13:01:39 +02:00
Andreas Kling
fa64ab26a4
Kernel+UserspaceEmulator: Remove unused sys$gettimeofday()
...
Now that LibC uses clock_gettime() to implement gettimeofday(), we can
get rid of this entire syscall. :^)
2021-08-10 13:01:39 +02:00
Idan Horowitz
9d21c79671
Kernel: Disable big process lock for sys$sync
...
This syscall doesn't touch any intra-process shared resources and only
calls VirtualFileSystem::sync, which is self-locking.
2021-08-07 15:30:26 +02:00
Idan Horowitz
ad419a669d
Kernel: Disable big process lock for sys$sysconf
...
This syscall only reads constant kernel globals, and as such does not
need to hold the big lock.
2021-08-06 23:36:12 +02:00
Idan Horowitz
efeb01e35f
Kernel: Disable big process lock for sys$get_stack_bounds
...
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-06 23:36:12 +02:00
Idan Horowitz
d40038a04f
Kernel: Disable big process lock for sys$gettimeofday
...
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-06 23:36:12 +02:00
Idan Horowitz
3ba2449058
Kernel: Disable big process lock for sys$clock_nanosleep
...
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-06 23:36:12 +02:00
Idan Horowitz
fbd848e6eb
Kernel: Disable big process lock for sys$clock_gettime()
...
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-06 23:36:12 +02:00
Idan Horowitz
1a08694dfc
Kernel: Disable big process lock for sys$getkeymap
...
This syscall only reads non process-related global values, and as such
doesn't need to hold the big lock.
2021-08-06 23:36:12 +02:00
Idan Horowitz
48325e2959
Kernel: Disable big process lock for sys$getrandom
...
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-06 23:36:12 +02:00
Idan Horowitz
b1f4f6ee15
Kernel: Disable big process lock for sys$dbgputch
...
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-06 23:36:12 +02:00
Idan Horowitz
c7ad4c6c32
Kernel: Disable big process lock for sys$dbgputstr
...
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-06 23:36:12 +02:00
Idan Horowitz
00818b8447
Kernel: Disable big process lock for sys$dump_backtrace()
...
This syscall only dumps the current thread's backtrace and as such
doesn't touch any shared intra-process resources.
2021-08-06 23:36:12 +02:00
Idan Horowitz
da0b7d1737
Kernel: Disable big process lock for sys$beep()
...
The PCSpeaker is global and not locked anyways, so there's no need for
mutual exclusion between threads in the same process.
2021-08-06 23:36:12 +02:00
Andreas Kling
af46f2214c
Kernel: Make a bunch of "char const* to_string()" return StringView
2021-08-06 00:37:47 +02:00
Andreas Kling
deff554096
Kernel+LibSystem: Add a 4th syscall argument
...
Let's allow passing 4 function arguments to a syscall. The 4th argument
goes into ESI or RSI.
2021-07-25 14:08:50 +02:00
Brian Gianforcaro
8f01a8b741
Kernel: Disable big process lock for sys$yield()
2021-07-20 03:21:14 +02:00
Brian Gianforcaro
5c10fb4007
Kernel: Disable big process lock for sys$gettid()
...
This syscall reads a read only value from the current thread, and hence
has no need for the big process lock.
2021-07-20 03:21:14 +02:00
Brian Gianforcaro
638598b15d
Kernel: Disable big process lock for sys$getpid()
2021-07-20 03:21:14 +02:00