Commit 337b0fa
Changed files (6)
platform
datatypes/array.h
@@ -343,6 +343,7 @@ GEN_ARRAY_TYPE( s8 )
GEN_ARRAY_TYPE( s16 )
GEN_ARRAY_TYPE( s32 )
GEN_ARRAY_TYPE( s64 )
+GEN_ARRAY_TYPE( ssize )
GEN_ARRAY_TYPE( f32 )
GEN_ARRAY_TYPE( f64 )
@@ -357,6 +358,7 @@ GEN_ARRAY_TYPE( s8p )
GEN_ARRAY_TYPE( s16p )
GEN_ARRAY_TYPE( s32p )
GEN_ARRAY_TYPE( s64p )
+GEN_ARRAY_TYPE( ssizep )
GEN_ARRAY_TYPE( f32p )
GEN_ARRAY_TYPE( f64p )
datatypes/pointer.h
@@ -17,6 +17,7 @@ GEN_POINTER_TYPE( s8 );
GEN_POINTER_TYPE( s16 );
GEN_POINTER_TYPE( s32 );
GEN_POINTER_TYPE( s64 );
+GEN_POINTER_TYPE( ssize );
GEN_POINTER_TYPE( f32 );
GEN_POINTER_TYPE( f64 );
platform/linux/core/types.h
@@ -19,7 +19,7 @@ typedef double f64;
#if ARCH == ARCH_X86_64
typedef u64 usize;
- typedef s64 isize;
+ typedef s64 ssize;
typedef struct _Page {
u8 data[4096];
@@ -28,7 +28,7 @@ typedef double f64;
#elif ARCH == ARCH_I386
typedef u32 usize;
- typedef s32 isize;
+ typedef s32 ssize;
typedef struct _Page {
u8 data[4096];
platform/linux/syscall_wrappers_gcclike.h
@@ -6,7 +6,7 @@
#if ARCH == ARCH_X86_64
/* All this mess, just so *maybe* the compiler can optimize register usage when inlining. Check the generic wrappers for a more typical way of going about this. This here is unusual, from what I have seen. */
- static inline isize linux_syscall1(usize num, usize arg1) {
+ static inline ssize linux_syscall1(usize num, usize arg1) {
register usize ret __asm__("rax") = num;
register usize a1 __asm__("rdi") = arg1;
@@ -18,7 +18,7 @@
);
return ret;
}
- static inline isize linux_syscall2(usize num, usize arg1, usize arg2) {
+ static inline ssize linux_syscall2(usize num, usize arg1, usize arg2) {
register usize ret __asm__("rax") = num;
register usize a1 __asm__("rdi") = arg1;
register usize a2 __asm__("rsi") = arg2;
@@ -31,7 +31,7 @@
);
return ret;
}
- static inline isize linux_syscall3(usize num, usize arg1, usize arg2, usize arg3) {
+ static inline ssize linux_syscall3(usize num, usize arg1, usize arg2, usize arg3) {
register usize ret __asm__("rax") = num;
register usize a1 __asm__("rdi") = arg1;
register usize a2 __asm__("rsi") = arg2;
@@ -45,7 +45,7 @@
);
return ret;
}
- static inline isize linux_syscall4(usize num, usize arg1, usize arg2, usize arg3, usize arg4) {
+ static inline ssize linux_syscall4(usize num, usize arg1, usize arg2, usize arg3, usize arg4) {
register usize ret __asm__("rax") = num;
register usize a1 __asm__("rdi") = arg1;
register usize a2 __asm__("rsi") = arg2;
@@ -61,7 +61,7 @@
return ret;
}
- static inline isize linux_syscall5(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5) {
+ static inline ssize linux_syscall5(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5) {
register usize ret __asm__("rax") = num;
register usize a1 __asm__("rdi") = arg1;
register usize a2 __asm__("rsi") = arg2;
@@ -78,7 +78,7 @@
return ret;
}
- static inline isize linux_syscall6(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5, usize arg6) {
+ static inline ssize linux_syscall6(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5, usize arg6) {
register usize ret __asm__("rax") = num;
register usize a1 __asm__("rdi") = arg1;
register usize a2 __asm__("rsi") = arg2;
platform/linux/syscall_wrappers_generic.h
@@ -4,7 +4,7 @@
#include "../common/types.h"
#if ARCH == ARCH_X86_64
- static inline isize linux_syscall1(usize num, usize arg1) {
+ static inline ssize linux_syscall1(usize num, usize arg1) {
__asm__ volatile (
"movq %[a1], %%rdi\n"
"syscall\n"
@@ -15,7 +15,7 @@
return num;
}
- static inline isize linux_syscall2(usize num, usize arg1, usize arg2) {
+ static inline ssize linux_syscall2(usize num, usize arg1, usize arg2) {
__asm__ volatile (
"movq %[a1], %%rdi\n"
"movq %[a2], %%rsi\n"
@@ -26,7 +26,7 @@
);
return num;
}
- static inline isize linux_syscall3(usize num, usize arg1, usize arg2, usize arg3) {
+ static inline ssize linux_syscall3(usize num, usize arg1, usize arg2, usize arg3) {
__asm__ volatile (
"movq %[a1], %%rdi\n"
"movq %[a2], %%rsi\n"
@@ -38,7 +38,7 @@
);
return num;
}
- static inline isize linux_syscall4(usize num, usize arg1, usize arg2, usize arg3, usize arg4) {
+ static inline ssize linux_syscall4(usize num, usize arg1, usize arg2, usize arg3, usize arg4) {
__asm__ volatile (
"movq %[a1], %%rdi\n"
"movq %[a2], %%rsi\n"
@@ -51,7 +51,7 @@
);
return num;
}
- static inline isize linux_syscall5(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5) {
+ static inline ssize linux_syscall5(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5) {
__asm__ volatile (
"movq %[a1], %%rdi\n"
"movq %[a2], %%rsi\n"
@@ -66,7 +66,7 @@
return num;
}
- static inline isize linux_syscall6(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5, usize arg6) {
+ static inline ssize linux_syscall6(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5, usize arg6) {
__asm__ volatile (
"movq %[a1], %%rdi\n"
"movq %[a2], %%rsi\n"
platform/linux/syscalls.h
@@ -5,12 +5,12 @@
#include "platform/common/types.h"
#include "platform/info/build.h"
-static inline isize linux_syscall1(usize num, usize arg1);
-static inline isize linux_syscall2(usize num, usize arg1, usize arg2);
-static inline isize linux_syscall3(usize num, usize arg1, usize arg2, usize arg3);
-static inline isize linux_syscall4(usize num, usize arg1, usize arg2, usize arg3, usize arg4);
-static inline isize linux_syscall5(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5);
-static inline isize linux_syscall6(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5, usize arg6);
+static inline ssize linux_syscall1(usize num, usize arg1);
+static inline ssize linux_syscall2(usize num, usize arg1, usize arg2);
+static inline ssize linux_syscall3(usize num, usize arg1, usize arg2, usize arg3);
+static inline ssize linux_syscall4(usize num, usize arg1, usize arg2, usize arg3, usize arg4);
+static inline ssize linux_syscall5(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5);
+static inline ssize linux_syscall6(usize num, usize arg1, usize arg2, usize arg3, usize arg4, usize arg5, usize arg6);
#if COMPILER == COMPILER_GCC || COMPILER == COMPILER_CLANG
#include "./syscall_wrappers_gcclike.h"
@@ -219,7 +219,7 @@ static inline Status linux_write( u32 fd, usize amount, usize *out_amount, const
static inline Status linux_open( const u8* path, s32 flags, s32 mode, s32 *out_fd ) {
- isize res = linux_syscall3( 2, (usize)path, (usize)flags, (usize)mode);
+ ssize res = linux_syscall3( 2, (usize)path, (usize)flags, (usize)mode);
if( !LINUX_SYSCALL_ERROR( res ) ) {
*out_fd = res;
@@ -315,12 +315,12 @@ struct stat {
#endif
-static inline isize linux_stat( const char* path, struct stat *statbuf ) {
+static inline ssize linux_stat( const char* path, struct stat *statbuf ) {
return linux_syscall2( 4, (usize)path, (usize)statbuf );
}
static inline Status linux_fstat( s32 fd, struct stat *statbuf ) {
- isize res = linux_syscall2( 5, (usize)fd, (usize)statbuf );
+ ssize res = linux_syscall2( 5, (usize)fd, (usize)statbuf );
if( !LINUX_SYSCALL_ERROR(res) ) {
return S_SUCCESS;
@@ -349,7 +349,7 @@ static inline void linux_exit( s32 exitcode ) {
#define MMAP_MAP_FAILED ((void *)-1)
static inline Status linux_mmap( usize addr, usize len, usize prot, usize flags, usize fd, usize offset, void **out ) {
- isize res = linux_syscall6( 9, addr, len, prot, flags, fd, offset );
+ ssize res = linux_syscall6( 9, addr, len, prot, flags, fd, offset );
if( !LINUX_SYSCALL_ERROR(res) ) {
*out = (void*)res;
@@ -360,7 +360,7 @@ static inline Status linux_mmap( usize addr, usize len, usize prot, usize flags,
}
static inline Status linux_munmap( usize start, usize len ) {
- isize res = linux_syscall2( 11, start, len );
+ ssize res = linux_syscall2( 11, start, len );
if( !LINUX_SYSCALL_ERROR(res) ) {
return S_SUCCESS;
@@ -370,7 +370,7 @@ static inline Status linux_munmap( usize start, usize len ) {
}
static inline Status linux_mprotect( usize start, usize len, usize prot ) {
- isize res = linux_syscall3( 10, start, len, prot );
+ ssize res = linux_syscall3( 10, start, len, prot );
if( !LINUX_SYSCALL_ERROR(res) ) {
return S_SUCCESS;
@@ -407,7 +407,7 @@ static inline Status linux_mprotect( usize start, usize len, usize prot ) {
#define MADV_GUARD_REMOVE 103
static inline Status linux_madvise( usize start, usize len, s32 behaviour ) {
- isize res = linux_syscall3( 11, start, len, (usize)(u32)behaviour );
+ ssize res = linux_syscall3( 11, start, len, (usize)(u32)behaviour );
if( !LINUX_SYSCALL_ERROR(res) ) {
return S_SUCCESS;
@@ -417,12 +417,12 @@ static inline Status linux_madvise( usize start, usize len, s32 behaviour ) {
}
-static inline isize linux_unlink( const u8 *path ) {
+static inline ssize linux_unlink( const u8 *path ) {
return linux_syscall1( 87, (usize)path );
}
static inline Status linux_fallocate( s32 fd, s32 mode, usize offset, usize len ) {
- isize res = linux_syscall4(285, fd, mode, offset, len);
+ ssize res = linux_syscall4(285, fd, mode, offset, len);
if( !LINUX_SYSCALL_ERROR(res) ) {
return S_SUCCESS;