Update userspace

This commit is contained in:
Alex
2023-10-09 01:25:55 +03:00
parent 883d2e3481
commit 17787dbc9b
17 changed files with 111 additions and 196 deletions

View File

@@ -17,7 +17,7 @@ PUBLIC void _exit(int Code)
{
__libc_fini_std();
__libc_fini_array();
syscall1(sys_Exit, (long)Code);
syscall1(sc_exit, (long)Code);
while (1)
;
}

View File

@@ -17,10 +17,14 @@ extern "C" int liballoc_unlock()
extern "C" void *liballoc_alloc(size_t Pages)
{
return (void *)syscall1(sys_RequestPages, Pages);
return (void *)syscall6(sc_mmap, NULL,
Pages * 0x1000,
sc_PROT_READ | sc_PROT_WRITE,
sc_MAP_ANONYMOUS | sc_MAP_PRIVATE,
-1, 0);
}
extern "C" int liballoc_free(void *Address, size_t Pages)
{
return syscall2(sys_FreePages, (uint64_t)Address, Pages);
return syscall2(sc_munmap, (uintptr_t)Address, Pages * 0x1000);
}

View File

@@ -18,7 +18,7 @@ PUBLIC FILE *freopen(const char *filename, const char *mode, FILE *stream)
PUBLIC FILE *fopen(const char *filename, const char *mode)
{
int fd = syscall2(sys_FileOpen, (uint64_t)filename, (uint64_t)mode);
int fd = syscall2(sc_open, (uint64_t)filename, (uint64_t)mode);
if (fd < 0)
return NULL;
@@ -35,8 +35,8 @@ PUBLIC size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
return 0;
}
syscall3(sys_FileSeek, stream->_fileno, stream->_offset, SEEK_SET);
return syscall3(sys_FileRead, (uint64_t)stream->_fileno, (uint64_t)ptr, size * nmemb);
syscall3(sc_lseek, stream->_fileno, stream->_offset, SEEK_SET);
return syscall3(sc_read, (uint64_t)stream->_fileno, (uint64_t)ptr, size * nmemb);
}
PUBLIC size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
@@ -47,8 +47,8 @@ PUBLIC size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
return 0;
}
syscall3(sys_FileSeek, stream->_fileno, stream->_offset, SEEK_SET);
return syscall3(sys_FileWrite, (uint64_t)stream->_fileno, (uint64_t)ptr, size * nmemb);
syscall3(sc_lseek, stream->_fileno, stream->_offset, SEEK_SET);
return syscall3(sc_write, (uint64_t)stream->_fileno, (uint64_t)ptr, size * nmemb);
}
PUBLIC int fclose(FILE *fp)
@@ -59,7 +59,7 @@ PUBLIC int fclose(FILE *fp)
return EOF;
}
return syscall1(sys_FileClose, fp->_fileno);
return syscall1(sc_close, fp->_fileno);
}
PUBLIC off_t fseek(FILE *stream, off_t offset, int whence)
@@ -70,7 +70,7 @@ PUBLIC off_t fseek(FILE *stream, off_t offset, int whence)
return -1;
}
off_t new_offset = syscall3(sys_FileSeek, stream->_fileno, offset, whence);
off_t new_offset = syscall3(sc_lseek, stream->_fileno, offset, whence);
if (new_offset < 0)
return -1;
stream->_offset = new_offset;

View File

@@ -13,7 +13,7 @@ PUBLIC int fputc(int c, FILE *stream)
// return EOF;
// }
char str[2] = {c, '\0'};
return syscall3(sys_KernelCTL, KCTL_PRINT, str, 0);
// return syscall3(sys_KernelCTL, KCTL_PRINT, str, 0);
}
PUBLIC int putc(int c, FILE *stream) { return fputc(c, stream); }

View File

@@ -8,7 +8,7 @@
PUBLIC void abort(void)
{
syscall1(sys_Exit, -0xAB057);
syscall1(sc_exit, -0xAB057);
while (1)
;
}

View File

@@ -47,5 +47,5 @@ PUBLIC int execve(const char *pathname, char *const argv[], char *const envp[])
PUBLIC pid_t fork(void)
{
return syscall0(sys_Fork);
return syscall0(sc_fork);
}

View File

@@ -5,10 +5,10 @@
PUBLIC unsigned int sleep(unsigned int seconds)
{
return syscall1(sys_Sleep, seconds * 1000000);
// return syscall1(sys_Sleep, seconds * 1000000);
}
PUBLIC int usleep(useconds_t usec)
{
return syscall1(sys_Sleep, usec);
// return syscall1(sys_Sleep, usec);
}