jehanne: improve kernel errors management

This commit is contained in:
2017-10-19 23:05:48 +02:00
parent 03732ac23f
commit 1f8761d0ab

View File

@ -222,6 +222,9 @@ static PosixError
default_error_translator(char* error, uintptr_t caller) default_error_translator(char* error, uintptr_t caller)
{ {
jehanne_fprint(2, "newlib: %s\n", error); jehanne_fprint(2, "newlib: %s\n", error);
PosixError e = libposix_translate_kernel_errors(error);
if(e != 0)
return e;
if(caller == ADDRESS(POSIX_open)) if(caller == ADDRESS(POSIX_open))
return PosixEIO; return PosixEIO;
if(caller == ADDRESS(POSIX_chdir)) if(caller == ADDRESS(POSIX_chdir))
@ -232,9 +235,6 @@ default_error_translator(char* error, uintptr_t caller)
return PosixEPERM; return PosixEPERM;
if(caller == ADDRESS(POSIX_fchdir)) if(caller == ADDRESS(POSIX_fchdir))
return PosixEACCES; return PosixEACCES;
PosixError e = libposix_translate_kernel_errors(error);
if(e != 0)
return e;
return PosixEINVAL; return PosixEINVAL;
} }
@ -377,10 +377,11 @@ initialize_newlib(void)
int int
_fcntl_r(struct _reent *r, int fd, int cmd, int arg) _fcntl_r(struct _reent *r, int fd, int cmd, int arg)
{ {
/*
extern int jehanne_print(const char*, ...); extern int jehanne_print(const char*, ...);
extern uintptr_t jehanne_getcallerpc(void); extern uintptr_t jehanne_getcallerpc(void);
jehanne_fprint(2, "_fcntl_r(%d, %d, %d) from %#p\n", fd, cmd, arg, jehanne_getcallerpc()); jehanne_fprint(2, "_fcntl_r(%d, %d, %d) from %#p\n", fd, cmd, arg, jehanne_getcallerpc());
*/
int *errnop = &r->_errno; int *errnop = &r->_errno;
PosixFDCmds pcmd; PosixFDCmds pcmd;
int tmp; int tmp;