1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 13:47:35 +00:00

LibGUI+Kernel: Add a GLock class (userspace mutex.)

It's basically a userspace port of the kernel's Lock class.
Added gettid() and donate() syscalls to support the timeslice donation
feature we already enjoyed in the kernel.
This commit is contained in:
Andreas Kling 2019-03-25 13:03:49 +01:00
parent 108b663618
commit 500df578fe
10 changed files with 176 additions and 12 deletions

View file

@ -70,4 +70,5 @@
#define ETIMEDOUT 67
#define EPROTOTYPE 68
#define EINPROGRESS 69
#define EMAXERRNO 70
#define ENOTHREAD 70
#define EMAXERRNO 71

View file

@ -312,6 +312,7 @@ const char* sys_errlist[] = {
"Timed out",
"Wrong protocol type",
"Operation in progress",
"No such thread",
"The highest errno +1 :^)",
};

View file

@ -421,4 +421,16 @@ int ftruncate(int fd, off_t length)
ASSERT_NOT_REACHED();
}
int gettid()
{
int rc = syscall(SC_gettid);
__RETURN_WITH_ERRNO(rc, rc, -1);
}
int donate(int tid)
{
int rc = syscall(SC_donate, tid);
__RETURN_WITH_ERRNO(rc, rc, -1);
}
}

View file

@ -14,6 +14,8 @@ __BEGIN_DECLS
extern char** environ;
int gettid();
int donate(int tid);
int create_thread(int(*)(void*), void*);
int create_shared_buffer(pid_t peer_pid, int, void** buffer);
void* get_shared_buffer(int shared_buffer_id);