Skip to content

Commit

Permalink
feat: add in conditional compile for syscalls
Browse files Browse the repository at this point in the history
qt sys calls handle blocking sys calls whenever qthreads are
available to us keeping the thread unblocked
Signed-off-by: Lakshya Singh <lakshay.singh1108@gmail.com>
  • Loading branch information
king-11 committed Jul 15, 2021
1 parent d24461d commit f3435c5
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions runtime/src/qio/sys.c
Expand Up @@ -92,7 +92,10 @@

#endif


// to use qthread sys calls when available
#ifdef QTHREAD_VERSION
#include <qthread/qt_syscalls.h>
#endif

// Should be available in sys_xsi_strerror_r.c
extern int sys_xsi_strerror_r(int errnum, char* buf, size_t buflen);
Expand Down Expand Up @@ -1430,7 +1433,8 @@ err_t sys_accept(fd_t sockfd, sys_sockaddr_t* addr_out, fd_t* fd_out)

STARTING_SLOW_SYSCALL;

got = accept(sockfd, (struct sockaddr*) & addr_out->addr, &addr_len);
got = accept(sockfd, (struct sockaddr *)&addr_out->addr, &addr_len);

if( got != -1 ) {
if( addr_len > (socklen_t) sizeof(sys_sockaddr_storage_t) ) {
fprintf(stderr, "Warning: address truncated in sys_accept\n");
Expand Down Expand Up @@ -1474,7 +1478,8 @@ err_t sys_connect(fd_t sockfd, const sys_sockaddr_t* addr)

STARTING_SLOW_SYSCALL;

got = connect(sockfd, (const struct sockaddr*) & addr->addr, addr->len);
got = connect(sockfd, (const struct sockaddr *)&addr->addr, addr->len);

if( got != -1 ) {
err_out = 0;
} else {
Expand Down Expand Up @@ -1868,6 +1873,11 @@ err_t sys_select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds,

int got_nset;
err_t err_out = 0;

#ifdef QTHREAD_VERSION
got_nset = qt_select(nfds, readfds, writefds, exceptfds, timeout);
if (got_nset == -1) err_out = errno; // save error
#else
struct timeval deadline;
struct timeval now;
struct timeval real_timeout;
Expand Down Expand Up @@ -1903,6 +1913,7 @@ err_t sys_select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds,
(now.tv_sec == deadline.tv_sec && now.tv_usec > deadline.tv_usec))
break;
}
#endif

*nset = got_nset;
return err_out;
Expand Down

0 comments on commit f3435c5

Please sign in to comment.