Liav A
4f04cb98c1
Kernel/VFS: Silence mknod debug spam
...
Since we populate the DevFS now in userspace, this creates a bunch of
unnecessary noise in the kernel log.
2021-09-08 00:42:20 +02:00
Liav A
e0d712c6f7
Kernel+SystemServer: Defer creation of device nodes to userspace
...
Don't create these device nodes in the Kernel, so we essentially enforce
userspace (SystemServer) to take control of this operation and to decide
how to create these device nodes.
This makes the DevFS to resemble linux devtmpfs, and allows us to remove
a bunch of unneeded overriding implementations of device name creation
in the Kernel.
2021-09-08 00:42:20 +02:00
Liav A
fcc046047f
Kernel/DevFS: Simplify nodes insertion and lookup
...
Use IntrusiveList instead of a Vector to add inodes to a directory.
2021-09-08 00:42:20 +02:00
Andreas Kling
049d846eb9
Kernel/TmpFS: Stop leaking directory entry metadata
...
When creating and removing a child to a TmpFS directory, we were
forgetting to delete the TmpFSInode::Child struct.
2021-09-07 22:16:25 +02:00
Andreas Kling
ec4b814c9a
Kernel: Use OOM-safe absolute path serialization in InodeFile::mmap()
...
Switch from OpenFileDescription::absolute_path() to the OOM-safe
try_serialize_absolute_path() (and propagate any errors to the caller.)
2021-09-07 22:16:25 +02:00
Andreas Kling
300402cc14
Kernel: Make it possible for KBufferBuilder creation to fail
...
This patch adds KBufferBuilder::try_create() and treats it like anything
else that can fail. And so, failure to allocate the initial internal
buffer of the builder will now propagate an ENOMEM to the caller. :^)
2021-09-07 15:54:23 +02:00
Andreas Kling
899cee8185
Kernel: Make KBuffer::try_create_with_size() return KResultOr
...
This allows us to use TRY() in a lot of new places.
2021-09-07 15:15:08 +02:00
Andreas Kling
ed5d04b0ea
Kernel: Use KResultOr and TRY() for FIFO
2021-09-07 13:58:16 +02:00
Andreas Kling
01993d0af3
Kernel: Make DoubleBuffer::try() return KResultOr
...
This tidies up error propagation in a number of places.
2021-09-07 13:53:14 +02:00
Andreas Kling
4a9c18afb9
Kernel: Rename FileDescription => OpenFileDescription
...
Dr. POSIX really calls these "open file description", not just
"file description", so let's call them exactly that. :^)
2021-09-07 13:53:14 +02:00
Andreas Kling
cae20d2aa9
Kernel: Add FileDescription::try_serialize_absolute_path()
...
Unlike FileDescription::absolute_path(), this knows that failures can
happen and will propagate them to the caller.
2021-09-07 13:53:14 +02:00
Andreas Kling
6ad427993a
Everywhere: Behaviour => Behavior
2021-09-07 13:53:14 +02:00
Andreas Kling
55b0b06897
Kernel: Store process names as KString
2021-09-07 13:53:14 +02:00
Andreas Kling
b481132418
Kernel: Make UserOrKernelBuffer return KResult from read/write/memset
...
This allows us to simplify a whole bunch of call sites with TRY(). :^)
2021-09-07 13:53:14 +02:00
Andreas Kling
0d44cdb7a2
Kernel: Wrap two VirtualFileSystem directory traversals in TRY()
2021-09-06 20:30:18 +02:00
Andreas Kling
1101994fad
Kernel: Wrap ISO9660FS directory traversal in TRY()
2021-09-06 20:28:40 +02:00
Andreas Kling
704a2bfad5
Kernel: Use TRY() in TmpFSInode::write_bytes()
2021-09-06 20:24:38 +02:00
Andreas Kling
56a2594de7
Kernel: Make KString factories return KResultOr + use TRY() everywhere
...
There are a number of places that don't have an error propagation path
right now, so I've added FIXME's about that.
2021-09-06 19:25:36 +02:00
Andreas Kling
2065ced8f6
Kernel: Make KBufferBuilder::append() & friends return KResult
...
This allows callers to react to a failed append (due to OOM.)
2021-09-06 18:56:51 +02:00
Andreas Kling
6e3381ac32
Kernel: Use KResultOr and TRY() for {Shared,Private}InodeVMObject
2021-09-06 13:06:05 +02:00
Andreas Kling
cda2b9e71c
Kernel: Improvements to Custody absolute path serialization
...
- Renamed try_create_absolute_path() => try_serialize_absolute_path()
- Use KResultOr and TRY() to propagate errors
- Don't call this when it's only for debug logging
2021-09-06 13:06:05 +02:00
Andreas Kling
b083b165a7
Kernel/Ext2FS: Wrap calls to traverse_as_directory() in TRY()
...
Nothing says we can't TRY() a multi-line function call. :^)
2021-09-06 13:06:05 +02:00
Andreas Kling
18dbafec85
Kernel: Use TRY() more in Plan9FS
2021-09-06 13:06:05 +02:00
Andreas Kling
d34f2b643e
Kernel: Tidy up Plan9FS construction a bit
2021-09-06 13:06:05 +02:00
Andreas Kling
36725228fa
Kernel: Tidy up Ext2FS construction a bit
2021-09-06 13:06:05 +02:00
Andreas Kling
47bfbe343b
Kernel: Tidy up SysFS construction
...
- Use KResultOr and TRY() to propagate errors
- Check for OOM errors
- Move allocation out of constructors
There's still a lot more to do here, as SysFS is still quite brittle
in the face of memory pressure.
2021-09-06 13:06:05 +02:00
Andreas Kling
788b91a65c
Kernel: Tidy up DevFS construction and handle OOM errorso
...
- Use KResultOr and TRY() to propagate errors
- Check for OOM
- Move allocations out of the DevFS constructor
2021-09-06 13:06:05 +02:00
Andreas Kling
efe4e230ee
Kernel: Tidy up DevPtsFS construction and handle OOM errors
...
- Use KResultOr and TRY() to propagate errors
- Check for OOM when creating new inodes
2021-09-06 13:06:05 +02:00
Andreas Kling
a8516681b7
Kernel: Tidy up TmpFS and TmpFSInode construction
...
- Use KResultOr<NonnullRefPtr<T>>
- Propagate errors
- Use TRY() at call sites
2021-09-06 02:36:21 +02:00
Andreas Kling
7a8061ba0c
Kernel: Use TRY() in ISO9660FileSystem
2021-09-06 02:06:49 +02:00
Andreas Kling
540d62d3b2
Kernel: Simplify WatchDescription::create()
2021-09-06 01:55:27 +02:00
Andreas Kling
8ceff65161
Kernel: Use TRY() some more in FileDescription
2021-09-06 01:55:27 +02:00
Andreas Kling
5516592748
Kernel: Use TRY() in BlockBasedFileSystem
2021-09-06 01:55:27 +02:00
Ali Mohammad Pur
97e97bccab
Everywhere: Make ByteBuffer::{create_*,copy}() OOM-safe
2021-09-06 01:53:26 +02:00
Brian Gianforcaro
bb58a4d943
Kernel: Make all Spinlocks use u8 for storage, remove template
...
The default template argument is only used in one place, and it
looks like it was probably just an oversight. The rest of the Kernel
code all uses u8 as the type. So lets make that the default and remove
the unused template argument, as there doesn't seem to be a reason to
allow the size to be customizable.
2021-09-05 20:46:02 +02:00
Andreas Kling
100b3835f0
Kernel: Use TRY() in DevFSLinkInode::write_bytes()
2021-09-05 19:02:57 +02:00
Andreas Kling
667a39df6b
Kernel: Use TRY() in ProcFS
2021-09-05 19:01:38 +02:00
Andreas Kling
caaeae9607
Kernel: Make FileSystem::get_inode() return KResultOr<NRP<Inode>>
...
This allows for natural error propagation in a bunch of new places.
2021-09-05 18:55:55 +02:00
Andreas Kling
48a0b31c47
Kernel: Make copy_{from,to}_user() return KResult and use TRY()
...
This makes EFAULT propagation flow much more naturally. :^)
2021-09-05 17:38:37 +02:00
Andreas Kling
abb43468dc
Kernel: Use TRY() in FileDescription::attach()
2021-09-05 16:25:40 +02:00
Andreas Kling
b2950c67ea
Kernel: Use TRY() in Inode
2021-09-05 16:25:40 +02:00
Andreas Kling
c1c774da91
Kernel: Use TRY() in FIFO
2021-09-05 16:25:40 +02:00
Andreas Kling
cad78f5904
Kernel: Use TRY() in InodeFile
2021-09-05 16:25:40 +02:00
Andreas Kling
865eb54f75
Kernel/Ext2FS: Use TRY() in the Ext2FS
...
This class was just *full* of great opportunities for TRY(). :^)
2021-09-05 15:30:15 +02:00
Andreas Kling
0cf65cf7ec
Kernel: Use TRY() even more in VirtualFileSystem
...
Allowing TRY() with KResult unlocked a whole lot more opportunities.
2021-09-05 14:55:51 +02:00
Andreas Kling
71187d865e
Kernel: Tidy up VirtualFileSystem::mount_root() a little bit
...
- Return KResult instead of bool
- Use TRY()
2021-09-05 14:46:44 +02:00
Andreas Kling
b0f2acbd91
Kernel: Use TRY() in FileDescription
2021-09-05 14:43:51 +02:00
Andreas Kling
4012099338
Kernel: Tidy up AnonymousFile construction a bit
...
- Rename create() => try_create()
- Use adopt_nonnull_ref_or_enomem()
2021-09-05 14:33:25 +02:00
Andreas Kling
a5e71debef
Kernel: Use TRY() in VirtualFileSystem
2021-09-05 14:08:12 +02:00
sin-ack
566c5d1e99
AK+Kernel: Move KResult.h to Kernel/API for userspace access
...
This commit moves the KResult and KResultOr objects to Kernel/API to
signify that they may now be freely used by userspace code at points
where a syscall-related error result is to be expected. It also exposes
KResult and KResultOr to the global namespace to make it nicer to use
for userspace code.
2021-09-05 12:54:48 +02:00