mirror of
https://github.com/Fennix-Project/Kernel.git
synced 2025-07-11 07:19:20 +00:00
Updated types
This commit is contained in:
@ -5,6 +5,8 @@
|
||||
|
||||
#include "../kernel.h"
|
||||
|
||||
typedef __INT32_TYPE__ mode_t;
|
||||
|
||||
#define internal_unimpl(a, b, c, d, e, f, g) \
|
||||
{ \
|
||||
fixme("Unimplemented Syscall: %lld %lld %lld %lld %lld %lld %lld", a, b, c, d, e, f, g); \
|
||||
@ -15,31 +17,31 @@
|
||||
fixme("( %lld %lld %lld %lld %lld %lld %lld ) stub", a, b, c, d, e, f, g); \
|
||||
}
|
||||
|
||||
static uint64_t sys_read(unsigned int fd, char *buf, size_t count)
|
||||
static ssize_t sys_read(int fd, void *buf, size_t count)
|
||||
{
|
||||
fixme("read( %p %p %ld )", fd, buf, count);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static uint64_t sys_write(unsigned int fd, const char *buf, size_t count)
|
||||
static ssize_t sys_write(int fd, const char *buf, size_t count)
|
||||
{
|
||||
fixme("write( %p %p %ld )", fd, buf, count);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static uint64_t sys_open(const char *filename, int flags, unsigned short mode)
|
||||
static ssize_t sys_open(const char *filename, int flags, mode_t mode)
|
||||
{
|
||||
fixme("open( %s %d %d )", filename, flags, mode);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static uint64_t sys_close(unsigned int fd)
|
||||
static ssize_t sys_close(int fd)
|
||||
{
|
||||
fixme("close( %d )", fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static uint64_t sys_stat(const char *filename, void *statbuf)
|
||||
static ssize_t sys_stat(const char *filename, void *statbuf)
|
||||
{
|
||||
fixme("stat( %s %p )", filename, statbuf);
|
||||
return -1;
|
||||
|
@ -6,7 +6,7 @@
|
||||
#include "../syscalls.h"
|
||||
#include "../kernel.h"
|
||||
|
||||
static uint64_t sys_exit(SyscallsFrame *Frame, uint64_t code)
|
||||
static int sys_exit(SyscallsFrame *Frame, int code)
|
||||
{
|
||||
trace("Userspace thread %s(%lld) exited with code %#llx", TaskManager->GetCurrentThread()->Name, TaskManager->GetCurrentThread()->ID, code);
|
||||
TaskManager->GetCurrentThread()->ExitCode = code;
|
||||
@ -23,18 +23,18 @@ static int sys_print(SyscallsFrame *Frame, char Char, int Index)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static uint64_t sys_request_pages(SyscallsFrame *Frame, uint64_t Count)
|
||||
static uintptr_t sys_request_pages(SyscallsFrame *Frame, size_t Count)
|
||||
{
|
||||
return (uint64_t)TaskManager->GetCurrentThread()->Memory->RequestPages(Count);
|
||||
return (uintptr_t)TaskManager->GetCurrentThread()->Memory->RequestPages(Count);
|
||||
}
|
||||
|
||||
static uint64_t sys_free_pages(SyscallsFrame *Frame, uint64_t Address, uint64_t Count)
|
||||
static int sys_free_pages(SyscallsFrame *Frame, uintptr_t Address, size_t Count)
|
||||
{
|
||||
TaskManager->GetCurrentThread()->Memory->FreePages((void *)Address, Count);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint64_t sys_kernelctl(SyscallsFrame *Frame, uint64_t Command, uint64_t Arg1, uint64_t Arg2, uint64_t Arg3, uint64_t Arg4)
|
||||
static int sys_kernelctl(SyscallsFrame *Frame, int Command, uint64_t Arg1, uint64_t Arg2, uint64_t Arg3, uint64_t Arg4)
|
||||
{
|
||||
fixme("KernelCTL: %lld", Command);
|
||||
return 0;
|
||||
@ -50,7 +50,7 @@ static void *NativeSyscallsTable[] = {
|
||||
[_KernelCTL] = (void *)sys_kernelctl,
|
||||
};
|
||||
|
||||
uint64_t HandleNativeSyscalls(SyscallsFrame *Frame)
|
||||
uintptr_t HandleNativeSyscalls(SyscallsFrame *Frame)
|
||||
{
|
||||
#if defined(__amd64__)
|
||||
// debug("rax: %#llx, rbx: %#llx, rcx: %#llx, rdx: %#llx, rsi: %#llx, rdi: %#llx, rbp: %#llx, r8: %#llx, r9: %#llx, r10: %#llx, r11: %#llx, r12: %#llx, r13: %#llx, r14: %#llx, r15: %#llx", Frame->rax, Frame->rbx, Frame->rcx, Frame->rdx, Frame->rsi, Frame->rdi, Frame->rbp, Frame->r8, Frame->r9, Frame->r10, Frame->r11, Frame->r12, Frame->r13, Frame->r14, Frame->r15);
|
||||
@ -60,14 +60,14 @@ uint64_t HandleNativeSyscalls(SyscallsFrame *Frame)
|
||||
return -1;
|
||||
}
|
||||
|
||||
uint64_t (*call)(uint64_t, ...) = reinterpret_cast<uint64_t (*)(uint64_t, ...)>(NativeSyscallsTable[Frame->rax]);
|
||||
uintptr_t (*call)(uintptr_t, ...) = reinterpret_cast<uintptr_t (*)(uintptr_t, ...)>(NativeSyscallsTable[Frame->rax]);
|
||||
if (!call)
|
||||
{
|
||||
error("Syscall %#llx failed.", Frame->rax);
|
||||
return -1;
|
||||
}
|
||||
debug("[%#lx]->( %#lx %#lx %#lx %#lx %#lx %#lx )", Frame->rax, Frame->rdi, Frame->rsi, Frame->rdx, Frame->rcx, Frame->r8, Frame->r9);
|
||||
uint64_t ret = call((uint64_t)Frame, Frame->rdi, Frame->rsi, Frame->rdx, Frame->r10, Frame->r8, Frame->r9);
|
||||
uintptr_t ret = call((uintptr_t)Frame, Frame->rdi, Frame->rsi, Frame->rdx, Frame->r10, Frame->r8, Frame->r9);
|
||||
Frame->rax = ret;
|
||||
return ret;
|
||||
#elif defined(__i386__)
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include "../kernel.h"
|
||||
|
||||
extern "C" uint64_t SystemCallsHandler(SyscallsFrame *Frame)
|
||||
extern "C" uintptr_t SystemCallsHandler(SyscallsFrame *Frame)
|
||||
{
|
||||
#if defined(__amd64__)
|
||||
switch (TaskManager->GetCurrentThread()->Info.Compatibility)
|
||||
|
Reference in New Issue
Block a user