summaryrefslogtreecommitdiff
path: root/Kernel/Process.cpp
diff options
context:
space:
mode:
authorIdan Horowitz <idan.horowitz@gmail.com>2022-02-15 20:59:25 +0200
committerAndreas Kling <kling@serenityos.org>2022-02-16 22:21:37 +0100
commit316fa0c3f368ead4c1f7f671d7266818439aa484 (patch)
treed37b7b336064d55a9bfd5f9cecb54db87268d3fe /Kernel/Process.cpp
parent0218c62be4320c61e006c2b7c68deb1489171764 (diff)
downloadserenity-316fa0c3f368ead4c1f7f671d7266818439aa484.zip
AK+Kernel: Specialize Trie for NNOP<KString> and use it in UnveilNode
This let's us avoid the infallible String allocations.
Diffstat (limited to 'Kernel/Process.cpp')
-rw-r--r--Kernel/Process.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp
index fb30fea499..851d5df5bb 100644
--- a/Kernel/Process.cpp
+++ b/Kernel/Process.cpp
@@ -218,7 +218,8 @@ void Process::unprotect_data()
ErrorOr<NonnullRefPtr<Process>> Process::try_create(RefPtr<Thread>& first_thread, NonnullOwnPtr<KString> name, UserID uid, GroupID gid, ProcessID ppid, bool is_kernel_process, RefPtr<Custody> cwd, RefPtr<Custody> executable, TTY* tty, Process* fork_parent)
{
auto space = TRY(Memory::AddressSpace::try_create(fork_parent ? &fork_parent->address_space() : nullptr));
- auto process = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) Process(move(name), uid, gid, ppid, is_kernel_process, move(cwd), move(executable), tty, UnveilNode { "/"sv, UnveilMetadata(TRY(KString::try_create("/"sv))) })));
+ auto unveil_tree = UnveilNode { TRY(KString::try_create("/"sv)), UnveilMetadata(TRY(KString::try_create("/"sv))) };
+ auto process = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) Process(move(name), uid, gid, ppid, is_kernel_process, move(cwd), move(executable), tty, move(unveil_tree))));
TRY(process->attach_resources(move(space), first_thread, fork_parent));
return process;
}