1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 18:18:12 +00:00
serenity/Userland/Libraries/LibC
Liav A 23a7ccf607 Kernel+LibCore+LibC: Split the mount syscall into multiple syscalls
This is a preparation before we can create a usable mechanism to use
filesystem-specific mount flags.
To keep some compatibility with userland code, LibC and LibCore mount
functions are kept being usable, but now instead of doing an "atomic"
syscall, they do multiple syscalls to perform the complete procedure of
mounting a filesystem.

The FileBackedFileSystem IntrusiveList in the VFS code is now changed to
be protected by a Mutex, because when we mount a new filesystem, we need
to check if a filesystem is already created for a given source_fd so we
do a scan for that OpenFileDescription in that list. If we fail to find
an already-created filesystem we create a new one and register it in the
list if we successfully mounted it. We use a Mutex because we might need
to initiate disk access during the filesystem creation, which will take
other mutexes in other parts of the kernel, therefore making it not
possible to take a spinlock while doing this.
2023-07-02 01:04:51 +02:00
..
arch LibC: Remove i686 support 2022-12-28 11:53:41 +01:00
arpa AK: Migrate IPv6Address::to_deprecated_string() to ::to_string() 2023-06-09 19:38:14 +01:00
bits LibC+LibRegex: Move regex_defs.h from LibC to LibRegex 2023-06-27 12:40:38 +02:00
net LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
netinet LibC: Add Ipv6 address checking macros to netinet/in.h 2023-04-29 08:55:16 -06:00
sys LibC: Add lutimes(2) and futimes(2) implementations 2023-06-06 15:55:42 +02:00
alloca.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
assert.cpp Kernel: Move process coredump metadata modification to the prctl syscall 2023-03-05 16:55:08 +01:00
assert.h Everywhere: Run clang-format 2022-12-03 23:52:23 +00:00
byteswap.h Everywhere: Fix order of includes and #pragma once 2022-09-18 18:30:05 -07:00
CMakeLists.txt Everywhere: Resolve conflicts with LibC and libc++ 2023-06-27 12:40:38 +02:00
complex.h LibC: Drop complex.cpp and move its definitions to complex.h 2023-06-27 12:40:38 +02:00
crt0.cpp LibC: Set up a dummy first stack frame in _start 2023-06-01 09:04:20 +02:00
crt0_shared.cpp Everywhere: Remove unused includes of LibC/stdlib.h 2023-01-02 20:27:20 -05:00
ctype.cpp LibC: Align _ctype_ to newlib's implementation 2022-06-30 12:34:16 +01:00
ctype.h LibC: Align _ctype_ to newlib's implementation 2022-06-30 12:34:16 +01:00
cxxabi.cpp Everywhere: Remove "LibC/" includes, add lint-rule against it 2023-01-07 10:01:37 -07:00
dirent.cpp Everywhere: Remove unused includes of AK/Format.h 2023-01-02 20:27:20 -05:00
dirent.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
dlfcn.cpp Userland: Fix wrong signature of dladdr 2023-05-05 02:19:05 +02:00
dlfcn.h Userland: Fix wrong signature of dladdr 2023-05-05 02:19:05 +02:00
elf.h LibC+LibELF: Move ELF definitions from LibC to LibELF 2023-06-27 12:40:38 +02:00
endian.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
errno.h LibC: Implement errno via a __errno_location() function 2022-04-21 11:49:48 +02:00
errno_codes.h LibC: Add missing macro definitions for errno codes 2022-05-08 13:04:32 -07:00
fcntl.cpp LibC: Properly implement the futimens function 2023-04-10 10:21:28 +02:00
fcntl.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
fd_set.h Kernel+LibC: Move the FD_SETSIZE declaration to API/POSIX/select.h file 2023-03-01 19:36:53 -07:00
fenv.cpp Everywhere: Use ARCH(AARCH64) instead of AK_ARCH_AARCH64 2023-04-14 19:15:19 +02:00
fenv.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
float.h LibC+LibDl: Declare functions taking no arguments as taking void 2022-01-08 19:22:00 +01:00
fnmatch.cpp Everywhere: Fix more Copyright header inconsistencies 2021-10-04 11:10:09 +01:00
fnmatch.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
getopt.cpp LibC: Correctly reset the getopt state on optind = 1 2023-03-12 22:09:09 +01:00
getopt.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
getsubopt.cpp Everywhere: Remove unused includes of LibC/stdlib.h 2023-01-02 20:27:20 -05:00
glob.cpp LibC: Add stubs for glob and globfree 2022-07-08 22:27:38 +00:00
glob.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
grp.cpp LibC: Ensure that struct group::gr_mem pointers are aligned 2023-05-28 05:05:09 -06:00
grp.h LibC: Implement getgrent_r 2022-11-25 23:13:16 +01:00
ifaddrs.cpp Everywhere: Remove "LibC/" includes, add lint-rule against it 2023-01-07 10:01:37 -07:00
ifaddrs.h Kernel+LibC: Stub out getifaddrs() and freeifaddrs() 2021-12-22 00:02:36 -08:00
inttypes.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
inttypes.h Kernel+Userland: Remove uses of the __i386__ compiler macro 2022-12-28 11:53:41 +01:00
ioctl.cpp LibC: Don't truncate arguments for ioctl() on x86_64 2021-07-22 04:18:39 +04:30
langinfo.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
langinfo.h Everywhere: Fix more Copyright header inconsistencies 2021-10-04 11:10:09 +01:00
libcinit.cpp LibC: Implement errno via a __errno_location() function 2022-04-21 11:49:48 +02:00
libgen.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
libgen.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
limits.h Kernel+Libraries: Don't include limits.h from LibELF/Validation.h 2023-01-21 10:43:59 -07:00
link.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
link.h Userland: Remove unecessary uses of __serenity__ macro 2022-10-10 12:23:12 +02:00
locale.cpp LibC: Allow detection of supported locales through setlocale 2022-09-29 09:02:17 -04:00
locale.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
malloc.cpp Kernel+Libraries: Move defines and types from sys/auxv.h to Kernel/API 2023-01-21 10:43:59 -07:00
mallocdefs.h LibC: Increase alignment for malloc() BigAllocationBlocks to 16 bytes 2022-03-02 11:40:37 +01:00
math.cpp Everywhere: Use ARCH(AARCH64) instead of AK_ARCH_AARCH64 2023-04-14 19:15:19 +02:00
math.h LibM: Move the math standard library to LibC 2022-09-16 16:09:19 +00:00
memory.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
mntent.cpp LibC: Remove TODO() macros to not break mc port 2022-01-13 18:46:22 +01:00
mntent.h LibC: Add mntent stub functions 2022-01-07 18:38:32 +01:00
net.cpp LibC: Implement if_indextoname and if_nametoindex 2023-04-14 12:29:03 +01:00
netdb.cpp LibIPC+LibC: Add and use a helper to encode/decoder container sizes 2023-01-04 20:13:54 +01:00
netdb.h LibC: Add herror() and hstrerror() 2022-05-12 15:01:32 +02:00
nl_types.h Everywhere: Fix more Copyright header inconsistencies 2021-10-04 11:10:09 +01:00
paths.h Ports: Add lowdown 1.0.2 2023-06-07 13:44:44 +02:00
poll.cpp LibC: Mark a bunch of functions as cancellation points 2022-07-22 10:07:15 -07:00
poll.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
priority.cpp LibC: Add getpriority() and setpriority() stubs 2021-09-23 18:51:21 +02:00
pthread.cpp Kernel+LibC: Implement pthread_create for AArch64 2023-04-23 14:30:59 +02:00
pthread.h LibC: Make 'attributes' parameter for pthread_create const 2022-10-24 15:49:39 +02:00
pthread_cond.cpp LibC: Mark a bunch of functions as cancellation points 2022-07-22 10:07:15 -07:00
pthread_integration.cpp Kernel: Clean up sys$futex and add support for cross-process futexes 2022-07-21 16:39:22 +02:00
pthread_once.cpp Kernel: Clean up sys$futex and add support for cross-process futexes 2022-07-21 16:39:22 +02:00
pthread_tls.cpp LibC: Remove a bunch of weak pthread_* symbols 2022-07-19 20:58:51 -07:00
pty.cpp Everywhere: Remove unused includes of AK/Format.h 2023-01-02 20:27:20 -05:00
pty.h LibC: Remove 'int* aslave' parameter from forkpty() 2021-05-06 13:52:46 +01:00
pwd.cpp Everywhere: Remove unused DeprecatedString includes 2023-04-09 22:00:54 +02:00
pwd.h LibC: Implement getpwent_r 2022-11-08 11:51:19 +01:00
qsort.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
regex.cpp LibC: Reduce reliance on the dlfcn internals for regex functions 2022-09-05 10:12:02 +01:00
regex.h LibC+LibRegex: Move regex_defs.h from LibC to LibRegex 2023-06-27 12:40:38 +02:00
resolv.cpp Everywhere: Fix more Copyright header inconsistencies 2021-10-04 11:10:09 +01:00
resolv.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
scanf.cpp Everywhere: Remove unused includes of AK/StdLibExtras.h 2023-01-02 20:27:20 -05:00
sched.cpp Kernel+LibC: Report correct scheduling priority limits 2022-10-27 11:30:19 +01:00
sched.h LibC: Remove duplicate definition of sched_param from sched.h 2022-10-27 11:30:19 +01:00
search.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
search.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
semaphore.cpp AK: Remove StringBuilder::build() in favor of to_deprecated_string() 2023-01-27 20:38:49 +00:00
semaphore.h LibPthread: Implement named semaphores 2022-07-21 16:39:22 +02:00
serenity.cpp Kernel+LibC: Implement readlinkat(2) 2022-12-11 19:55:37 -07:00
serenity.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
setjmp.h Kernel+Userland: Remove uses of the __i386__ compiler macro 2022-12-28 11:53:41 +01:00
shadow.cpp Everywhere: Remove unused includes of LibC/stdlib.h 2023-01-02 20:27:20 -05:00
shadow.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
signal.cpp LibC: Ignore signals that don't have a name in getsignalbyname() 2023-06-07 00:24:09 +02:00
signal.h Kernel+LibC: Move LibC/signal_numbers.h to Kernel/API/POSIX 2023-01-21 10:43:59 -07:00
spawn.cpp Everywhere: Remove unused includes of LibC/stdlib.h 2023-01-02 20:27:20 -05:00
spawn.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ssp.cpp LibELF: Add stack guard hardening 2022-11-29 11:04:21 +01:00
ssp_nonshared.cpp LibC: Properly implement stack protectors 2022-11-01 14:49:09 +00:00
stat.cpp LibC: Properly implement the futimens function 2023-04-10 10:21:28 +02:00
stdarg.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
stdint.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
stdio.cpp Everywhere: Remove "LibC/" includes, add lint-rule against it 2023-01-07 10:01:37 -07:00
stdio.h Kernel+LibC+LibCore: Implement renameat(2) 2022-12-11 19:55:37 -07:00
stdio_ext.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
stdlib.cpp LibC: Return EINVAL from unsetenv() if input is empty or contains "=" 2023-06-26 19:27:45 +02:00
stdlib.h LibC+LibCore: Remove serenity_setenv() 2023-02-05 16:40:51 +01:00
string.cpp LibC: Implement stpcpy 2023-06-11 08:47:15 +02:00
string.h Everywhere: Resolve conflicts with LibC and libc++ 2023-06-27 12:40:38 +02:00
strings.cpp LibC: Add ffs{,l,ll} 2022-10-14 13:37:29 +02:00
strings.h LibC: Add ffs{,l,ll} 2022-10-14 13:37:29 +02:00
stubs.cpp Everywhere: Run clang-format 2022-12-03 23:52:23 +00:00
sysexits.h LibC: Use EX_IOERR instead of EX_IOER 2021-06-10 20:21:08 +01:00
syslog.cpp AK: Remove StringBuilder::build() in favor of to_deprecated_string() 2023-01-27 20:38:49 +00:00
syslog.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
termcap.cpp AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
termcap.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
termios.cpp LibC: Mark a bunch of functions as cancellation points 2022-07-22 10:07:15 -07:00
termios.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
time.cpp LibC: Add lutimes(2) and futimes(2) implementations 2023-06-06 15:55:42 +02:00
time.h LibC: Remove duplicate declaration of clock_t and time_t 2023-01-21 10:43:59 -07:00
times.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
ucontext.h LibC: Add public and independent ucontext.h header 2022-06-12 00:28:26 +01:00
ulimit.cpp LibC: Add a wrapper for the getrusage syscall 2022-02-28 20:09:37 +01:00
ulimit.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
unistd.cpp Kernel+LibCore+LibC: Split the mount syscall into multiple syscalls 2023-07-02 01:04:51 +02:00
unistd.h Kernel+LibCore+LibC: Split the mount syscall into multiple syscalls 2023-07-02 01:04:51 +02:00
utime.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
utime.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
utmp.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
utsname.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
wchar.cpp LibC: Implement wcswidth 2022-06-30 11:57:49 +02:00
wchar.h Everywhere: Resolve conflicts with LibC and libc++ 2023-06-27 12:40:38 +02:00
wctype.cpp Everywhere: Remove unused includes of AK/Format.h 2023-01-02 20:27:20 -05:00
wctype.h LibC: Add missing sys/cdefs.h include 2022-08-23 19:07:12 +01:00
wstdio.cpp LibC: Automatically append null terminator in vswprintf 2022-03-20 08:40:36 -04:00