Commit 6933fcb
datatypes/error.h
@@ -14,20 +14,20 @@ typedef u32 Status;
#define S_SOURCE_MASK (0x3ff << 20)
enum _ErrorSources {
- ERR_ARG_1 = (0x1 << 20),
- ERR_ARG_2 = (0x2 << 20),
- ERR_ARG_3 = (0x3 << 20),
- ERR_ARG_4 = (0x4 << 20),
- ERR_ARG_5 = (0x5 << 20),
- ERR_ARG_6 = (0x6 << 20),
- ERR_ARG_7 = (0x7 << 20),
- ERR_ARG_8 = (0x8 << 20),
- ERR_ARG_9 = (0x9 << 20),
- ERR_ARG_10 = (0xa << 20),
- ERR_ARG_11 = (0xb << 20),
- ERR_ARG_12 = (0xc << 20),
-
- ERR_PLATFORM = (0x10 << 20), /* The error resulted inside platform code. */
+ ERRSRC_ARG_1 = (0x1 << 20),
+ ERRSRC_ARG_2 = (0x2 << 20),
+ ERRSRC_ARG_3 = (0x3 << 20),
+ ERRSRC_ARG_4 = (0x4 << 20),
+ ERRSRC_ARG_5 = (0x5 << 20),
+ ERRSRC_ARG_6 = (0x6 << 20),
+ ERRSRC_ARG_7 = (0x7 << 20),
+ ERRSRC_ARG_8 = (0x8 << 20),
+ ERRSRC_ARG_9 = (0x9 << 20),
+ ERRSRC_ARG_10 = (0xa << 20),
+ ERRSRC_ARG_11 = (0xb << 20),
+ ERRSRC_ARG_12 = (0xc << 20),
+
+ ERRSRC_PLATFORM = (0x10 << 20), /* The error resulted inside platform code. */
};
#define S_REASON_MASK (0xfffff)
platform/linux/file.h
@@ -31,15 +31,15 @@ Status File_open( const String *name, usize flags, File *out ) {
(flags & FILE_EXISTING_TRUNCATE)
) {
DEBUG( breakpoint() ); /* Can not truncate a file without write access. */
- return S_FAILURE | ERR_INVALID_ARGUMENT | ERR_ARG_3;
+ return S_FAILURE | ERR_INVALID_ARGUMENT | ERRSRC_ARG_3;
}
if( (flags & FILE_EXISTING_FAIL) && (flags & FILE_MISSING_FAIL) ) {
DEBUG( breakpoint() ); /* Useless flag combination: error if there is a file, error if there isn't one aka always error */
- return S_FAILURE | ERR_INVALID_ARGUMENT | ERR_ARG_3;
+ return S_FAILURE | ERR_INVALID_ARGUMENT | ERRSRC_ARG_3;
}
- TRY( File_open_validate_flags( flags, ERR_ARG_3 ) );
+ TRY( File_open_validate_flags( flags, ERRSRC_ARG_3 ) );
usize syscall_flags = O_CLOEXEC; /* Close all files on exec */
@@ -66,7 +66,7 @@ Status File_open( const String *name, usize flags, File *out ) {
default:
UNREACHABLE;
- return S_FAILURE | ERR_INVALID_ARGUMENT | ERR_ARG_3;
+ return S_FAILURE | ERR_INVALID_ARGUMENT | ERRSRC_ARG_3;
}
switch( flags & FILE_EXISTING_MASK ) {
@@ -81,7 +81,7 @@ Status File_open( const String *name, usize flags, File *out ) {
break;
default:
UNREACHABLE;
- return S_FAILURE | ERR_INVALID_ARGUMENT | ERR_ARG_3;
+ return S_FAILURE | ERR_INVALID_ARGUMENT | ERRSRC_ARG_3;
}
switch( flags & FILE_MISSING_MASK ) {
@@ -93,7 +93,7 @@ Status File_open( const String *name, usize flags, File *out ) {
break;
default:
UNREACHABLE;
- return S_FAILURE | ERR_INVALID_ARGUMENT | ERR_ARG_3;
+ return S_FAILURE | ERR_INVALID_ARGUMENT | ERRSRC_ARG_3;
}
switch( flags & FILE_LINK_MASK ) {
@@ -113,19 +113,19 @@ Status File_open( const String *name, usize flags, File *out ) {
switch( out->fd ) {
case -EACCES:
case -EPERM:
- return S_FAILURE | ERR_PLATFORM | ERR_PERMISSION_DENIED;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_PERMISSION_DENIED;
case -EEXIST:
- return S_FAILURE | ERR_PLATFORM | ERR_FILE_ALREADY_EXISTS;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_FILE_ALREADY_EXISTS;
case -EINVAL:
- return S_FAILURE | ERR_PLATFORM | ERR_INVALID_ARGUMENT;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_INVALID_ARGUMENT;
case -ENOENT:
- return S_FAILURE | ERR_PLATFORM | ERR_FILE_DOESNT_EXIST;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_FILE_DOESNT_EXIST;
case -ENAMETOOLONG:
- return S_FAILURE | ERR_ARG_1 | ERR_INVALID_ARGUMENT;
+ return S_FAILURE | ERRSRC_ARG_1 | ERR_INVALID_ARGUMENT;
case -ENOSPC:
- return S_FAILURE | ERR_PLATFORM | ERR_NO_DISK_SPACE;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_NO_DISK_SPACE;
default:
- return S_FAILURE | ERR_PLATFORM | ERR_GENERIC;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_GENERIC;
}
}
}
@@ -139,9 +139,9 @@ Status File_close( File *f ) {
} else {
switch( res ) {
case -EBADF:
- return S_FAILURE | ERR_ARG_1 | ERR_INVALID_ARGUMENT;
+ return S_FAILURE | ERRSRC_ARG_1 | ERR_INVALID_ARGUMENT;
default:
- return S_FAILURE | ERR_PLATFORM | ERR_GENERIC;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_GENERIC;
}
}
}
@@ -155,11 +155,11 @@ Status File_read( const File *f, usize max_amount, usize *out_amount, u8 *out )
} else {
switch(res) {
case -EBADF:
- return S_FAILURE | ERR_ARG_1 | ERR_INVALID_ARGUMENT;
+ return S_FAILURE | ERRSRC_ARG_1 | ERR_INVALID_ARGUMENT;
case -EFAULT:
- return S_FAILURE | ERR_ARG_3 | ERR_OUT_OF_BOUND;
+ return S_FAILURE | ERRSRC_ARG_3 | ERR_OUT_OF_BOUND;
default:
- return S_FAILURE | ERR_PLATFORM | ERR_GENERIC;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_GENERIC;
}
}
}
@@ -173,11 +173,11 @@ Status File_write( const File *f, usize amount, usize *out_amount, const u8 *buf
} else {
switch(res) {
case -EBADF:
- return S_FAILURE | ERR_ARG_1 | ERR_INVALID_ARGUMENT;
+ return S_FAILURE | ERRSRC_ARG_1 | ERR_INVALID_ARGUMENT;
case -EFAULT:
- return S_FAILURE | ERR_ARG_3 | ERR_OUT_OF_BOUND;
+ return S_FAILURE | ERRSRC_ARG_3 | ERR_OUT_OF_BOUND;
default:
- return S_FAILURE | ERR_PLATFORM | ERR_GENERIC;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_GENERIC;
}
}
}
@@ -191,13 +191,13 @@ Status File_delete( const String *name ) {
switch( res ) {
case -EACCES:
case -EPERM:
- return S_FAILURE | ERR_PLATFORM | ERR_PERMISSION_DENIED;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_PERMISSION_DENIED;
case -EFAULT:
- return S_FAILURE | ERR_ARG_1 | ERR_OUT_OF_BOUND;
+ return S_FAILURE | ERRSRC_ARG_1 | ERR_OUT_OF_BOUND;
case -ENOENT:
- return S_FAILURE | ERR_PLATFORM | ERR_FILE_DOESNT_EXIST;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_FILE_DOESNT_EXIST;
default:
- return S_FAILURE | ERR_PLATFORM | ERR_GENERIC;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_GENERIC;
}
}
}
@@ -210,7 +210,7 @@ Status File_seek( const File *f, usize position ) {
} else {
switch( res ) {
case -EBADF:
- return S_FAILURE | ERR_ARG_1 | ERR_INVALID_ARGUMENT;
+ return S_FAILURE | ERRSRC_ARG_1 | ERR_INVALID_ARGUMENT;
case -EOVERFLOW:
return S_FAILURE | ERR_OVERFLOW;
default:
@@ -223,7 +223,7 @@ Status FileView_from_file( File *file, usize claim_amount, usize flags, FileView
DEBUG( assert( claim_amount%sizeof(Page) == 0 ) );
if( claim_amount%sizeof(Page) != 0 ) {
- return ERR_ARG_2 | ERR_INVALID_ARGUMENT;
+ return ERRSRC_ARG_2 | ERR_INVALID_ARGUMENT;
}
TRY( mem_claim( claim_amount/sizeof(Page), &out->start ) );
@@ -235,7 +235,7 @@ Status FileView_from_file( File *file, usize claim_amount, usize flags, FileView
if( LINUX_SYSCALL_ERROR(res) ) {
DEBUG(breakpoint());
- return S_FAILURE | ERR_PLATFORM | ERR_GENERIC;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_GENERIC;
}
out->filesize = s.st_size;
@@ -244,7 +244,7 @@ Status FileView_from_file( File *file, usize claim_amount, usize flags, FileView
res = linux_mmap( (usize)out->start, out->filesize, LINUX_PROT_READ | LINUX_PROT_WRITE, MMAP_MAP_FIXED | MMAP_MAP_SHARED, file->fd, 0 );
if( LINUX_SYSCALL_ERROR(res) ) {
DEBUG(breakpoint());
- return S_FAILURE | ERR_PLATFORM | ERR_GENERIC;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_GENERIC;
}
}
/* Finalize output */
@@ -284,7 +284,7 @@ Status FileView_extend_file( FileView *fv, usize amount ) {
usize res = linux_fallocate( fv->file.fd, 0, fv->filesize, amount );
if( LINUX_SYSCALL_ERROR(res) ) {
- return S_FAILURE | ERR_PLATFORM | ERR_GENERIC;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_GENERIC;
}
fv->filesize += amount;
@@ -299,7 +299,7 @@ Status FileView_extend_file( FileView *fv, usize amount ) {
if( LINUX_SYSCALL_ERROR(res) ) {
- return S_FAILURE | ERR_PLATFORM | ERR_MEM_MAP_FAILURE;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_MEM_MAP_FAILURE;
}
return S_SUCCESS;
@@ -313,7 +313,7 @@ Status FileView_destroy( FileView *fv ) {
usize res = linux_munmap( (usize)fv->start, fv->claimed );
if( LINUX_SYSCALL_ERROR(res) ) {
- return S_FAILURE | ERR_PLATFORM | ERR_MEM_UNMAP_FAILURE;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_MEM_UNMAP_FAILURE;
}
fv->flags = 0;
platform/linux/memory.h
@@ -19,7 +19,7 @@ Status mem_relinquish( Page *start, u32 page_count ) {
usize res = linux_munmap( (usize)start, page_count*sizeof(Page) );
if( LINUX_SYSCALL_ERROR(res) ) {
- return S_FAILURE | ERR_PLATFORM | ERR_MEM_UNMAP_FAILURE;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_MEM_UNMAP_FAILURE;
}
return S_SUCCESS;
@@ -29,7 +29,7 @@ Status mem_occupy( Page *start, u32 page_count ) {
usize res = linux_mprotect( (usize)start, page_count*sizeof(Page), LINUX_PROT_READ | LINUX_PROT_WRITE );
if( LINUX_SYSCALL_ERROR(res) ) {
- return S_FAILURE | ERR_PLATFORM | ERR_MEM_SETPERM_FAILURE;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_MEM_SETPERM_FAILURE;
}
return S_SUCCESS;
@@ -41,13 +41,13 @@ Status mem_vacate( Page *start, u32 page_count ) {
usize res = linux_mprotect( (usize)start, amount, LINUX_PROT_NONE );
if( LINUX_SYSCALL_ERROR(res) ) {
- return S_FAILURE | ERR_PLATFORM | ERR_MEM_SETPERM_FAILURE;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_MEM_SETPERM_FAILURE;
}
res = linux_madvise( (usize)start, amount, MADV_DONTNEED);
if( LINUX_SYSCALL_ERROR(res) ) {
- return S_FAILURE | ERR_PLATFORM | ERR_MEM_SETHINT_FAILURE;
+ return S_FAILURE | ERRSRC_PLATFORM | ERR_MEM_SETHINT_FAILURE;
}
return S_SUCCESS;
util/mathops.h
@@ -24,7 +24,7 @@ static inline u8 usize_is_power_of_two( usize num ) {
}
static inline Status u64_round_up( u64 number, u64 multiple, u64 *out ) {
- if( multiple == 0 ) return S_FAILURE | ERR_ARG_2 | ERR_INVALID_ARGUMENT;
+ if( multiple == 0 ) return S_FAILURE | ERRSRC_ARG_2 | ERR_INVALID_ARGUMENT;
u64 rem = number%multiple;
if( rem == 0 ) {
*out = number;
@@ -35,7 +35,7 @@ static inline Status u64_round_up( u64 number, u64 multiple, u64 *out ) {
}
static inline Status u32_round_up( u32 number, u32 multiple, u32 *out ) {
- if( multiple == 0 ) return S_FAILURE | ERR_ARG_2 | ERR_INVALID_ARGUMENT;
+ if( multiple == 0 ) return S_FAILURE | ERRSRC_ARG_2 | ERR_INVALID_ARGUMENT;
u32 rem = number%multiple;
if( rem == 0 ) {
*out = number;
@@ -46,7 +46,7 @@ static inline Status u32_round_up( u32 number, u32 multiple, u32 *out ) {
}
static inline Status u16_round_up( u16 number, u16 multiple, u16 *out ) {
- if( multiple == 0 ) return S_FAILURE | ERR_ARG_2 | ERR_INVALID_ARGUMENT;
+ if( multiple == 0 ) return S_FAILURE | ERRSRC_ARG_2 | ERR_INVALID_ARGUMENT;
u16 rem = number%multiple;
if( rem == 0 ) {
*out = number;
@@ -57,7 +57,7 @@ static inline Status u16_round_up( u16 number, u16 multiple, u16 *out ) {
}
static inline Status u8_round_up( u8 number, u8 multiple, u8 *out ) {
- if( multiple == 0 ) return S_FAILURE | ERR_ARG_2 | ERR_INVALID_ARGUMENT;
+ if( multiple == 0 ) return S_FAILURE | ERRSRC_ARG_2 | ERR_INVALID_ARGUMENT;
u8 rem = number%multiple;
if( rem == 0 ) {
*out = number;
@@ -78,25 +78,25 @@ static inline Status usize_round_up( usize number, usize multiple, usize *out )
#endif
static inline Status u64_round_down(u64 number, u64 multiple, u64 *out) {
- if( multiple == 0 ) return S_FAILURE | ERR_ARG_2 | ERR_INVALID_ARGUMENT;
+ if( multiple == 0 ) return S_FAILURE | ERRSRC_ARG_2 | ERR_INVALID_ARGUMENT;
*out = number - (number%multiple);
return S_SUCCESS;
}
static inline Status u32_round_down(u32 number, u32 multiple, u32 *out) {
- if( multiple == 0 ) return S_FAILURE | ERR_ARG_2 | ERR_INVALID_ARGUMENT;
+ if( multiple == 0 ) return S_FAILURE | ERRSRC_ARG_2 | ERR_INVALID_ARGUMENT;
*out = number - (number%multiple);
return S_SUCCESS;
}
static inline Status u16_round_down(u16 number, u16 multiple, u16 *out) {
- if( multiple == 0 ) return S_FAILURE | ERR_ARG_2 | ERR_INVALID_ARGUMENT;
+ if( multiple == 0 ) return S_FAILURE | ERRSRC_ARG_2 | ERR_INVALID_ARGUMENT;
*out = number - (number%multiple);
return S_SUCCESS;
}
static inline Status u8_round_down(u8 number, u8 multiple, u8 *out) {
- if( multiple == 0 ) return S_FAILURE | ERR_ARG_2 | ERR_INVALID_ARGUMENT;
+ if( multiple == 0 ) return S_FAILURE | ERRSRC_ARG_2 | ERR_INVALID_ARGUMENT;
*out = number - (number%multiple);
return S_SUCCESS;
}