From 72bb57b097ee3ad45a2a211f658a0f8c5f9b2e1e Mon Sep 17 00:00:00 2001 From: nakst <> Date: Mon, 15 Nov 2021 21:42:43 +0000 Subject: [PATCH] cleanup --- kernel/objects.cpp | 14 +++++--------- kernel/posix.cpp | 4 ++-- kernel/syscall.cpp | 32 ++++++++++++++++---------------- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/kernel/objects.cpp b/kernel/objects.cpp index 3930f19..41fa53b 100644 --- a/kernel/objects.cpp +++ b/kernel/objects.cpp @@ -6,10 +6,6 @@ #ifndef IMPLEMENTATION -inline KernelObjectType operator|(KernelObjectType a, KernelObjectType b) { - return (KernelObjectType) ((int) a | (int) b); -} - struct Handle { void *object; uint32_t flags; @@ -365,8 +361,8 @@ void CloseHandleToObject(void *object, KernelObjectType type, uint32_t flags) { } uintptr_t HandleShare(Handle share, Process *process, uint32_t mode, EsHandle at = ES_INVALID_HANDLE) { -#define HANDLE_SHARE_TYPE_MASK (KERNEL_OBJECT_SHMEM | KERNEL_OBJECT_CONSTANT_BUFFER | KERNEL_OBJECT_PROCESS \ - | KERNEL_OBJECT_DEVICE | KERNEL_OBJECT_NODE | KERNEL_OBJECT_EVENT | KERNEL_OBJECT_PIPE) +#define HANDLE_SHARE_TYPE_MASK ((KernelObjectType) (KERNEL_OBJECT_SHMEM | KERNEL_OBJECT_CONSTANT_BUFFER | KERNEL_OBJECT_PROCESS \ + | KERNEL_OBJECT_DEVICE | KERNEL_OBJECT_NODE | KERNEL_OBJECT_EVENT | KERNEL_OBJECT_PIPE)) if ((share.type & HANDLE_SHARE_TYPE_MASK) == 0) { KernelPanic("HandleShare - Invalid object type %x; allowed types are %x.\n", share.type, HANDLE_SHARE_TYPE_MASK); @@ -559,7 +555,7 @@ void HandleTable::Destroy() { } } -ConstantBuffer *MakeConstantBuffer(K_USER_BUFFER const void *data, size_t bytes) { +ConstantBuffer *ConstantBufferCreate(K_USER_BUFFER const void *data, size_t bytes) { ConstantBuffer *buffer = (ConstantBuffer *) EsHeapAllocate(sizeof(ConstantBuffer) + bytes, false, K_FIXED); if (!buffer) return nullptr; EsMemoryZero(buffer, sizeof(ConstantBuffer)); @@ -569,8 +565,8 @@ ConstantBuffer *MakeConstantBuffer(K_USER_BUFFER const void *data, size_t bytes) return buffer; } -EsHandle MakeConstantBuffer(K_USER_BUFFER const void *data, size_t bytes, Process *process) { - void *object = MakeConstantBuffer(data, bytes); +EsHandle ConstantBufferCreate(K_USER_BUFFER const void *data, size_t bytes, Process *process) { + void *object = ConstantBufferCreate(data, bytes); return object ? process->handleTable.OpenHandle(object, 0, KERNEL_OBJECT_CONSTANT_BUFFER) : ES_INVALID_HANDLE; } diff --git a/kernel/posix.cpp b/kernel/posix.cpp index 5d8d713..4804b30 100644 --- a/kernel/posix.cpp +++ b/kernel/posix.cpp @@ -506,7 +506,7 @@ namespace POSIX { EsMemoryCopy(path, (void *) syscall.arguments[0], syscall.arguments[1]); Process *process = currentThread->posixData->forkProcess; - process->data.environment = MakeConstantBuffer((void *) syscall.arguments[2], syscall.arguments[3], process); + process->data.environment = ConstantBufferCreate((void *) syscall.arguments[2], syscall.arguments[3], process); process->posixForking = true; process->permissions = currentProcess->permissions; @@ -514,7 +514,7 @@ namespace POSIX { OpenHandleToObject((void *) syscall.arguments[4], KERNEL_OBJECT_NODE, _ES_NODE_DIRECTORY_WRITE); mountPoint.base = process->handleTable.OpenHandle((void *) syscall.arguments[4], _ES_NODE_DIRECTORY_WRITE, KERNEL_OBJECT_NODE); mountPoint.prefixBytes = EsStringFormat(mountPoint.prefix, sizeof(mountPoint.prefix), "|POSIX:"); - process->data.initialMountPoints = MakeConstantBuffer(&mountPoint, sizeof(EsMountPoint), process); + process->data.initialMountPoints = ConstantBufferCreate(&mountPoint, sizeof(EsMountPoint), process); // Start the process. diff --git a/kernel/syscall.cpp b/kernel/syscall.cpp index 9ca77c9..9d47d5f 100644 --- a/kernel/syscall.cpp +++ b/kernel/syscall.cpp @@ -285,7 +285,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_WINDOW_CREATE) { } SYSCALL_IMPLEMENT(ES_SYSCALL_WINDOW_CLOSE) { - SYSCALL_HANDLE_2(argument0, KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW, _window); + SYSCALL_HANDLE_2(argument0, (KernelObjectType) (KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW), _window); KMutexAcquire(&windowManager.mutex); if (_window.type == KERNEL_OBJECT_EMBEDDED_WINDOW) { @@ -331,7 +331,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_WINDOW_SET_PROPERTY) { } else if (property == ES_WINDOW_PROPERTY_MATERIAL) { window->material = argument1; } else if (property == ES_WINDOW_PROPERTY_EMBED) { - SYSCALL_HANDLE(argument1, KERNEL_OBJECT_EMBEDDED_WINDOW | KERNEL_OBJECT_NONE, embed, EmbeddedWindow); + SYSCALL_HANDLE(argument1, (KernelObjectType) (KERNEL_OBJECT_EMBEDDED_WINDOW | KERNEL_OBJECT_NONE), embed, EmbeddedWindow); KMutexAcquire(&windowManager.mutex); window->SetEmbed(embed); KMutexRelease(&windowManager.mutex); @@ -375,7 +375,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_WINDOW_REDRAW) { } SYSCALL_IMPLEMENT(ES_SYSCALL_WINDOW_SET_BITS) { - SYSCALL_HANDLE_2(argument0, KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW, _window); + SYSCALL_HANDLE_2(argument0, (KernelObjectType) (KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW), _window); EsRectangle region; SYSCALL_READ(®ion, argument1, sizeof(EsRectangle)); @@ -552,7 +552,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_MEMORY_OPEN) { } SYSCALL_IMPLEMENT(ES_SYSCALL_MEMORY_MAP_OBJECT) { - SYSCALL_HANDLE_2(argument0, KERNEL_OBJECT_SHMEM | KERNEL_OBJECT_NODE, object); + SYSCALL_HANDLE_2(argument0, (KernelObjectType) (KERNEL_OBJECT_SHMEM | KERNEL_OBJECT_NODE), object); if (object.type == KERNEL_OBJECT_SHMEM) { // TODO Access permissions and modes. @@ -597,9 +597,9 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_CONSTANT_BUFFER_CREATE) { if (argument2) { SYSCALL_BUFFER(argument0, argument2, 1, false); - SYSCALL_RETURN(MakeConstantBuffer((void *) argument0, argument2, process), false); + SYSCALL_RETURN(ConstantBufferCreate((void *) argument0, argument2, process), false); } else { - SYSCALL_RETURN(MakeConstantBuffer(nullptr, 0, process), false); + SYSCALL_RETURN(ConstantBufferCreate(nullptr, 0, process), false); } } @@ -707,7 +707,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_NODE_DELETE) { SYSCALL_IMPLEMENT(ES_SYSCALL_NODE_MOVE) { SYSCALL_HANDLE(argument0, KERNEL_OBJECT_NODE, file, KNode); - SYSCALL_HANDLE(argument1, KERNEL_OBJECT_NODE | KERNEL_OBJECT_NONE, directory, KNode); + SYSCALL_HANDLE(argument1, KernelObjectType(KERNEL_OBJECT_NODE | KERNEL_OBJECT_NONE), directory, KNode); char *newPath; if (argument3 > SYSCALL_BUFFER_LIMIT) SYSCALL_RETURN(ES_FATAL_ERROR_INVALID_BUFFER, true); SYSCALL_READ_HEAP(newPath, argument2, argument3); @@ -807,7 +807,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_WAIT) { SYSCALL_READ(handles, argument0, argument1 * sizeof(EsHandle)); for (uintptr_t i = 0; i < argument1; i++) { - KernelObjectType typeMask = KERNEL_OBJECT_PROCESS | KERNEL_OBJECT_THREAD | KERNEL_OBJECT_EVENT; + KernelObjectType typeMask = (KernelObjectType) (KERNEL_OBJECT_PROCESS | KERNEL_OBJECT_THREAD | KERNEL_OBJECT_EVENT); status[i] = currentProcess->handleTable.ResolveHandle(&_objects[i], handles[i], typeMask); if (status[i] == RESOLVE_HANDLE_FAILED) { @@ -872,7 +872,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_WAIT) { } SYSCALL_IMPLEMENT(ES_SYSCALL_WINDOW_SET_CURSOR) { - SYSCALL_HANDLE_2(argument0, KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW, _window); + SYSCALL_HANDLE_2(argument0, (KernelObjectType) (KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW), _window); uint32_t imageWidth = (argument2 >> 16) & 0xFF; uint32_t imageHeight = (argument2 >> 24) & 0xFF; @@ -1048,7 +1048,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_GAME_CONTROLLER_STATE_POLL) { } SYSCALL_IMPLEMENT(ES_SYSCALL_WINDOW_GET_BOUNDS) { - SYSCALL_HANDLE_2(argument0, KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW, _window); + SYSCALL_HANDLE_2(argument0, (KernelObjectType) (KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW), _window); EsRectangle rectangle; EsMemoryZero(&rectangle, sizeof(EsRectangle)); @@ -1103,7 +1103,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_MESSAGE_POST) { } SYSCALL_IMPLEMENT(ES_SYSCALL_THREAD_GET_ID) { - SYSCALL_HANDLE_2(argument0, KERNEL_OBJECT_THREAD | KERNEL_OBJECT_PROCESS, object); + SYSCALL_HANDLE_2(argument0, (KernelObjectType) (KERNEL_OBJECT_THREAD | KERNEL_OBJECT_PROCESS), object); if (object.type == KERNEL_OBJECT_THREAD) { SYSCALL_WRITE(argument1, &((Thread *) object.object)->id, sizeof(EsObjectID)); @@ -1226,7 +1226,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_SHUTDOWN) { } SYSCALL_IMPLEMENT(ES_SYSCALL_WINDOW_GET_ID) { - SYSCALL_HANDLE_2(argument0, KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW, _window); + SYSCALL_HANDLE_2(argument0, (KernelObjectType) (KERNEL_OBJECT_WINDOW | KERNEL_OBJECT_EMBEDDED_WINDOW), _window); if (_window.type == KERNEL_OBJECT_WINDOW) { SYSCALL_RETURN(((Window *) _window.object)->id, false); @@ -1290,7 +1290,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_SYSTEM_TAKE_SNAPSHOT) { } SYSCALL_WRITE(argument1, &bufferSize, sizeof(size_t)); - SYSCALL_RETURN(MakeConstantBuffer(buffer, bufferSize, currentProcess), false); + SYSCALL_RETURN(ConstantBufferCreate(buffer, bufferSize, currentProcess), false); } SYSCALL_IMPLEMENT(ES_SYSCALL_PROCESSOR_COUNT) { @@ -1351,8 +1351,8 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_MESSAGE_DESKTOP) { if (argument1 > DESKTOP_MESSAGE_SIZE_LIMIT) SYSCALL_RETURN(ES_ERROR_INSUFFICIENT_RESOURCES, false); SYSCALL_READ_HEAP(buffer, argument0, argument1); - SYSCALL_HANDLE_2(argument2, KERNEL_OBJECT_EMBEDDED_WINDOW | KERNEL_OBJECT_NONE, _window); - SYSCALL_HANDLE_2(argument3, KERNEL_OBJECT_PIPE | KERNEL_OBJECT_NONE, _pipe); + SYSCALL_HANDLE_2(argument2, (KernelObjectType) (KERNEL_OBJECT_EMBEDDED_WINDOW | KERNEL_OBJECT_NONE), _window); + SYSCALL_HANDLE_2(argument3, (KernelObjectType) (KERNEL_OBJECT_PIPE | KERNEL_OBJECT_NONE), _pipe); EmbeddedWindow *window = (EmbeddedWindow *) _window.object; Pipe *pipe = (Pipe *) _pipe.object; @@ -1366,7 +1366,7 @@ SYSCALL_IMPLEMENT(ES_SYSCALL_MESSAGE_DESKTOP) { OpenHandleToObject(pipe, KERNEL_OBJECT_PIPE, PIPE_WRITER); } - void *constantBuffer = MakeConstantBuffer(buffer, argument1); + void *constantBuffer = ConstantBufferCreate(buffer, argument1); _EsMessageWithObject m = {}; m.message.type = ES_MSG_DESKTOP;