Import the latest CloudABI definitions, version 0.16.

The most important change in this release is the removal of the
poll_fd() system call; CloudABI's equivalent of kevent(). Though I think
that kqueue is a lot saner than many of its alternatives, our
experience is that emulating this system call on other systems
accurately isn't easy. It has become a complex API, even though I'm not
convinced this complexity is needed. This is why we've decided to take a
different approach, by looking one layer up.

We're currently adding an event loop to CloudABI's C library that is API
compatible with libuv (except when incompatible with Capsicum).
Initially, this event loop will be built on top of plain inefficient
poll() calls. Only after this is finished, we'll work our way backwards
and design a new set of system calls to optimize it.

Interesting challenges will include integrating asynchronous I/O into
such a system call API. libuv currently doesn't aio(4) on Linux/BSD, due
to it being unreliable and having undesired semantics.

Obtained from:	https://github.com/NuxiNL/cloudabi
This commit is contained in:
Ed Schouten 2017-10-18 19:22:53 +00:00
parent 0d5af38ceb
commit 4e1847781b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=324727
24 changed files with 220 additions and 564 deletions

View File

@ -73,9 +73,7 @@ __FBSDID("$FreeBSD$");
MAPPING(CLOUDABI_RIGHT_MEM_MAP, CAP_MMAP) \
MAPPING(CLOUDABI_RIGHT_MEM_MAP_EXEC, CAP_MMAP_X) \
MAPPING(CLOUDABI_RIGHT_POLL_FD_READWRITE, CAP_EVENT) \
MAPPING(CLOUDABI_RIGHT_POLL_MODIFY, CAP_KQUEUE_CHANGE) \
MAPPING(CLOUDABI_RIGHT_POLL_PROC_TERMINATE, CAP_EVENT) \
MAPPING(CLOUDABI_RIGHT_POLL_WAIT, CAP_KQUEUE_EVENT) \
MAPPING(CLOUDABI_RIGHT_PROC_EXEC, CAP_FEXECVE) \
MAPPING(CLOUDABI_RIGHT_SOCK_SHUTDOWN, CAP_SHUTDOWN) \
@ -93,9 +91,6 @@ cloudabi_sys_fd_create1(struct thread *td,
struct filecaps fcaps = {};
switch (uap->type) {
case CLOUDABI_FILETYPE_POLL:
cap_rights_init(&fcaps.fc_rights, CAP_FSTAT, CAP_KQUEUE);
return (kern_kqueue(td, 0, &fcaps));
case CLOUDABI_FILETYPE_SHARED_MEMORY:
cap_rights_init(&fcaps.fc_rights, CAP_FSTAT, CAP_FTRUNCATE,
CAP_MMAP_RWX);
@ -201,8 +196,6 @@ cloudabi_convert_filetype(const struct file *fp)
switch (fp->f_type) {
case DTYPE_FIFO:
return (CLOUDABI_FILETYPE_SOCKET_STREAM);
case DTYPE_KQUEUE:
return (CLOUDABI_FILETYPE_POLL);
case DTYPE_PIPE:
return (CLOUDABI_FILETYPE_SOCKET_STREAM);
case DTYPE_PROCDESC:
@ -316,10 +309,6 @@ cloudabi_remove_conflicting_rights(cloudabi_filetype_t filetype,
CLOUDABI_RIGHT_POLL_FD_READWRITE |
CLOUDABI_RIGHT_PROC_EXEC;
break;
case CLOUDABI_FILETYPE_POLL:
*base &= ~CLOUDABI_RIGHT_FILE_ADVISE;
*inheriting = 0;
break;
case CLOUDABI_FILETYPE_PROCESS:
*base &= ~(CLOUDABI_RIGHT_FILE_ADVISE |
CLOUDABI_RIGHT_POLL_FD_READWRITE);

View File

@ -79,7 +79,6 @@ convert_signal(int sig)
struct cloudabi32_kevent_args {
const cloudabi32_subscription_t *in;
cloudabi32_event_t *out;
bool once;
};
/* Converts CloudABI's subscription objects to FreeBSD's struct kevent. */
@ -124,9 +123,7 @@ cloudabi32_kevent_copyin(void *arg, struct kevent *kevp, int count)
case CLOUDABI_EVENTTYPE_FD_READ:
kevp->filter = EVFILT_READ;
kevp->ident = sub.fd_readwrite.fd;
if ((sub.fd_readwrite.flags &
CLOUDABI_SUBSCRIPTION_FD_READWRITE_POLL) != 0)
kevp->fflags = NOTE_FILE_POLL;
kevp->fflags = NOTE_FILE_POLL;
break;
case CLOUDABI_EVENTTYPE_FD_WRITE:
kevp->filter = EVFILT_WRITE;
@ -138,24 +135,7 @@ cloudabi32_kevent_copyin(void *arg, struct kevent *kevp, int count)
kevp->fflags = NOTE_EXIT;
break;
}
if (args->once) {
/* Ignore flags. Simply use oneshot mode. */
kevp->flags = EV_ADD | EV_ONESHOT;
} else {
/* Translate flags. */
if ((sub.flags & CLOUDABI_SUBSCRIPTION_ADD) != 0)
kevp->flags |= EV_ADD;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_CLEAR) != 0)
kevp->flags |= EV_CLEAR;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_DELETE) != 0)
kevp->flags |= EV_DELETE;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_DISABLE) != 0)
kevp->flags |= EV_DISABLE;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_ENABLE) != 0)
kevp->flags |= EV_ENABLE;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_ONESHOT) != 0)
kevp->flags |= EV_ONESHOT;
}
kevp->flags = EV_ADD | EV_ONESHOT;
++kevp;
}
return (0);
@ -238,7 +218,6 @@ cloudabi32_sys_poll(struct thread *td, struct cloudabi32_sys_poll_args *uap)
struct cloudabi32_kevent_args args = {
.in = uap->in,
.out = uap->out,
.once = true,
};
struct kevent_copyops copyops = {
.k_copyin = cloudabi32_kevent_copyin,
@ -369,40 +348,3 @@ cloudabi32_sys_poll(struct thread *td, struct cloudabi32_sys_poll_args *uap)
return (kern_kevent_anonymous(td, uap->nsubscriptions, &copyops));
}
int
cloudabi32_sys_poll_fd(struct thread *td,
struct cloudabi32_sys_poll_fd_args *uap)
{
struct cloudabi32_kevent_args args = {
.in = uap->in,
.out = uap->out,
.once = false,
};
struct kevent_copyops copyops = {
.k_copyin = cloudabi32_kevent_copyin,
.k_copyout = cloudabi32_kevent_copyout,
.arg = &args,
};
cloudabi32_subscription_t subtimo;
struct timespec timeout;
int error;
if (uap->timeout != NULL) {
/* Poll with a timeout. */
error = copyin(uap->timeout, &subtimo, sizeof(subtimo));
if (error != 0)
return (error);
if (subtimo.type != CLOUDABI_EVENTTYPE_CLOCK ||
subtimo.clock.flags != 0)
return (EINVAL);
timeout.tv_sec = subtimo.clock.timeout / 1000000000;
timeout.tv_nsec = subtimo.clock.timeout % 1000000000;
return (kern_kevent(td, uap->fd, uap->in_len, uap->out_len,
&copyops, &timeout));
} else {
/* Poll without a timeout. */
return (kern_kevent(td, uap->fd, uap->in_len, uap->out_len,
&copyops, NULL));
}
}

View File

@ -227,14 +227,6 @@ struct cloudabi32_sys_poll_args {
char out_l_[PADL_(cloudabi32_event_t *)]; cloudabi32_event_t * out; char out_r_[PADR_(cloudabi32_event_t *)];
char nsubscriptions_l_[PADL_(size_t)]; size_t nsubscriptions; char nsubscriptions_r_[PADR_(size_t)];
};
struct cloudabi32_sys_poll_fd_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char in_l_[PADL_(const cloudabi32_subscription_t *)]; const cloudabi32_subscription_t * in; char in_r_[PADR_(const cloudabi32_subscription_t *)];
char in_len_l_[PADL_(size_t)]; size_t in_len; char in_len_r_[PADR_(size_t)];
char out_l_[PADL_(cloudabi32_event_t *)]; cloudabi32_event_t * out; char out_r_[PADR_(cloudabi32_event_t *)];
char out_len_l_[PADL_(size_t)]; size_t out_len; char out_len_r_[PADR_(size_t)];
char timeout_l_[PADL_(const cloudabi32_subscription_t *)]; const cloudabi32_subscription_t * timeout; char timeout_r_[PADR_(const cloudabi32_subscription_t *)];
};
struct cloudabi_sys_proc_exec_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char data_l_[PADL_(const void *)]; const void * data; char data_r_[PADR_(const void *)];
@ -317,7 +309,6 @@ int cloudabi_sys_mem_protect(struct thread *, struct cloudabi_sys_mem_protect_ar
int cloudabi_sys_mem_sync(struct thread *, struct cloudabi_sys_mem_sync_args *);
int cloudabi_sys_mem_unmap(struct thread *, struct cloudabi_sys_mem_unmap_args *);
int cloudabi32_sys_poll(struct thread *, struct cloudabi32_sys_poll_args *);
int cloudabi32_sys_poll_fd(struct thread *, struct cloudabi32_sys_poll_fd_args *);
int cloudabi_sys_proc_exec(struct thread *, struct cloudabi_sys_proc_exec_args *);
int cloudabi_sys_proc_exit(struct thread *, struct cloudabi_sys_proc_exit_args *);
int cloudabi_sys_proc_fork(struct thread *, struct cloudabi_sys_proc_fork_args *);
@ -403,7 +394,6 @@ int cloudabi_sys_thread_yield(struct thread *, struct cloudabi_sys_thread_yield_
#define CLOUDABI32_SYS_AUE_cloudabi_sys_mem_sync AUE_NULL
#define CLOUDABI32_SYS_AUE_cloudabi_sys_mem_unmap AUE_NULL
#define CLOUDABI32_SYS_AUE_cloudabi32_sys_poll AUE_NULL
#define CLOUDABI32_SYS_AUE_cloudabi32_sys_poll_fd AUE_NULL
#define CLOUDABI32_SYS_AUE_cloudabi_sys_proc_exec AUE_NULL
#define CLOUDABI32_SYS_AUE_cloudabi_sys_proc_exit AUE_NULL
#define CLOUDABI32_SYS_AUE_cloudabi_sys_proc_fork AUE_NULL

View File

@ -43,16 +43,15 @@
#define CLOUDABI32_SYS_cloudabi_sys_mem_sync 35
#define CLOUDABI32_SYS_cloudabi_sys_mem_unmap 36
#define CLOUDABI32_SYS_cloudabi32_sys_poll 37
#define CLOUDABI32_SYS_cloudabi32_sys_poll_fd 38
#define CLOUDABI32_SYS_cloudabi_sys_proc_exec 39
#define CLOUDABI32_SYS_cloudabi_sys_proc_exit 40
#define CLOUDABI32_SYS_cloudabi_sys_proc_fork 41
#define CLOUDABI32_SYS_cloudabi_sys_proc_raise 42
#define CLOUDABI32_SYS_cloudabi_sys_random_get 43
#define CLOUDABI32_SYS_cloudabi32_sys_sock_recv 44
#define CLOUDABI32_SYS_cloudabi32_sys_sock_send 45
#define CLOUDABI32_SYS_cloudabi_sys_sock_shutdown 46
#define CLOUDABI32_SYS_cloudabi32_sys_thread_create 47
#define CLOUDABI32_SYS_cloudabi_sys_thread_exit 48
#define CLOUDABI32_SYS_cloudabi_sys_thread_yield 49
#define CLOUDABI32_SYS_MAXSYSCALL 50
#define CLOUDABI32_SYS_cloudabi_sys_proc_exec 38
#define CLOUDABI32_SYS_cloudabi_sys_proc_exit 39
#define CLOUDABI32_SYS_cloudabi_sys_proc_fork 40
#define CLOUDABI32_SYS_cloudabi_sys_proc_raise 41
#define CLOUDABI32_SYS_cloudabi_sys_random_get 42
#define CLOUDABI32_SYS_cloudabi32_sys_sock_recv 43
#define CLOUDABI32_SYS_cloudabi32_sys_sock_send 44
#define CLOUDABI32_SYS_cloudabi_sys_sock_shutdown 45
#define CLOUDABI32_SYS_cloudabi32_sys_thread_create 46
#define CLOUDABI32_SYS_cloudabi_sys_thread_exit 47
#define CLOUDABI32_SYS_cloudabi_sys_thread_yield 48
#define CLOUDABI32_SYS_MAXSYSCALL 49

View File

@ -44,16 +44,15 @@ const char *cloudabi32_syscallnames[] = {
"cloudabi_sys_mem_sync", /* 35 = cloudabi_sys_mem_sync */
"cloudabi_sys_mem_unmap", /* 36 = cloudabi_sys_mem_unmap */
"cloudabi32_sys_poll", /* 37 = cloudabi32_sys_poll */
"cloudabi32_sys_poll_fd", /* 38 = cloudabi32_sys_poll_fd */
"cloudabi_sys_proc_exec", /* 39 = cloudabi_sys_proc_exec */
"cloudabi_sys_proc_exit", /* 40 = cloudabi_sys_proc_exit */
"cloudabi_sys_proc_fork", /* 41 = cloudabi_sys_proc_fork */
"cloudabi_sys_proc_raise", /* 42 = cloudabi_sys_proc_raise */
"cloudabi_sys_random_get", /* 43 = cloudabi_sys_random_get */
"cloudabi32_sys_sock_recv", /* 44 = cloudabi32_sys_sock_recv */
"cloudabi32_sys_sock_send", /* 45 = cloudabi32_sys_sock_send */
"cloudabi_sys_sock_shutdown", /* 46 = cloudabi_sys_sock_shutdown */
"cloudabi32_sys_thread_create", /* 47 = cloudabi32_sys_thread_create */
"cloudabi_sys_thread_exit", /* 48 = cloudabi_sys_thread_exit */
"cloudabi_sys_thread_yield", /* 49 = cloudabi_sys_thread_yield */
"cloudabi_sys_proc_exec", /* 38 = cloudabi_sys_proc_exec */
"cloudabi_sys_proc_exit", /* 39 = cloudabi_sys_proc_exit */
"cloudabi_sys_proc_fork", /* 40 = cloudabi_sys_proc_fork */
"cloudabi_sys_proc_raise", /* 41 = cloudabi_sys_proc_raise */
"cloudabi_sys_random_get", /* 42 = cloudabi_sys_random_get */
"cloudabi32_sys_sock_recv", /* 43 = cloudabi32_sys_sock_recv */
"cloudabi32_sys_sock_send", /* 44 = cloudabi32_sys_sock_send */
"cloudabi_sys_sock_shutdown", /* 45 = cloudabi_sys_sock_shutdown */
"cloudabi32_sys_thread_create", /* 46 = cloudabi32_sys_thread_create */
"cloudabi_sys_thread_exit", /* 47 = cloudabi_sys_thread_exit */
"cloudabi_sys_thread_yield", /* 48 = cloudabi_sys_thread_yield */
};

View File

@ -52,16 +52,15 @@ struct sysent cloudabi32_sysent[] = {
{ AS(cloudabi_sys_mem_sync_args), (sy_call_t *)cloudabi_sys_mem_sync, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 35 = cloudabi_sys_mem_sync */
{ AS(cloudabi_sys_mem_unmap_args), (sy_call_t *)cloudabi_sys_mem_unmap, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 36 = cloudabi_sys_mem_unmap */
{ AS(cloudabi32_sys_poll_args), (sy_call_t *)cloudabi32_sys_poll, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 37 = cloudabi32_sys_poll */
{ AS(cloudabi32_sys_poll_fd_args), (sy_call_t *)cloudabi32_sys_poll_fd, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 38 = cloudabi32_sys_poll_fd */
{ AS(cloudabi_sys_proc_exec_args), (sy_call_t *)cloudabi_sys_proc_exec, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 39 = cloudabi_sys_proc_exec */
{ AS(cloudabi_sys_proc_exit_args), (sy_call_t *)cloudabi_sys_proc_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 40 = cloudabi_sys_proc_exit */
{ 0, (sy_call_t *)cloudabi_sys_proc_fork, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 41 = cloudabi_sys_proc_fork */
{ AS(cloudabi_sys_proc_raise_args), (sy_call_t *)cloudabi_sys_proc_raise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 42 = cloudabi_sys_proc_raise */
{ AS(cloudabi_sys_random_get_args), (sy_call_t *)cloudabi_sys_random_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 43 = cloudabi_sys_random_get */
{ AS(cloudabi32_sys_sock_recv_args), (sy_call_t *)cloudabi32_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 44 = cloudabi32_sys_sock_recv */
{ AS(cloudabi32_sys_sock_send_args), (sy_call_t *)cloudabi32_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 45 = cloudabi32_sys_sock_send */
{ AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 46 = cloudabi_sys_sock_shutdown */
{ AS(cloudabi32_sys_thread_create_args), (sy_call_t *)cloudabi32_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 47 = cloudabi32_sys_thread_create */
{ AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 48 = cloudabi_sys_thread_exit */
{ 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 49 = cloudabi_sys_thread_yield */
{ AS(cloudabi_sys_proc_exec_args), (sy_call_t *)cloudabi_sys_proc_exec, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 38 = cloudabi_sys_proc_exec */
{ AS(cloudabi_sys_proc_exit_args), (sy_call_t *)cloudabi_sys_proc_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 39 = cloudabi_sys_proc_exit */
{ 0, (sy_call_t *)cloudabi_sys_proc_fork, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 40 = cloudabi_sys_proc_fork */
{ AS(cloudabi_sys_proc_raise_args), (sy_call_t *)cloudabi_sys_proc_raise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 41 = cloudabi_sys_proc_raise */
{ AS(cloudabi_sys_random_get_args), (sy_call_t *)cloudabi_sys_random_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 42 = cloudabi_sys_random_get */
{ AS(cloudabi32_sys_sock_recv_args), (sy_call_t *)cloudabi32_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 43 = cloudabi32_sys_sock_recv */
{ AS(cloudabi32_sys_sock_send_args), (sy_call_t *)cloudabi32_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 44 = cloudabi32_sys_sock_send */
{ AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 45 = cloudabi_sys_sock_shutdown */
{ AS(cloudabi32_sys_thread_create_args), (sy_call_t *)cloudabi32_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 46 = cloudabi32_sys_thread_create */
{ AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 47 = cloudabi_sys_thread_exit */
{ 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 48 = cloudabi_sys_thread_yield */
};

View File

@ -357,20 +357,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
*n_args = 3;
break;
}
/* cloudabi32_sys_poll_fd */
case 38: {
struct cloudabi32_sys_poll_fd_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->in; /* const cloudabi32_subscription_t * */
uarg[2] = p->in_len; /* size_t */
uarg[3] = (intptr_t) p->out; /* cloudabi32_event_t * */
uarg[4] = p->out_len; /* size_t */
uarg[5] = (intptr_t) p->timeout; /* const cloudabi32_subscription_t * */
*n_args = 6;
break;
}
/* cloudabi_sys_proc_exec */
case 39: {
case 38: {
struct cloudabi_sys_proc_exec_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->data; /* const void * */
@ -381,26 +369,26 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi_sys_proc_exit */
case 40: {
case 39: {
struct cloudabi_sys_proc_exit_args *p = params;
iarg[0] = p->rval; /* cloudabi_exitcode_t */
*n_args = 1;
break;
}
/* cloudabi_sys_proc_fork */
case 41: {
case 40: {
*n_args = 0;
break;
}
/* cloudabi_sys_proc_raise */
case 42: {
case 41: {
struct cloudabi_sys_proc_raise_args *p = params;
iarg[0] = p->sig; /* cloudabi_signal_t */
*n_args = 1;
break;
}
/* cloudabi_sys_random_get */
case 43: {
case 42: {
struct cloudabi_sys_random_get_args *p = params;
uarg[0] = (intptr_t) p->buf; /* void * */
uarg[1] = p->buf_len; /* size_t */
@ -408,7 +396,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi32_sys_sock_recv */
case 44: {
case 43: {
struct cloudabi32_sys_sock_recv_args *p = params;
iarg[0] = p->sock; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->in; /* const cloudabi32_recv_in_t * */
@ -417,7 +405,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi32_sys_sock_send */
case 45: {
case 44: {
struct cloudabi32_sys_sock_send_args *p = params;
iarg[0] = p->sock; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->in; /* const cloudabi32_send_in_t * */
@ -426,7 +414,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi_sys_sock_shutdown */
case 46: {
case 45: {
struct cloudabi_sys_sock_shutdown_args *p = params;
iarg[0] = p->sock; /* cloudabi_fd_t */
iarg[1] = p->how; /* cloudabi_sdflags_t */
@ -434,14 +422,14 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi32_sys_thread_create */
case 47: {
case 46: {
struct cloudabi32_sys_thread_create_args *p = params;
uarg[0] = (intptr_t) p->attr; /* cloudabi32_threadattr_t * */
*n_args = 1;
break;
}
/* cloudabi_sys_thread_exit */
case 48: {
case 47: {
struct cloudabi_sys_thread_exit_args *p = params;
uarg[0] = (intptr_t) p->lock; /* cloudabi_lock_t * */
iarg[1] = p->scope; /* cloudabi_scope_t */
@ -449,7 +437,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi_sys_thread_yield */
case 49: {
case 48: {
*n_args = 0;
break;
}
@ -1083,33 +1071,8 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break;
};
break;
/* cloudabi32_sys_poll_fd */
case 38:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
break;
case 1:
p = "userland const cloudabi32_subscription_t *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "userland cloudabi32_event_t *";
break;
case 4:
p = "size_t";
break;
case 5:
p = "userland const cloudabi32_subscription_t *";
break;
default:
break;
};
break;
/* cloudabi_sys_proc_exec */
case 39:
case 38:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
@ -1131,7 +1094,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_proc_exit */
case 40:
case 39:
switch(ndx) {
case 0:
p = "cloudabi_exitcode_t";
@ -1141,10 +1104,10 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_proc_fork */
case 41:
case 40:
break;
/* cloudabi_sys_proc_raise */
case 42:
case 41:
switch(ndx) {
case 0:
p = "cloudabi_signal_t";
@ -1154,7 +1117,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_random_get */
case 43:
case 42:
switch(ndx) {
case 0:
p = "userland void *";
@ -1167,7 +1130,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi32_sys_sock_recv */
case 44:
case 43:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
@ -1183,7 +1146,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi32_sys_sock_send */
case 45:
case 44:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
@ -1199,7 +1162,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_sock_shutdown */
case 46:
case 45:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
@ -1212,7 +1175,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi32_sys_thread_create */
case 47:
case 46:
switch(ndx) {
case 0:
p = "userland cloudabi32_threadattr_t *";
@ -1222,7 +1185,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_thread_exit */
case 48:
case 47:
switch(ndx) {
case 0:
p = "userland cloudabi_lock_t *";
@ -1235,7 +1198,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_thread_yield */
case 49:
case 48:
break;
default:
break;
@ -1438,60 +1401,55 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
if (ndx == 0 || ndx == 1)
p = "size_t";
break;
/* cloudabi32_sys_poll_fd */
case 38:
if (ndx == 0 || ndx == 1)
p = "size_t";
break;
/* cloudabi_sys_proc_exec */
case 39:
case 38:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_proc_exit */
case 40:
case 39:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_proc_fork */
case 41:
case 40:
/* cloudabi_sys_proc_raise */
case 42:
case 41:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_random_get */
case 43:
case 42:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi32_sys_sock_recv */
case 44:
case 43:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi32_sys_sock_send */
case 45:
case 44:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_sock_shutdown */
case 46:
case 45:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi32_sys_thread_create */
case 47:
case 46:
if (ndx == 0 || ndx == 1)
p = "cloudabi_tid_t";
break;
/* cloudabi_sys_thread_exit */
case 48:
case 47:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_thread_yield */
case 49:
case 48:
default:
break;
};

View File

@ -79,7 +79,6 @@ convert_signal(int sig)
struct cloudabi64_kevent_args {
const cloudabi64_subscription_t *in;
cloudabi64_event_t *out;
bool once;
};
/* Converts CloudABI's subscription objects to FreeBSD's struct kevent. */
@ -124,9 +123,7 @@ cloudabi64_kevent_copyin(void *arg, struct kevent *kevp, int count)
case CLOUDABI_EVENTTYPE_FD_READ:
kevp->filter = EVFILT_READ;
kevp->ident = sub.fd_readwrite.fd;
if ((sub.fd_readwrite.flags &
CLOUDABI_SUBSCRIPTION_FD_READWRITE_POLL) != 0)
kevp->fflags = NOTE_FILE_POLL;
kevp->fflags = NOTE_FILE_POLL;
break;
case CLOUDABI_EVENTTYPE_FD_WRITE:
kevp->filter = EVFILT_WRITE;
@ -138,24 +135,7 @@ cloudabi64_kevent_copyin(void *arg, struct kevent *kevp, int count)
kevp->fflags = NOTE_EXIT;
break;
}
if (args->once) {
/* Ignore flags. Simply use oneshot mode. */
kevp->flags = EV_ADD | EV_ONESHOT;
} else {
/* Translate flags. */
if ((sub.flags & CLOUDABI_SUBSCRIPTION_ADD) != 0)
kevp->flags |= EV_ADD;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_CLEAR) != 0)
kevp->flags |= EV_CLEAR;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_DELETE) != 0)
kevp->flags |= EV_DELETE;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_DISABLE) != 0)
kevp->flags |= EV_DISABLE;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_ENABLE) != 0)
kevp->flags |= EV_ENABLE;
if ((sub.flags & CLOUDABI_SUBSCRIPTION_ONESHOT) != 0)
kevp->flags |= EV_ONESHOT;
}
kevp->flags = EV_ADD | EV_ONESHOT;
++kevp;
}
return (0);
@ -238,7 +218,6 @@ cloudabi64_sys_poll(struct thread *td, struct cloudabi64_sys_poll_args *uap)
struct cloudabi64_kevent_args args = {
.in = uap->in,
.out = uap->out,
.once = true,
};
struct kevent_copyops copyops = {
.k_copyin = cloudabi64_kevent_copyin,
@ -369,40 +348,3 @@ cloudabi64_sys_poll(struct thread *td, struct cloudabi64_sys_poll_args *uap)
return (kern_kevent_anonymous(td, uap->nsubscriptions, &copyops));
}
int
cloudabi64_sys_poll_fd(struct thread *td,
struct cloudabi64_sys_poll_fd_args *uap)
{
struct cloudabi64_kevent_args args = {
.in = uap->in,
.out = uap->out,
.once = false,
};
struct kevent_copyops copyops = {
.k_copyin = cloudabi64_kevent_copyin,
.k_copyout = cloudabi64_kevent_copyout,
.arg = &args,
};
cloudabi64_subscription_t subtimo;
struct timespec timeout;
int error;
if (uap->timeout != NULL) {
/* Poll with a timeout. */
error = copyin(uap->timeout, &subtimo, sizeof(subtimo));
if (error != 0)
return (error);
if (subtimo.type != CLOUDABI_EVENTTYPE_CLOCK ||
subtimo.clock.flags != 0)
return (EINVAL);
timeout.tv_sec = subtimo.clock.timeout / 1000000000;
timeout.tv_nsec = subtimo.clock.timeout % 1000000000;
return (kern_kevent(td, uap->fd, uap->in_len, uap->out_len,
&copyops, &timeout));
} else {
/* Poll without a timeout. */
return (kern_kevent(td, uap->fd, uap->in_len, uap->out_len,
&copyops, NULL));
}
}

View File

@ -227,14 +227,6 @@ struct cloudabi64_sys_poll_args {
char out_l_[PADL_(cloudabi64_event_t *)]; cloudabi64_event_t * out; char out_r_[PADR_(cloudabi64_event_t *)];
char nsubscriptions_l_[PADL_(size_t)]; size_t nsubscriptions; char nsubscriptions_r_[PADR_(size_t)];
};
struct cloudabi64_sys_poll_fd_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char in_l_[PADL_(const cloudabi64_subscription_t *)]; const cloudabi64_subscription_t * in; char in_r_[PADR_(const cloudabi64_subscription_t *)];
char in_len_l_[PADL_(size_t)]; size_t in_len; char in_len_r_[PADR_(size_t)];
char out_l_[PADL_(cloudabi64_event_t *)]; cloudabi64_event_t * out; char out_r_[PADR_(cloudabi64_event_t *)];
char out_len_l_[PADL_(size_t)]; size_t out_len; char out_len_r_[PADR_(size_t)];
char timeout_l_[PADL_(const cloudabi64_subscription_t *)]; const cloudabi64_subscription_t * timeout; char timeout_r_[PADR_(const cloudabi64_subscription_t *)];
};
struct cloudabi_sys_proc_exec_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char data_l_[PADL_(const void *)]; const void * data; char data_r_[PADR_(const void *)];
@ -317,7 +309,6 @@ int cloudabi_sys_mem_protect(struct thread *, struct cloudabi_sys_mem_protect_ar
int cloudabi_sys_mem_sync(struct thread *, struct cloudabi_sys_mem_sync_args *);
int cloudabi_sys_mem_unmap(struct thread *, struct cloudabi_sys_mem_unmap_args *);
int cloudabi64_sys_poll(struct thread *, struct cloudabi64_sys_poll_args *);
int cloudabi64_sys_poll_fd(struct thread *, struct cloudabi64_sys_poll_fd_args *);
int cloudabi_sys_proc_exec(struct thread *, struct cloudabi_sys_proc_exec_args *);
int cloudabi_sys_proc_exit(struct thread *, struct cloudabi_sys_proc_exit_args *);
int cloudabi_sys_proc_fork(struct thread *, struct cloudabi_sys_proc_fork_args *);
@ -403,7 +394,6 @@ int cloudabi_sys_thread_yield(struct thread *, struct cloudabi_sys_thread_yield_
#define CLOUDABI64_SYS_AUE_cloudabi_sys_mem_sync AUE_NULL
#define CLOUDABI64_SYS_AUE_cloudabi_sys_mem_unmap AUE_NULL
#define CLOUDABI64_SYS_AUE_cloudabi64_sys_poll AUE_NULL
#define CLOUDABI64_SYS_AUE_cloudabi64_sys_poll_fd AUE_NULL
#define CLOUDABI64_SYS_AUE_cloudabi_sys_proc_exec AUE_NULL
#define CLOUDABI64_SYS_AUE_cloudabi_sys_proc_exit AUE_NULL
#define CLOUDABI64_SYS_AUE_cloudabi_sys_proc_fork AUE_NULL

View File

@ -43,16 +43,15 @@
#define CLOUDABI64_SYS_cloudabi_sys_mem_sync 35
#define CLOUDABI64_SYS_cloudabi_sys_mem_unmap 36
#define CLOUDABI64_SYS_cloudabi64_sys_poll 37
#define CLOUDABI64_SYS_cloudabi64_sys_poll_fd 38
#define CLOUDABI64_SYS_cloudabi_sys_proc_exec 39
#define CLOUDABI64_SYS_cloudabi_sys_proc_exit 40
#define CLOUDABI64_SYS_cloudabi_sys_proc_fork 41
#define CLOUDABI64_SYS_cloudabi_sys_proc_raise 42
#define CLOUDABI64_SYS_cloudabi_sys_random_get 43
#define CLOUDABI64_SYS_cloudabi64_sys_sock_recv 44
#define CLOUDABI64_SYS_cloudabi64_sys_sock_send 45
#define CLOUDABI64_SYS_cloudabi_sys_sock_shutdown 46
#define CLOUDABI64_SYS_cloudabi64_sys_thread_create 47
#define CLOUDABI64_SYS_cloudabi_sys_thread_exit 48
#define CLOUDABI64_SYS_cloudabi_sys_thread_yield 49
#define CLOUDABI64_SYS_MAXSYSCALL 50
#define CLOUDABI64_SYS_cloudabi_sys_proc_exec 38
#define CLOUDABI64_SYS_cloudabi_sys_proc_exit 39
#define CLOUDABI64_SYS_cloudabi_sys_proc_fork 40
#define CLOUDABI64_SYS_cloudabi_sys_proc_raise 41
#define CLOUDABI64_SYS_cloudabi_sys_random_get 42
#define CLOUDABI64_SYS_cloudabi64_sys_sock_recv 43
#define CLOUDABI64_SYS_cloudabi64_sys_sock_send 44
#define CLOUDABI64_SYS_cloudabi_sys_sock_shutdown 45
#define CLOUDABI64_SYS_cloudabi64_sys_thread_create 46
#define CLOUDABI64_SYS_cloudabi_sys_thread_exit 47
#define CLOUDABI64_SYS_cloudabi_sys_thread_yield 48
#define CLOUDABI64_SYS_MAXSYSCALL 49

View File

@ -44,16 +44,15 @@ const char *cloudabi64_syscallnames[] = {
"cloudabi_sys_mem_sync", /* 35 = cloudabi_sys_mem_sync */
"cloudabi_sys_mem_unmap", /* 36 = cloudabi_sys_mem_unmap */
"cloudabi64_sys_poll", /* 37 = cloudabi64_sys_poll */
"cloudabi64_sys_poll_fd", /* 38 = cloudabi64_sys_poll_fd */
"cloudabi_sys_proc_exec", /* 39 = cloudabi_sys_proc_exec */
"cloudabi_sys_proc_exit", /* 40 = cloudabi_sys_proc_exit */
"cloudabi_sys_proc_fork", /* 41 = cloudabi_sys_proc_fork */
"cloudabi_sys_proc_raise", /* 42 = cloudabi_sys_proc_raise */
"cloudabi_sys_random_get", /* 43 = cloudabi_sys_random_get */
"cloudabi64_sys_sock_recv", /* 44 = cloudabi64_sys_sock_recv */
"cloudabi64_sys_sock_send", /* 45 = cloudabi64_sys_sock_send */
"cloudabi_sys_sock_shutdown", /* 46 = cloudabi_sys_sock_shutdown */
"cloudabi64_sys_thread_create", /* 47 = cloudabi64_sys_thread_create */
"cloudabi_sys_thread_exit", /* 48 = cloudabi_sys_thread_exit */
"cloudabi_sys_thread_yield", /* 49 = cloudabi_sys_thread_yield */
"cloudabi_sys_proc_exec", /* 38 = cloudabi_sys_proc_exec */
"cloudabi_sys_proc_exit", /* 39 = cloudabi_sys_proc_exit */
"cloudabi_sys_proc_fork", /* 40 = cloudabi_sys_proc_fork */
"cloudabi_sys_proc_raise", /* 41 = cloudabi_sys_proc_raise */
"cloudabi_sys_random_get", /* 42 = cloudabi_sys_random_get */
"cloudabi64_sys_sock_recv", /* 43 = cloudabi64_sys_sock_recv */
"cloudabi64_sys_sock_send", /* 44 = cloudabi64_sys_sock_send */
"cloudabi_sys_sock_shutdown", /* 45 = cloudabi_sys_sock_shutdown */
"cloudabi64_sys_thread_create", /* 46 = cloudabi64_sys_thread_create */
"cloudabi_sys_thread_exit", /* 47 = cloudabi_sys_thread_exit */
"cloudabi_sys_thread_yield", /* 48 = cloudabi_sys_thread_yield */
};

View File

@ -52,16 +52,15 @@ struct sysent cloudabi64_sysent[] = {
{ AS(cloudabi_sys_mem_sync_args), (sy_call_t *)cloudabi_sys_mem_sync, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 35 = cloudabi_sys_mem_sync */
{ AS(cloudabi_sys_mem_unmap_args), (sy_call_t *)cloudabi_sys_mem_unmap, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 36 = cloudabi_sys_mem_unmap */
{ AS(cloudabi64_sys_poll_args), (sy_call_t *)cloudabi64_sys_poll, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 37 = cloudabi64_sys_poll */
{ AS(cloudabi64_sys_poll_fd_args), (sy_call_t *)cloudabi64_sys_poll_fd, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 38 = cloudabi64_sys_poll_fd */
{ AS(cloudabi_sys_proc_exec_args), (sy_call_t *)cloudabi_sys_proc_exec, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 39 = cloudabi_sys_proc_exec */
{ AS(cloudabi_sys_proc_exit_args), (sy_call_t *)cloudabi_sys_proc_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 40 = cloudabi_sys_proc_exit */
{ 0, (sy_call_t *)cloudabi_sys_proc_fork, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 41 = cloudabi_sys_proc_fork */
{ AS(cloudabi_sys_proc_raise_args), (sy_call_t *)cloudabi_sys_proc_raise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 42 = cloudabi_sys_proc_raise */
{ AS(cloudabi_sys_random_get_args), (sy_call_t *)cloudabi_sys_random_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 43 = cloudabi_sys_random_get */
{ AS(cloudabi64_sys_sock_recv_args), (sy_call_t *)cloudabi64_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 44 = cloudabi64_sys_sock_recv */
{ AS(cloudabi64_sys_sock_send_args), (sy_call_t *)cloudabi64_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 45 = cloudabi64_sys_sock_send */
{ AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 46 = cloudabi_sys_sock_shutdown */
{ AS(cloudabi64_sys_thread_create_args), (sy_call_t *)cloudabi64_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 47 = cloudabi64_sys_thread_create */
{ AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 48 = cloudabi_sys_thread_exit */
{ 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 49 = cloudabi_sys_thread_yield */
{ AS(cloudabi_sys_proc_exec_args), (sy_call_t *)cloudabi_sys_proc_exec, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 38 = cloudabi_sys_proc_exec */
{ AS(cloudabi_sys_proc_exit_args), (sy_call_t *)cloudabi_sys_proc_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 39 = cloudabi_sys_proc_exit */
{ 0, (sy_call_t *)cloudabi_sys_proc_fork, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 40 = cloudabi_sys_proc_fork */
{ AS(cloudabi_sys_proc_raise_args), (sy_call_t *)cloudabi_sys_proc_raise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 41 = cloudabi_sys_proc_raise */
{ AS(cloudabi_sys_random_get_args), (sy_call_t *)cloudabi_sys_random_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 42 = cloudabi_sys_random_get */
{ AS(cloudabi64_sys_sock_recv_args), (sy_call_t *)cloudabi64_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 43 = cloudabi64_sys_sock_recv */
{ AS(cloudabi64_sys_sock_send_args), (sy_call_t *)cloudabi64_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 44 = cloudabi64_sys_sock_send */
{ AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 45 = cloudabi_sys_sock_shutdown */
{ AS(cloudabi64_sys_thread_create_args), (sy_call_t *)cloudabi64_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 46 = cloudabi64_sys_thread_create */
{ AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 47 = cloudabi_sys_thread_exit */
{ 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 48 = cloudabi_sys_thread_yield */
};

View File

@ -357,20 +357,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
*n_args = 3;
break;
}
/* cloudabi64_sys_poll_fd */
case 38: {
struct cloudabi64_sys_poll_fd_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->in; /* const cloudabi64_subscription_t * */
uarg[2] = p->in_len; /* size_t */
uarg[3] = (intptr_t) p->out; /* cloudabi64_event_t * */
uarg[4] = p->out_len; /* size_t */
uarg[5] = (intptr_t) p->timeout; /* const cloudabi64_subscription_t * */
*n_args = 6;
break;
}
/* cloudabi_sys_proc_exec */
case 39: {
case 38: {
struct cloudabi_sys_proc_exec_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->data; /* const void * */
@ -381,26 +369,26 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi_sys_proc_exit */
case 40: {
case 39: {
struct cloudabi_sys_proc_exit_args *p = params;
iarg[0] = p->rval; /* cloudabi_exitcode_t */
*n_args = 1;
break;
}
/* cloudabi_sys_proc_fork */
case 41: {
case 40: {
*n_args = 0;
break;
}
/* cloudabi_sys_proc_raise */
case 42: {
case 41: {
struct cloudabi_sys_proc_raise_args *p = params;
iarg[0] = p->sig; /* cloudabi_signal_t */
*n_args = 1;
break;
}
/* cloudabi_sys_random_get */
case 43: {
case 42: {
struct cloudabi_sys_random_get_args *p = params;
uarg[0] = (intptr_t) p->buf; /* void * */
uarg[1] = p->buf_len; /* size_t */
@ -408,7 +396,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi64_sys_sock_recv */
case 44: {
case 43: {
struct cloudabi64_sys_sock_recv_args *p = params;
iarg[0] = p->sock; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->in; /* const cloudabi64_recv_in_t * */
@ -417,7 +405,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi64_sys_sock_send */
case 45: {
case 44: {
struct cloudabi64_sys_sock_send_args *p = params;
iarg[0] = p->sock; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->in; /* const cloudabi64_send_in_t * */
@ -426,7 +414,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi_sys_sock_shutdown */
case 46: {
case 45: {
struct cloudabi_sys_sock_shutdown_args *p = params;
iarg[0] = p->sock; /* cloudabi_fd_t */
iarg[1] = p->how; /* cloudabi_sdflags_t */
@ -434,14 +422,14 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi64_sys_thread_create */
case 47: {
case 46: {
struct cloudabi64_sys_thread_create_args *p = params;
uarg[0] = (intptr_t) p->attr; /* cloudabi64_threadattr_t * */
*n_args = 1;
break;
}
/* cloudabi_sys_thread_exit */
case 48: {
case 47: {
struct cloudabi_sys_thread_exit_args *p = params;
uarg[0] = (intptr_t) p->lock; /* cloudabi_lock_t * */
iarg[1] = p->scope; /* cloudabi_scope_t */
@ -449,7 +437,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
break;
}
/* cloudabi_sys_thread_yield */
case 49: {
case 48: {
*n_args = 0;
break;
}
@ -1083,33 +1071,8 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break;
};
break;
/* cloudabi64_sys_poll_fd */
case 38:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
break;
case 1:
p = "userland const cloudabi64_subscription_t *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "userland cloudabi64_event_t *";
break;
case 4:
p = "size_t";
break;
case 5:
p = "userland const cloudabi64_subscription_t *";
break;
default:
break;
};
break;
/* cloudabi_sys_proc_exec */
case 39:
case 38:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
@ -1131,7 +1094,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_proc_exit */
case 40:
case 39:
switch(ndx) {
case 0:
p = "cloudabi_exitcode_t";
@ -1141,10 +1104,10 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_proc_fork */
case 41:
case 40:
break;
/* cloudabi_sys_proc_raise */
case 42:
case 41:
switch(ndx) {
case 0:
p = "cloudabi_signal_t";
@ -1154,7 +1117,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_random_get */
case 43:
case 42:
switch(ndx) {
case 0:
p = "userland void *";
@ -1167,7 +1130,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi64_sys_sock_recv */
case 44:
case 43:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
@ -1183,7 +1146,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi64_sys_sock_send */
case 45:
case 44:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
@ -1199,7 +1162,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_sock_shutdown */
case 46:
case 45:
switch(ndx) {
case 0:
p = "cloudabi_fd_t";
@ -1212,7 +1175,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi64_sys_thread_create */
case 47:
case 46:
switch(ndx) {
case 0:
p = "userland cloudabi64_threadattr_t *";
@ -1222,7 +1185,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_thread_exit */
case 48:
case 47:
switch(ndx) {
case 0:
p = "userland cloudabi_lock_t *";
@ -1235,7 +1198,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
};
break;
/* cloudabi_sys_thread_yield */
case 49:
case 48:
break;
default:
break;
@ -1438,60 +1401,55 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
if (ndx == 0 || ndx == 1)
p = "size_t";
break;
/* cloudabi64_sys_poll_fd */
case 38:
if (ndx == 0 || ndx == 1)
p = "size_t";
break;
/* cloudabi_sys_proc_exec */
case 39:
case 38:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_proc_exit */
case 40:
case 39:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_proc_fork */
case 41:
case 40:
/* cloudabi_sys_proc_raise */
case 42:
case 41:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_random_get */
case 43:
case 42:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi64_sys_sock_recv */
case 44:
case 43:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi64_sys_sock_send */
case 45:
case 44:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_sock_shutdown */
case 46:
case 45:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi64_sys_thread_create */
case 47:
case 46:
if (ndx == 0 || ndx == 1)
p = "cloudabi_tid_t";
break;
/* cloudabi_sys_thread_exit */
case 48:
case 47:
if (ndx == 0 || ndx == 1)
p = "void";
break;
/* cloudabi_sys_thread_yield */
case 49:
case 48:
default:
break;
};

View File

@ -156,7 +156,7 @@ _Static_assert(_Alignof(cloudabi32_send_out_t) == 4, "Incorrect layout");
typedef struct {
_Alignas(8) cloudabi_userdata_t userdata;
_Alignas(2) cloudabi_subflags_t flags;
_Alignas(2) uint16_t unused;
_Alignas(1) cloudabi_eventtype_t type;
union {
struct {
@ -186,7 +186,7 @@ typedef struct {
};
} cloudabi32_subscription_t;
_Static_assert(offsetof(cloudabi32_subscription_t, userdata) == 0, "Incorrect layout");
_Static_assert(offsetof(cloudabi32_subscription_t, flags) == 8, "Incorrect layout");
_Static_assert(offsetof(cloudabi32_subscription_t, unused) == 8, "Incorrect layout");
_Static_assert(offsetof(cloudabi32_subscription_t, type) == 10, "Incorrect layout");
_Static_assert(offsetof(cloudabi32_subscription_t, clock.identifier) == 16, "Incorrect layout");
_Static_assert(offsetof(cloudabi32_subscription_t, clock.clock_id) == 24, "Incorrect layout");

View File

@ -156,7 +156,7 @@ _Static_assert(_Alignof(cloudabi64_send_out_t) == 8, "Incorrect layout");
typedef struct {
_Alignas(8) cloudabi_userdata_t userdata;
_Alignas(2) cloudabi_subflags_t flags;
_Alignas(2) uint16_t unused;
_Alignas(1) cloudabi_eventtype_t type;
union {
struct {
@ -186,7 +186,7 @@ typedef struct {
};
} cloudabi64_subscription_t;
_Static_assert(offsetof(cloudabi64_subscription_t, userdata) == 0, "Incorrect layout");
_Static_assert(offsetof(cloudabi64_subscription_t, flags) == 8, "Incorrect layout");
_Static_assert(offsetof(cloudabi64_subscription_t, unused) == 8, "Incorrect layout");
_Static_assert(offsetof(cloudabi64_subscription_t, type) == 10, "Incorrect layout");
_Static_assert(offsetof(cloudabi64_subscription_t, clock.identifier) == 16, "Incorrect layout");
_Static_assert(offsetof(cloudabi64_subscription_t, clock.clock_id) == 24, "Incorrect layout");

View File

@ -59,8 +59,6 @@ typedef uint32_t cloudabi_auxtype_t;
#define CLOUDABI_AT_SYSINFO_EHDR 262
#define CLOUDABI_AT_TID 261
typedef uint32_t cloudabi_backlog_t;
typedef uint32_t cloudabi_clockid_t;
#define CLOUDABI_CLOCK_MONOTONIC 1
#define CLOUDABI_CLOCK_PROCESS_CPUTIME_ID 2
@ -191,7 +189,6 @@ typedef uint8_t cloudabi_filetype_t;
#define CLOUDABI_FILETYPE_BLOCK_DEVICE 16
#define CLOUDABI_FILETYPE_CHARACTER_DEVICE 17
#define CLOUDABI_FILETYPE_DIRECTORY 32
#define CLOUDABI_FILETYPE_POLL 64
#define CLOUDABI_FILETYPE_PROCESS 80
#define CLOUDABI_FILETYPE_REGULAR_FILE 96
#define CLOUDABI_FILETYPE_SHARED_MEMORY 112
@ -276,9 +273,7 @@ typedef uint64_t cloudabi_rights_t;
#define CLOUDABI_RIGHT_MEM_MAP 0x0000000004000000
#define CLOUDABI_RIGHT_MEM_MAP_EXEC 0x0000000008000000
#define CLOUDABI_RIGHT_POLL_FD_READWRITE 0x0000000010000000
#define CLOUDABI_RIGHT_POLL_MODIFY 0x0000000020000000
#define CLOUDABI_RIGHT_POLL_PROC_TERMINATE 0x0000000040000000
#define CLOUDABI_RIGHT_POLL_WAIT 0x0000000080000000
#define CLOUDABI_RIGHT_PROC_EXEC 0x0000000100000000
#define CLOUDABI_RIGHT_SOCK_SHUTDOWN 0x0000008000000000
@ -327,14 +322,6 @@ typedef uint8_t cloudabi_signal_t;
typedef uint16_t cloudabi_subclockflags_t;
#define CLOUDABI_SUBSCRIPTION_CLOCK_ABSTIME 0x0001
typedef uint16_t cloudabi_subflags_t;
#define CLOUDABI_SUBSCRIPTION_ADD 0x0001
#define CLOUDABI_SUBSCRIPTION_CLEAR 0x0002
#define CLOUDABI_SUBSCRIPTION_DELETE 0x0004
#define CLOUDABI_SUBSCRIPTION_DISABLE 0x0008
#define CLOUDABI_SUBSCRIPTION_ENABLE 0x0010
#define CLOUDABI_SUBSCRIPTION_ONESHOT 0x0020
typedef uint16_t cloudabi_subrwflags_t;
#define CLOUDABI_SUBSCRIPTION_FD_READWRITE_POLL 0x0001

View File

@ -353,32 +353,20 @@ ENTRY(cloudabi_sys_poll)
ret
END(cloudabi_sys_poll)
ENTRY(cloudabi_sys_poll_fd)
str x6, [sp, #-8]
mov w8, #38
svc #0
ldr x2, [sp, #-8]
b.cs 1f
str x0, [x2]
mov w0, wzr
1:
ret
END(cloudabi_sys_poll_fd)
ENTRY(cloudabi_sys_proc_exec)
mov w8, #39
mov w8, #38
svc #0
ret
END(cloudabi_sys_proc_exec)
ENTRY(cloudabi_sys_proc_exit)
mov w8, #40
mov w8, #39
svc #0
END(cloudabi_sys_proc_exit)
ENTRY(cloudabi_sys_proc_fork)
stp x0, x1, [sp, #-16]
mov w8, #41
mov w8, #40
svc #0
ldp x2, x3, [sp, #-16]
b.cs 1f
@ -390,38 +378,38 @@ ENTRY(cloudabi_sys_proc_fork)
END(cloudabi_sys_proc_fork)
ENTRY(cloudabi_sys_proc_raise)
mov w8, #42
mov w8, #41
svc #0
ret
END(cloudabi_sys_proc_raise)
ENTRY(cloudabi_sys_random_get)
mov w8, #43
mov w8, #42
svc #0
ret
END(cloudabi_sys_random_get)
ENTRY(cloudabi_sys_sock_recv)
mov w8, #44
mov w8, #43
svc #0
ret
END(cloudabi_sys_sock_recv)
ENTRY(cloudabi_sys_sock_send)
mov w8, #45
mov w8, #44
svc #0
ret
END(cloudabi_sys_sock_send)
ENTRY(cloudabi_sys_sock_shutdown)
mov w8, #46
mov w8, #45
svc #0
ret
END(cloudabi_sys_sock_shutdown)
ENTRY(cloudabi_sys_thread_create)
str x1, [sp, #-8]
mov w8, #47
mov w8, #46
svc #0
ldr x2, [sp, #-8]
b.cs 1f
@ -432,12 +420,12 @@ ENTRY(cloudabi_sys_thread_create)
END(cloudabi_sys_thread_create)
ENTRY(cloudabi_sys_thread_exit)
mov w8, #48
mov w8, #47
svc #0
END(cloudabi_sys_thread_exit)
ENTRY(cloudabi_sys_thread_yield)
mov w8, #49
mov w8, #48
svc #0
ret
END(cloudabi_sys_thread_yield)

View File

@ -320,30 +320,21 @@ ENTRY(cloudabi_sys_poll)
bx lr
END(cloudabi_sys_poll)
ENTRY(cloudabi_sys_poll_fd)
mov ip, #38
swi 0
ldrcc r2, [sp, #8]
strcc r0, [r2]
movcc r0, $0
bx lr
END(cloudabi_sys_poll_fd)
ENTRY(cloudabi_sys_proc_exec)
mov ip, #39
mov ip, #38
swi 0
bx lr
END(cloudabi_sys_proc_exec)
ENTRY(cloudabi_sys_proc_exit)
mov ip, #40
mov ip, #39
swi 0
END(cloudabi_sys_proc_exit)
ENTRY(cloudabi_sys_proc_fork)
str r0, [sp, #-4]
str r1, [sp, #-8]
mov ip, #41
mov ip, #40
swi 0
ldrcc r2, [sp, #-4]
ldrcc r3, [sp, #-8]
@ -354,38 +345,38 @@ ENTRY(cloudabi_sys_proc_fork)
END(cloudabi_sys_proc_fork)
ENTRY(cloudabi_sys_proc_raise)
mov ip, #42
mov ip, #41
swi 0
bx lr
END(cloudabi_sys_proc_raise)
ENTRY(cloudabi_sys_random_get)
mov ip, #43
mov ip, #42
swi 0
bx lr
END(cloudabi_sys_random_get)
ENTRY(cloudabi_sys_sock_recv)
mov ip, #44
mov ip, #43
swi 0
bx lr
END(cloudabi_sys_sock_recv)
ENTRY(cloudabi_sys_sock_send)
mov ip, #45
mov ip, #44
swi 0
bx lr
END(cloudabi_sys_sock_send)
ENTRY(cloudabi_sys_sock_shutdown)
mov ip, #46
mov ip, #45
swi 0
bx lr
END(cloudabi_sys_sock_shutdown)
ENTRY(cloudabi_sys_thread_create)
str r1, [sp, #-4]
mov ip, #47
mov ip, #46
swi 0
ldrcc r2, [sp, #-4]
strcc r0, [r2]
@ -394,12 +385,12 @@ ENTRY(cloudabi_sys_thread_create)
END(cloudabi_sys_thread_create)
ENTRY(cloudabi_sys_thread_exit)
mov ip, #48
mov ip, #47
swi 0
END(cloudabi_sys_thread_exit)
ENTRY(cloudabi_sys_thread_yield)
mov ip, #49
mov ip, #48
swi 0
bx lr
END(cloudabi_sys_thread_yield)

View File

@ -342,30 +342,19 @@ ENTRY(cloudabi_sys_poll)
ret
END(cloudabi_sys_poll)
ENTRY(cloudabi_sys_poll_fd)
mov $38, %eax
int $0x80
jc 1f
mov 28(%esp), %ecx
mov %eax, (%ecx)
xor %eax, %eax
1:
ret
END(cloudabi_sys_poll_fd)
ENTRY(cloudabi_sys_proc_exec)
mov $39, %eax
mov $38, %eax
int $0x80
ret
END(cloudabi_sys_proc_exec)
ENTRY(cloudabi_sys_proc_exit)
mov $40, %eax
mov $39, %eax
int $0x80
END(cloudabi_sys_proc_exit)
ENTRY(cloudabi_sys_proc_fork)
mov $41, %eax
mov $40, %eax
int $0x80
jc 1f
mov 4(%esp), %ecx
@ -378,37 +367,37 @@ ENTRY(cloudabi_sys_proc_fork)
END(cloudabi_sys_proc_fork)
ENTRY(cloudabi_sys_proc_raise)
mov $42, %eax
mov $41, %eax
int $0x80
ret
END(cloudabi_sys_proc_raise)
ENTRY(cloudabi_sys_random_get)
mov $43, %eax
mov $42, %eax
int $0x80
ret
END(cloudabi_sys_random_get)
ENTRY(cloudabi_sys_sock_recv)
mov $44, %eax
mov $43, %eax
int $0x80
ret
END(cloudabi_sys_sock_recv)
ENTRY(cloudabi_sys_sock_send)
mov $45, %eax
mov $44, %eax
int $0x80
ret
END(cloudabi_sys_sock_send)
ENTRY(cloudabi_sys_sock_shutdown)
mov $46, %eax
mov $45, %eax
int $0x80
ret
END(cloudabi_sys_sock_shutdown)
ENTRY(cloudabi_sys_thread_create)
mov $47, %eax
mov $46, %eax
int $0x80
jc 1f
mov 8(%esp), %ecx
@ -419,12 +408,12 @@ ENTRY(cloudabi_sys_thread_create)
END(cloudabi_sys_thread_create)
ENTRY(cloudabi_sys_thread_exit)
mov $48, %eax
mov $47, %eax
int $0x80
END(cloudabi_sys_thread_exit)
ENTRY(cloudabi_sys_thread_yield)
mov $49, %eax
mov $48, %eax
int $0x80
ret
END(cloudabi_sys_thread_yield)

View File

@ -873,40 +873,6 @@ ENTRY(cloudabi_sys_poll)
ret
END(cloudabi_sys_poll)
ENTRY(cloudabi_sys_poll_fd)
push %ebp
mov %esp, %ebp
mov 8(%ebp), %ecx
mov %ecx, -48(%ebp)
mov 12(%ebp), %ecx
mov %ecx, -40(%ebp)
movl $0, -36(%ebp)
mov 16(%ebp), %ecx
mov %ecx, -32(%ebp)
movl $0, -28(%ebp)
mov 20(%ebp), %ecx
mov %ecx, -24(%ebp)
movl $0, -20(%ebp)
mov 24(%ebp), %ecx
mov %ecx, -16(%ebp)
movl $0, -12(%ebp)
mov 28(%ebp), %ecx
mov %ecx, -8(%ebp)
movl $0, -4(%ebp)
mov $38, %eax
mov %ebp, %ecx
sub $48, %ecx
int $0x80
test %eax, %eax
jnz 1f
mov 32(%ebp), %ecx
mov -48(%ebp), %edx
mov %edx, 0(%ecx)
1:
pop %ebp
ret
END(cloudabi_sys_poll_fd)
ENTRY(cloudabi_sys_proc_exec)
push %ebp
mov %esp, %ebp
@ -924,7 +890,7 @@ ENTRY(cloudabi_sys_proc_exec)
mov 24(%ebp), %ecx
mov %ecx, -8(%ebp)
movl $0, -4(%ebp)
mov $39, %eax
mov $38, %eax
mov %ebp, %ecx
sub $40, %ecx
int $0x80
@ -937,7 +903,7 @@ ENTRY(cloudabi_sys_proc_exit)
mov %esp, %ebp
mov 8(%ebp), %ecx
mov %ecx, -16(%ebp)
mov $40, %eax
mov $39, %eax
mov %ebp, %ecx
sub $16, %ecx
int $0x80
@ -946,7 +912,7 @@ END(cloudabi_sys_proc_exit)
ENTRY(cloudabi_sys_proc_fork)
push %ebp
mov %esp, %ebp
mov $41, %eax
mov $40, %eax
mov %ebp, %ecx
sub $16, %ecx
int $0x80
@ -968,7 +934,7 @@ ENTRY(cloudabi_sys_proc_raise)
mov %esp, %ebp
mov 8(%ebp), %ecx
mov %ecx, -16(%ebp)
mov $42, %eax
mov $41, %eax
mov %ebp, %ecx
sub $16, %ecx
int $0x80
@ -985,7 +951,7 @@ ENTRY(cloudabi_sys_random_get)
mov 12(%ebp), %ecx
mov %ecx, -8(%ebp)
movl $0, -4(%ebp)
mov $43, %eax
mov $42, %eax
mov %ebp, %ecx
sub $16, %ecx
int $0x80
@ -1004,7 +970,7 @@ ENTRY(cloudabi_sys_sock_recv)
mov 16(%ebp), %ecx
mov %ecx, -8(%ebp)
movl $0, -4(%ebp)
mov $44, %eax
mov $43, %eax
mov %ebp, %ecx
sub $24, %ecx
int $0x80
@ -1023,7 +989,7 @@ ENTRY(cloudabi_sys_sock_send)
mov 16(%ebp), %ecx
mov %ecx, -8(%ebp)
movl $0, -4(%ebp)
mov $45, %eax
mov $44, %eax
mov %ebp, %ecx
sub $24, %ecx
int $0x80
@ -1038,7 +1004,7 @@ ENTRY(cloudabi_sys_sock_shutdown)
mov %ecx, -16(%ebp)
mov 12(%ebp), %ecx
mov %ecx, -8(%ebp)
mov $46, %eax
mov $45, %eax
mov %ebp, %ecx
sub $16, %ecx
int $0x80
@ -1052,7 +1018,7 @@ ENTRY(cloudabi_sys_thread_create)
mov 8(%ebp), %ecx
mov %ecx, -16(%ebp)
movl $0, -12(%ebp)
mov $47, %eax
mov $46, %eax
mov %ebp, %ecx
sub $16, %ecx
int $0x80
@ -1074,7 +1040,7 @@ ENTRY(cloudabi_sys_thread_exit)
movl $0, -12(%ebp)
mov 12(%ebp), %ecx
mov %ecx, -8(%ebp)
mov $48, %eax
mov $47, %eax
mov %ebp, %ecx
sub $16, %ecx
int $0x80
@ -1083,7 +1049,7 @@ END(cloudabi_sys_thread_exit)
ENTRY(cloudabi_sys_thread_yield)
push %ebp
mov %esp, %ebp
mov $49, %eax
mov $48, %eax
mov %ebp, %ecx
sub $16, %ecx
int $0x80

View File

@ -368,34 +368,22 @@ ENTRY(cloudabi_sys_poll)
ret
END(cloudabi_sys_poll)
ENTRY(cloudabi_sys_poll_fd)
mov %rcx, %r10
mov $38, %eax
syscall
jc 1f
mov 8(%rsp), %rcx
mov %rax, (%rcx)
xor %eax, %eax
1:
ret
END(cloudabi_sys_poll_fd)
ENTRY(cloudabi_sys_proc_exec)
mov %rcx, %r10
mov $39, %eax
mov $38, %eax
syscall
ret
END(cloudabi_sys_proc_exec)
ENTRY(cloudabi_sys_proc_exit)
mov $40, %eax
mov $39, %eax
syscall
END(cloudabi_sys_proc_exit)
ENTRY(cloudabi_sys_proc_fork)
push %rdi
push %rsi
mov $41, %eax
mov $40, %eax
syscall
pop %rsi
pop %rcx
@ -408,38 +396,38 @@ ENTRY(cloudabi_sys_proc_fork)
END(cloudabi_sys_proc_fork)
ENTRY(cloudabi_sys_proc_raise)
mov $42, %eax
mov $41, %eax
syscall
ret
END(cloudabi_sys_proc_raise)
ENTRY(cloudabi_sys_random_get)
mov $43, %eax
mov $42, %eax
syscall
ret
END(cloudabi_sys_random_get)
ENTRY(cloudabi_sys_sock_recv)
mov $44, %eax
mov $43, %eax
syscall
ret
END(cloudabi_sys_sock_recv)
ENTRY(cloudabi_sys_sock_send)
mov $45, %eax
mov $44, %eax
syscall
ret
END(cloudabi_sys_sock_send)
ENTRY(cloudabi_sys_sock_shutdown)
mov $46, %eax
mov $45, %eax
syscall
ret
END(cloudabi_sys_sock_shutdown)
ENTRY(cloudabi_sys_thread_create)
push %rsi
mov $47, %eax
mov $46, %eax
syscall
pop %rcx
jc 1f
@ -450,12 +438,12 @@ ENTRY(cloudabi_sys_thread_create)
END(cloudabi_sys_thread_create)
ENTRY(cloudabi_sys_thread_exit)
mov $48, %eax
mov $47, %eax
syscall
END(cloudabi_sys_thread_exit)
ENTRY(cloudabi_sys_thread_yield)
mov $49, %eax
mov $48, %eax
syscall
ret
END(cloudabi_sys_thread_yield)

View File

@ -231,52 +231,44 @@
cloudabi32_event_t *out, \
size_t nsubscriptions); }
38 AUE_NULL STD { size_t cloudabi32_sys_poll_fd( \
cloudabi_fd_t fd, \
const cloudabi32_subscription_t *in, \
size_t in_len, \
cloudabi32_event_t *out, \
size_t out_len, \
const cloudabi32_subscription_t *timeout); }
39 AUE_NULL STD { void cloudabi_sys_proc_exec( \
38 AUE_NULL STD { void cloudabi_sys_proc_exec( \
cloudabi_fd_t fd, \
const void *data, \
size_t data_len, \
const cloudabi_fd_t *fds, \
size_t fds_len); }
40 AUE_NULL STD { void cloudabi_sys_proc_exit( \
39 AUE_NULL STD { void cloudabi_sys_proc_exit( \
cloudabi_exitcode_t rval); }
41 AUE_NULL STD { void cloudabi_sys_proc_fork(); }
40 AUE_NULL STD { void cloudabi_sys_proc_fork(); }
42 AUE_NULL STD { void cloudabi_sys_proc_raise( \
41 AUE_NULL STD { void cloudabi_sys_proc_raise( \
cloudabi_signal_t sig); }
43 AUE_NULL STD { void cloudabi_sys_random_get( \
42 AUE_NULL STD { void cloudabi_sys_random_get( \
void *buf, \
size_t buf_len); }
44 AUE_NULL STD { void cloudabi32_sys_sock_recv( \
43 AUE_NULL STD { void cloudabi32_sys_sock_recv( \
cloudabi_fd_t sock, \
const cloudabi32_recv_in_t *in, \
cloudabi32_recv_out_t *out); }
45 AUE_NULL STD { void cloudabi32_sys_sock_send( \
44 AUE_NULL STD { void cloudabi32_sys_sock_send( \
cloudabi_fd_t sock, \
const cloudabi32_send_in_t *in, \
cloudabi32_send_out_t *out); }
46 AUE_NULL STD { void cloudabi_sys_sock_shutdown( \
45 AUE_NULL STD { void cloudabi_sys_sock_shutdown( \
cloudabi_fd_t sock, \
cloudabi_sdflags_t how); }
47 AUE_NULL STD { cloudabi_tid_t cloudabi32_sys_thread_create( \
46 AUE_NULL STD { cloudabi_tid_t cloudabi32_sys_thread_create( \
cloudabi32_threadattr_t *attr); }
48 AUE_NULL STD { void cloudabi_sys_thread_exit( \
47 AUE_NULL STD { void cloudabi_sys_thread_exit( \
cloudabi_lock_t *lock, \
cloudabi_scope_t scope); }
49 AUE_NULL STD { void cloudabi_sys_thread_yield(); }
48 AUE_NULL STD { void cloudabi_sys_thread_yield(); }

View File

@ -231,52 +231,44 @@
cloudabi64_event_t *out, \
size_t nsubscriptions); }
38 AUE_NULL STD { size_t cloudabi64_sys_poll_fd( \
cloudabi_fd_t fd, \
const cloudabi64_subscription_t *in, \
size_t in_len, \
cloudabi64_event_t *out, \
size_t out_len, \
const cloudabi64_subscription_t *timeout); }
39 AUE_NULL STD { void cloudabi_sys_proc_exec( \
38 AUE_NULL STD { void cloudabi_sys_proc_exec( \
cloudabi_fd_t fd, \
const void *data, \
size_t data_len, \
const cloudabi_fd_t *fds, \
size_t fds_len); }
40 AUE_NULL STD { void cloudabi_sys_proc_exit( \
39 AUE_NULL STD { void cloudabi_sys_proc_exit( \
cloudabi_exitcode_t rval); }
41 AUE_NULL STD { void cloudabi_sys_proc_fork(); }
40 AUE_NULL STD { void cloudabi_sys_proc_fork(); }
42 AUE_NULL STD { void cloudabi_sys_proc_raise( \
41 AUE_NULL STD { void cloudabi_sys_proc_raise( \
cloudabi_signal_t sig); }
43 AUE_NULL STD { void cloudabi_sys_random_get( \
42 AUE_NULL STD { void cloudabi_sys_random_get( \
void *buf, \
size_t buf_len); }
44 AUE_NULL STD { void cloudabi64_sys_sock_recv( \
43 AUE_NULL STD { void cloudabi64_sys_sock_recv( \
cloudabi_fd_t sock, \
const cloudabi64_recv_in_t *in, \
cloudabi64_recv_out_t *out); }
45 AUE_NULL STD { void cloudabi64_sys_sock_send( \
44 AUE_NULL STD { void cloudabi64_sys_sock_send( \
cloudabi_fd_t sock, \
const cloudabi64_send_in_t *in, \
cloudabi64_send_out_t *out); }
46 AUE_NULL STD { void cloudabi_sys_sock_shutdown( \
45 AUE_NULL STD { void cloudabi_sys_sock_shutdown( \
cloudabi_fd_t sock, \
cloudabi_sdflags_t how); }
47 AUE_NULL STD { cloudabi_tid_t cloudabi64_sys_thread_create( \
46 AUE_NULL STD { cloudabi_tid_t cloudabi64_sys_thread_create( \
cloudabi64_threadattr_t *attr); }
48 AUE_NULL STD { void cloudabi_sys_thread_exit( \
47 AUE_NULL STD { void cloudabi_sys_thread_exit( \
cloudabi_lock_t *lock, \
cloudabi_scope_t scope); }
49 AUE_NULL STD { void cloudabi_sys_thread_yield(); }
48 AUE_NULL STD { void cloudabi_sys_thread_yield(); }

View File

@ -734,7 +734,7 @@ static struct xlat cloudabi_fdsflags[] = {
static struct xlat cloudabi_filetype[] = {
X(FILETYPE_UNKNOWN) X(FILETYPE_BLOCK_DEVICE)
X(FILETYPE_CHARACTER_DEVICE) X(FILETYPE_DIRECTORY)
X(FILETYPE_POLL) X(FILETYPE_PROCESS) X(FILETYPE_REGULAR_FILE)
X(FILETYPE_PROCESS) X(FILETYPE_REGULAR_FILE)
X(FILETYPE_SHARED_MEMORY) X(FILETYPE_SOCKET_DGRAM)
X(FILETYPE_SOCKET_STREAM) X(FILETYPE_SYMBOLIC_LINK)
XEND