mescc: syscall: return only ever error -1, set errno.
This commit is contained in:
parent
b7d913d7a0
commit
831bd71a14
|
@ -18,6 +18,8 @@
|
|||
* along with Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#ifndef __MES_SIZE_T
|
||||
#define __MES_SIZE_T
|
||||
#undef size_t
|
||||
|
@ -72,3 +74,27 @@ puts (char const* s)
|
|||
#include <linux-mini-gcc.c>
|
||||
|
||||
#endif // !__MESC__
|
||||
|
||||
void (*__call_at_exit) (void);
|
||||
|
||||
void
|
||||
exit (int code)
|
||||
{
|
||||
if (__call_at_exit)
|
||||
(*__call_at_exit) ();
|
||||
_exit (code);
|
||||
}
|
||||
|
||||
ssize_t
|
||||
write (int filedes, void const *buffer, size_t size)
|
||||
{
|
||||
int r = _write (filedes, buffer, size);
|
||||
if (r < 0)
|
||||
{
|
||||
errno = -r;
|
||||
r = -1;
|
||||
}
|
||||
else
|
||||
errno = 0;
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -34,7 +34,10 @@ _sys_call (int sys_call)
|
|||
: "eax"
|
||||
);
|
||||
if (r < 0)
|
||||
{
|
||||
errno = -r;
|
||||
r = -1;
|
||||
}
|
||||
else
|
||||
errno = 0;
|
||||
return r;
|
||||
|
@ -56,7 +59,10 @@ _sys_call1 (int sys_call, int one)
|
|||
: "eax", "ebx"
|
||||
);
|
||||
if (r < 0)
|
||||
{
|
||||
errno = -r;
|
||||
r = -1;
|
||||
}
|
||||
else
|
||||
errno = 0;
|
||||
return r;
|
||||
|
@ -79,7 +85,10 @@ _sys_call2 (int sys_call, int one, int two)
|
|||
: "eax", "ebx", "ecx"
|
||||
);
|
||||
if (r < 0)
|
||||
{
|
||||
errno = -r;
|
||||
r = -1;
|
||||
}
|
||||
else
|
||||
errno = 0;
|
||||
return r;
|
||||
|
@ -103,7 +112,10 @@ _sys_call3 (int sys_call, int one, int two, int three)
|
|||
: "eax", "ebx", "ecx", "edx"
|
||||
);
|
||||
if (r < 0)
|
||||
{
|
||||
errno = -r;
|
||||
r = -1;
|
||||
}
|
||||
else
|
||||
errno = 0;
|
||||
return r;
|
||||
|
|
|
@ -59,7 +59,10 @@ _sys_call (int sys_call)
|
|||
{
|
||||
int r = __sys_call (sys_call);
|
||||
if (r < 0)
|
||||
{
|
||||
errno = -r;
|
||||
r = -1;
|
||||
}
|
||||
else
|
||||
errno = 0;
|
||||
return r;
|
||||
|
@ -70,7 +73,10 @@ _sys_call1 (int sys_call, int one)
|
|||
{
|
||||
int r = __sys_call1 (sys_call, one);
|
||||
if (r < 0)
|
||||
{
|
||||
errno = -r;
|
||||
r = -1;
|
||||
}
|
||||
else
|
||||
errno = 0;
|
||||
return r;
|
||||
|
@ -81,7 +87,10 @@ _sys_call2 (int sys_call, int one, int two)
|
|||
{
|
||||
int r = __sys_call2 (sys_call, one, two);
|
||||
if (r < 0)
|
||||
{
|
||||
errno = -r;
|
||||
r = -1;
|
||||
}
|
||||
else
|
||||
errno = 0;
|
||||
return r;
|
||||
|
@ -92,7 +101,10 @@ _sys_call3 (int sys_call, int one, int two, int three)
|
|||
{
|
||||
int r = __sys_call3 (sys_call, one, two, three);
|
||||
if (r < 0)
|
||||
{
|
||||
errno = -r;
|
||||
r = -1;
|
||||
}
|
||||
else
|
||||
errno = 0;
|
||||
return r;
|
||||
|
|
|
@ -45,18 +45,8 @@ _exit (int code)
|
|||
_exit (0);
|
||||
}
|
||||
|
||||
void (*__call_at_exit) (void);
|
||||
|
||||
void
|
||||
exit (int code)
|
||||
{
|
||||
if (__call_at_exit)
|
||||
(*__call_at_exit) ();
|
||||
_exit (code);
|
||||
}
|
||||
|
||||
ssize_t
|
||||
write (int filedes, void const *buffer, size_t size)
|
||||
_write (int filedes, void const *buffer, size_t size)
|
||||
{
|
||||
int r;
|
||||
#if __GNUC__
|
||||
|
|
|
@ -26,18 +26,8 @@ _exit ()
|
|||
asm ("int____$0x80");
|
||||
}
|
||||
|
||||
void (*__call_at_exit) (void);
|
||||
|
||||
void
|
||||
exit (int code)
|
||||
{
|
||||
if (__call_at_exit)
|
||||
(*__call_at_exit) ();
|
||||
_exit (code);
|
||||
}
|
||||
|
||||
void
|
||||
write ()
|
||||
_write ()
|
||||
{
|
||||
asm ("mov____$i32,%eax SYS_write");
|
||||
asm ("mov____0x8(%ebp),%ebx !8");
|
||||
|
|
Loading…
Reference in a new issue