mirror of
https://github.com/RGBCube/serenity
synced 2025-07-17 05:17:35 +00:00
Kernel: Remove create_inode_watcher syscall from the big lock
This commit is contained in:
parent
cc558d95f0
commit
b26ecca970
2 changed files with 3 additions and 3 deletions
|
@ -59,7 +59,7 @@ enum class NeedsBigProcessLock {
|
||||||
S(clock_settime, NeedsBigProcessLock::No) \
|
S(clock_settime, NeedsBigProcessLock::No) \
|
||||||
S(close, NeedsBigProcessLock::No) \
|
S(close, NeedsBigProcessLock::No) \
|
||||||
S(connect, NeedsBigProcessLock::No) \
|
S(connect, NeedsBigProcessLock::No) \
|
||||||
S(create_inode_watcher, NeedsBigProcessLock::Yes) \
|
S(create_inode_watcher, NeedsBigProcessLock::No) \
|
||||||
S(create_thread, NeedsBigProcessLock::Yes) \
|
S(create_thread, NeedsBigProcessLock::Yes) \
|
||||||
S(dbgputstr, NeedsBigProcessLock::No) \
|
S(dbgputstr, NeedsBigProcessLock::No) \
|
||||||
S(detach_thread, NeedsBigProcessLock::Yes) \
|
S(detach_thread, NeedsBigProcessLock::Yes) \
|
||||||
|
|
|
@ -16,10 +16,9 @@ namespace Kernel {
|
||||||
|
|
||||||
ErrorOr<FlatPtr> Process::sys$create_inode_watcher(u32 flags)
|
ErrorOr<FlatPtr> Process::sys$create_inode_watcher(u32 flags)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
VERIFY_NO_PROCESS_BIG_LOCK(this);
|
||||||
TRY(require_promise(Pledge::rpath));
|
TRY(require_promise(Pledge::rpath));
|
||||||
|
|
||||||
auto fd_allocation = TRY(allocate_fd());
|
|
||||||
auto watcher = TRY(InodeWatcher::try_create());
|
auto watcher = TRY(InodeWatcher::try_create());
|
||||||
auto description = TRY(OpenFileDescription::try_create(move(watcher)));
|
auto description = TRY(OpenFileDescription::try_create(move(watcher)));
|
||||||
|
|
||||||
|
@ -28,6 +27,7 @@ ErrorOr<FlatPtr> Process::sys$create_inode_watcher(u32 flags)
|
||||||
description->set_blocking(false);
|
description->set_blocking(false);
|
||||||
|
|
||||||
return m_fds.with_exclusive([&](auto& fds) -> ErrorOr<FlatPtr> {
|
return m_fds.with_exclusive([&](auto& fds) -> ErrorOr<FlatPtr> {
|
||||||
|
auto fd_allocation = TRY(fds.allocate());
|
||||||
fds[fd_allocation.fd].set(move(description));
|
fds[fd_allocation.fd].set(move(description));
|
||||||
|
|
||||||
if (flags & static_cast<unsigned>(InodeWatcherFlags::CloseOnExec))
|
if (flags & static_cast<unsigned>(InodeWatcherFlags::CloseOnExec))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue