mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-25 05:55:13 +00:00
Kernel+LibC: Add stubs for POSIX shared memory API.
Specifically shm_open() and shm_unlink(). This patch just adds stubs.
This commit is contained in:
parent
7f2eeb0b35
commit
99f3cc26c3
Notes:
sideshowbarker
2024-07-19 14:47:25 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/99f3cc26c3e
6 changed files with 36 additions and 0 deletions
|
@ -2454,3 +2454,17 @@ int Process::sys$rename(const char* oldpath, const char* newpath)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
return VFS::the().rename(String(oldpath), String(newpath), cwd_inode());
|
return VFS::the().rename(String(oldpath), String(newpath), cwd_inode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Process::sys$shm_open(const char* name, int flags, mode_t mode)
|
||||||
|
{
|
||||||
|
if (!validate_read_str(name))
|
||||||
|
return -EFAULT;
|
||||||
|
return -ENOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Process::sys$shm_unlink(const char* name)
|
||||||
|
{
|
||||||
|
if (!validate_read_str(name))
|
||||||
|
return -EFAULT;
|
||||||
|
return -ENOTIMPL;
|
||||||
|
}
|
||||||
|
|
|
@ -99,6 +99,8 @@ public:
|
||||||
|
|
||||||
int sys$gettid();
|
int sys$gettid();
|
||||||
int sys$donate(int tid);
|
int sys$donate(int tid);
|
||||||
|
int sys$shm_open(const char* name, int flags, mode_t);
|
||||||
|
int sys$shm_unlink(const char* name);
|
||||||
pid_t sys$setsid();
|
pid_t sys$setsid();
|
||||||
pid_t sys$getsid(pid_t);
|
pid_t sys$getsid(pid_t);
|
||||||
int sys$setpgid(pid_t pid, pid_t pgid);
|
int sys$setpgid(pid_t pid, pid_t pgid);
|
||||||
|
|
|
@ -243,6 +243,10 @@ static dword handle(RegisterDump& regs, dword function, dword arg1, dword arg2,
|
||||||
return current->process().sys$create_thread((int(*)(void*))arg1, (void*)arg2);
|
return current->process().sys$create_thread((int(*)(void*))arg1, (void*)arg2);
|
||||||
case Syscall::SC_rename:
|
case Syscall::SC_rename:
|
||||||
return current->process().sys$rename((const char*)arg1, (const char*)arg2);
|
return current->process().sys$rename((const char*)arg1, (const char*)arg2);
|
||||||
|
case Syscall::SC_shm_open:
|
||||||
|
return current->process().sys$shm_open((const char*)arg1, (int)arg2, (mode_t)arg3);
|
||||||
|
case Syscall::SC_shm_close:
|
||||||
|
return current->process().sys$shm_unlink((const char*)arg1);
|
||||||
default:
|
default:
|
||||||
kprintf("<%u> int0x82: Unknown function %u requested {%x, %x, %x}\n", current->process().pid(), function, arg1, arg2, arg3);
|
kprintf("<%u> int0x82: Unknown function %u requested {%x, %x, %x}\n", current->process().pid(), function, arg1, arg2, arg3);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -96,6 +96,8 @@
|
||||||
__ENUMERATE_SYSCALL(gettid) \
|
__ENUMERATE_SYSCALL(gettid) \
|
||||||
__ENUMERATE_SYSCALL(donate) \
|
__ENUMERATE_SYSCALL(donate) \
|
||||||
__ENUMERATE_SYSCALL(rename) \
|
__ENUMERATE_SYSCALL(rename) \
|
||||||
|
__ENUMERATE_SYSCALL(shm_open) \
|
||||||
|
__ENUMERATE_SYSCALL(shm_close) \
|
||||||
|
|
||||||
|
|
||||||
namespace Syscall {
|
namespace Syscall {
|
||||||
|
|
|
@ -28,4 +28,16 @@ int set_mmap_name(void* addr, size_t size, const char* name)
|
||||||
__RETURN_WITH_ERRNO(rc, rc, -1);
|
__RETURN_WITH_ERRNO(rc, rc, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int shm_open(const char* name, int flags, mode_t mode)
|
||||||
|
{
|
||||||
|
int rc = syscall(SC_shm_open, name, flags, mode);
|
||||||
|
__RETURN_WITH_ERRNO(rc, rc, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int shm_unlink(const char* name)
|
||||||
|
{
|
||||||
|
int rc = syscall(SC_unlink, name);
|
||||||
|
__RETURN_WITH_ERRNO(rc, rc, -1);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@ __BEGIN_DECLS
|
||||||
void* mmap(void* addr, size_t, int prot, int flags, int fd, off_t);
|
void* mmap(void* addr, size_t, int prot, int flags, int fd, off_t);
|
||||||
int munmap(void*, size_t);
|
int munmap(void*, size_t);
|
||||||
int set_mmap_name(void*, size_t, const char*);
|
int set_mmap_name(void*, size_t, const char*);
|
||||||
|
int shm_open(const char* name, int flags, mode_t);
|
||||||
|
int shm_unlink(const char* name);
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue