1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:18:11 +00:00

UserspaceEmulator: Add support for shared buffers (shbuf)

We track these separately from regular mmap() regions, as they have
slightly different behaviors.
This commit is contained in:
Andreas Kling 2020-07-15 17:32:46 +02:00
parent 0ce4d3e942
commit 2da44dba44
7 changed files with 312 additions and 13 deletions

View file

@ -57,6 +57,13 @@ private:
void setup_stack(const Vector<String>& arguments);
int virt$shbuf_create(int size, FlatPtr buffer);
int virt$shbuf_allow_pid(int, pid_t peer_pid);
int virt$shbuf_allow_all(int);
FlatPtr virt$shbuf_get(int shbuf_id, FlatPtr size);
int virt$shbuf_release(int shbuf_id);
int virt$shbuf_seal(int shbuf_id);
int virt$shbuf_set_volatile(int shbuf_id, bool);
u32 virt$mmap(u32);
u32 virt$munmap(FlatPtr address, u32 size);
u32 virt$gettid();
@ -75,6 +82,7 @@ private:
int virt$mkdir(FlatPtr path, size_t path_length, mode_t mode);
int virt$unlink(FlatPtr path, size_t path_length);
int virt$get_process_name(FlatPtr buffer, int size);
int virt$set_mmap_name(FlatPtr);
int virt$dbgputstr(FlatPtr characters, int length);
int virt$dbgputch(char);
int virt$fchmod(int, mode_t);
@ -92,6 +100,8 @@ private:
int virt$connect(int sockfd, FlatPtr address, socklen_t address_size);
void virt$exit(int);
FlatPtr allocate_vm(size_t size, size_t alignment);
bool m_shutdown { false };
int m_exit_status { 0 };
};