From 08403461a98b5a91af850676a167f3dc5dd64861 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sun, 10 Jan 2016 20:20:55 +0100 Subject: [PATCH] return the number of transfered bytes in send, recv, read, write & co. --- hermit/kernel/syscall.c | 34 ++++++++-------------------------- hermit/lwip | 2 +- 2 files changed, 9 insertions(+), 27 deletions(-) diff --git a/hermit/kernel/syscall.c b/hermit/kernel/syscall.c index 716c4a9c8..2ef12ad12 100644 --- a/hermit/kernel/syscall.c +++ b/hermit/kernel/syscall.c @@ -47,15 +47,6 @@ extern int32_t isle; extern int32_t possible_isles; extern int libc_sd; - -int* __getreent(void); - -static inline int* libc_errno(void) -{ - - return __getreent(); -} - tid_t sys_getpid(void) { task_t* task = per_core(current_task); @@ -116,13 +107,10 @@ ssize_t sys_read(int fd, char* buf, size_t len) // do we have an LwIP file descriptor? if (fd & LWIP_FD_BIT) { ret = lwip_read(fd & ~LWIP_FD_BIT, buf, len); - if (ret) - { - *libc_errno() = errno; - return -1; - } + if (ret < 0) + return -errno; - return 0; + return ret; } if (libc_sd < 0) @@ -171,13 +159,10 @@ ssize_t sys_write(int fd, const char* buf, size_t len) // do we have an LwIP file descriptor? if (fd & LWIP_FD_BIT) { ret = lwip_write(fd & ~LWIP_FD_BIT, buf, len); - if (ret) - { - *libc_errno() = errno; - return -1; - } + if (ret < 0) + return -errno; - return 0; + return ret; } if (libc_sd < 0) @@ -311,11 +296,8 @@ int sys_close(int fd) // do we have an LwIP file descriptor? if (fd & LWIP_FD_BIT) { ret = lwip_close(fd & ~LWIP_FD_BIT); - if (ret) - { - *libc_errno() = errno; - return -1; - } + if (ret < 0) + return -errno; return 0; } diff --git a/hermit/lwip b/hermit/lwip index 9e76e0b89..0791e0abf 160000 --- a/hermit/lwip +++ b/hermit/lwip @@ -1 +1 @@ -Subproject commit 9e76e0b89f21173c1a311be6789360c1054eb269 +Subproject commit 0791e0abfdb8f1144e34adfc463b45a5033c421f