summaryrefslogtreecommitdiffstats
path: root/sys/compat/cloudabi32
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2017-04-06 15:10:36 +0000
committered <ed@FreeBSD.org>2017-04-06 15:10:36 +0000
commit9a92d335245044a13a361c9927ac09113ff68488 (patch)
tree12314ff4954fa44cc6fd589d1373fc79e7f5cd64 /sys/compat/cloudabi32
parent8575dbd2dd357f966f2adfcda71f98f1f8992fe1 (diff)
downloadFreeBSD-src-9a92d335245044a13a361c9927ac09113ff68488.zip
FreeBSD-src-9a92d335245044a13a361c9927ac09113ff68488.tar.gz
Bring kernel space CloudABI code in sync with HEAD.
MFC r312353, r312354 and r312355: Sync in the latest CloudABI generated source files. Languages like C++17 and Go provide direct support for slice types: pointer/length pairs. The CloudABI generator now has more complete for this, meaning that for the C binding, pointer/length pairs now use an automatic naming scheme of ${name} and ${name}_len. Apart from this change and some reformatting, the ABI definitions are identical. Binary compatibility is preserved entirely. MFC r315700: Make file descriptor passing work for CloudABI's sendmsg(). Reduce the potential amount of code duplication between cloudabi32 and cloudabi64 by creating a cloudabi_sock_recv() utility function. The cloudabi32 and cloudabi64 modules will then only contain code to convert the iovecs to the native pointer size. In cloudabi_sock_recv(), we can now construct an SCM_RIGHTS cmsghdr in an mbuf and pass that on to kern_sendit(). MFC r315736: Make file descriptor passing for CloudABI's recvmsg() work. Similar to the change for sendmsg(), create a pointer size independent implementation of recvmsg() and let cloudabi32 and cloudabi64 call into it. In case userspace requests one or more file descriptors, call kern_recvit() in such a way that we get the control message headers in an mbuf. Iterate over all of the headers and copy the file descriptors to userspace.
Diffstat (limited to 'sys/compat/cloudabi32')
-rw-r--r--sys/compat/cloudabi32/cloudabi32_fd.c12
-rw-r--r--sys/compat/cloudabi32/cloudabi32_poll.c8
-rw-r--r--sys/compat/cloudabi32/cloudabi32_proto.h92
-rw-r--r--sys/compat/cloudabi32/cloudabi32_sock.c82
-rw-r--r--sys/compat/cloudabi32/cloudabi32_syscall.h2
-rw-r--r--sys/compat/cloudabi32/cloudabi32_syscalls.c2
-rw-r--r--sys/compat/cloudabi32/cloudabi32_sysent.c2
-rw-r--r--sys/compat/cloudabi32/cloudabi32_systrace_args.c90
-rw-r--r--sys/compat/cloudabi32/cloudabi32_thread.c4
9 files changed, 137 insertions, 157 deletions
diff --git a/sys/compat/cloudabi32/cloudabi32_fd.c b/sys/compat/cloudabi32/cloudabi32_fd.c
index 1754c48..19907a9 100644
--- a/sys/compat/cloudabi32/cloudabi32_fd.c
+++ b/sys/compat/cloudabi32/cloudabi32_fd.c
@@ -71,8 +71,8 @@ cloudabi32_copyinuio(const cloudabi32_iovec_t *iovp, size_t iovcnt,
free(uio, M_IOV);
return (error);
}
- iov[i].iov_base = TO_PTR(iovobj.iov_base);
- iov[i].iov_len = iovobj.iov_len;
+ iov[i].iov_base = TO_PTR(iovobj.buf);
+ iov[i].iov_len = iovobj.buf_len;
if (iov[i].iov_len > INT32_MAX - uio->uio_resid) {
free(uio, M_IOV);
return (EINVAL);
@@ -91,7 +91,7 @@ cloudabi32_sys_fd_pread(struct thread *td,
struct uio *uio;
int error;
- error = cloudabi32_copyinuio(uap->iov, uap->iovcnt, &uio);
+ error = cloudabi32_copyinuio(uap->iovs, uap->iovs_len, &uio);
if (error != 0)
return (error);
error = kern_preadv(td, uap->fd, uio, uap->offset);
@@ -106,7 +106,7 @@ cloudabi32_sys_fd_pwrite(struct thread *td,
struct uio *uio;
int error;
- error = cloudabi32_copyinuio(TO_PTR(uap->iov), uap->iovcnt, &uio);
+ error = cloudabi32_copyinuio(TO_PTR(uap->iovs), uap->iovs_len, &uio);
if (error != 0)
return (error);
error = kern_pwritev(td, uap->fd, uio, uap->offset);
@@ -121,7 +121,7 @@ cloudabi32_sys_fd_read(struct thread *td,
struct uio *uio;
int error;
- error = cloudabi32_copyinuio(uap->iov, uap->iovcnt, &uio);
+ error = cloudabi32_copyinuio(uap->iovs, uap->iovs_len, &uio);
if (error != 0)
return (error);
error = kern_readv(td, uap->fd, uio);
@@ -136,7 +136,7 @@ cloudabi32_sys_fd_write(struct thread *td,
struct uio *uio;
int error;
- error = cloudabi32_copyinuio(TO_PTR(uap->iov), uap->iovcnt, &uio);
+ error = cloudabi32_copyinuio(TO_PTR(uap->iovs), uap->iovs_len, &uio);
if (error != 0)
return (error);
error = kern_writev(td, uap->fd, uio);
diff --git a/sys/compat/cloudabi32/cloudabi32_poll.c b/sys/compat/cloudabi32/cloudabi32_poll.c
index 5215580..dfffdc6 100644
--- a/sys/compat/cloudabi32/cloudabi32_poll.c
+++ b/sys/compat/cloudabi32/cloudabi32_poll.c
@@ -398,11 +398,11 @@ cloudabi32_sys_poll_fd(struct thread *td,
return (EINVAL);
timeout.tv_sec = subtimo.clock.timeout / 1000000000;
timeout.tv_nsec = subtimo.clock.timeout % 1000000000;
- return (kern_kevent(td, uap->fd, uap->nin, uap->nout, &copyops,
- &timeout));
+ 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->nin, uap->nout, &copyops,
- NULL));
+ return (kern_kevent(td, uap->fd, uap->in_len, uap->out_len,
+ &copyops, NULL));
}
}
diff --git a/sys/compat/cloudabi32/cloudabi32_proto.h b/sys/compat/cloudabi32/cloudabi32_proto.h
index 3f028d5..ca03f67 100644
--- a/sys/compat/cloudabi32/cloudabi32_proto.h
+++ b/sys/compat/cloudabi32/cloudabi32_proto.h
@@ -3,7 +3,7 @@
*
* DO NOT EDIT-- this file is automatically generated.
* $FreeBSD$
- * created from FreeBSD: head/sys/contrib/cloudabi/syscalls32.master 304563 2016-08-21 15:56:19Z ed
+ * created from FreeBSD: head/sys/contrib/cloudabi/syscalls32.master 312353 2017-01-17 22:03:08Z ed
*/
#ifndef _CLOUDABI32_SYSPROTO_H_
@@ -63,20 +63,20 @@ struct cloudabi_sys_fd_dup_args {
};
struct cloudabi32_sys_fd_pread_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
- char iov_l_[PADL_(const cloudabi32_iovec_t *)]; const cloudabi32_iovec_t * iov; char iov_r_[PADR_(const cloudabi32_iovec_t *)];
- char iovcnt_l_[PADL_(size_t)]; size_t iovcnt; char iovcnt_r_[PADR_(size_t)];
+ char iovs_l_[PADL_(const cloudabi32_iovec_t *)]; const cloudabi32_iovec_t * iovs; char iovs_r_[PADR_(const cloudabi32_iovec_t *)];
+ char iovs_len_l_[PADL_(size_t)]; size_t iovs_len; char iovs_len_r_[PADR_(size_t)];
char offset_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t offset; char offset_r_[PADR_(cloudabi_filesize_t)];
};
struct cloudabi32_sys_fd_pwrite_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
- char iov_l_[PADL_(const cloudabi32_ciovec_t *)]; const cloudabi32_ciovec_t * iov; char iov_r_[PADR_(const cloudabi32_ciovec_t *)];
- char iovcnt_l_[PADL_(size_t)]; size_t iovcnt; char iovcnt_r_[PADR_(size_t)];
+ char iovs_l_[PADL_(const cloudabi32_ciovec_t *)]; const cloudabi32_ciovec_t * iovs; char iovs_r_[PADR_(const cloudabi32_ciovec_t *)];
+ char iovs_len_l_[PADL_(size_t)]; size_t iovs_len; char iovs_len_r_[PADR_(size_t)];
char offset_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t offset; char offset_r_[PADR_(cloudabi_filesize_t)];
};
struct cloudabi32_sys_fd_read_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
- char iov_l_[PADL_(const cloudabi32_iovec_t *)]; const cloudabi32_iovec_t * iov; char iov_r_[PADR_(const cloudabi32_iovec_t *)];
- char iovcnt_l_[PADL_(size_t)]; size_t iovcnt; char iovcnt_r_[PADR_(size_t)];
+ char iovs_l_[PADL_(const cloudabi32_iovec_t *)]; const cloudabi32_iovec_t * iovs; char iovs_r_[PADR_(const cloudabi32_iovec_t *)];
+ char iovs_len_l_[PADL_(size_t)]; size_t iovs_len; char iovs_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_fd_replace_args {
char from_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t from; char from_r_[PADR_(cloudabi_fd_t)];
@@ -101,8 +101,8 @@ struct cloudabi_sys_fd_sync_args {
};
struct cloudabi32_sys_fd_write_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
- char iov_l_[PADL_(const cloudabi32_ciovec_t *)]; const cloudabi32_ciovec_t * iov; char iov_r_[PADR_(const cloudabi32_ciovec_t *)];
- char iovcnt_l_[PADL_(size_t)]; size_t iovcnt; char iovcnt_r_[PADR_(size_t)];
+ char iovs_l_[PADL_(const cloudabi32_ciovec_t *)]; const cloudabi32_ciovec_t * iovs; char iovs_r_[PADR_(const cloudabi32_ciovec_t *)];
+ char iovs_len_l_[PADL_(size_t)]; size_t iovs_len; char iovs_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_file_advise_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
@@ -118,44 +118,44 @@ struct cloudabi_sys_file_allocate_args {
struct cloudabi_sys_file_create_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
- char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
char type_l_[PADL_(cloudabi_filetype_t)]; cloudabi_filetype_t type; char type_r_[PADR_(cloudabi_filetype_t)];
};
struct cloudabi_sys_file_link_args {
char fd1_l_[PADL_(cloudabi_lookup_t)]; cloudabi_lookup_t fd1; char fd1_r_[PADR_(cloudabi_lookup_t)];
char path1_l_[PADL_(const char *)]; const char * path1; char path1_r_[PADR_(const char *)];
- char path1len_l_[PADL_(size_t)]; size_t path1len; char path1len_r_[PADR_(size_t)];
+ char path1_len_l_[PADL_(size_t)]; size_t path1_len; char path1_len_r_[PADR_(size_t)];
char fd2_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd2; char fd2_r_[PADR_(cloudabi_fd_t)];
char path2_l_[PADL_(const char *)]; const char * path2; char path2_r_[PADR_(const char *)];
- char path2len_l_[PADL_(size_t)]; size_t path2len; char path2len_r_[PADR_(size_t)];
+ char path2_len_l_[PADL_(size_t)]; size_t path2_len; char path2_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_file_open_args {
char dirfd_l_[PADL_(cloudabi_lookup_t)]; cloudabi_lookup_t dirfd; char dirfd_r_[PADR_(cloudabi_lookup_t)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
- char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
char oflags_l_[PADL_(cloudabi_oflags_t)]; cloudabi_oflags_t oflags; char oflags_r_[PADR_(cloudabi_oflags_t)];
char fds_l_[PADL_(const cloudabi_fdstat_t *)]; const cloudabi_fdstat_t * fds; char fds_r_[PADR_(const cloudabi_fdstat_t *)];
};
struct cloudabi_sys_file_readdir_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
- char nbyte_l_[PADL_(size_t)]; size_t nbyte; char nbyte_r_[PADR_(size_t)];
+ char buf_len_l_[PADL_(size_t)]; size_t buf_len; char buf_len_r_[PADR_(size_t)];
char cookie_l_[PADL_(cloudabi_dircookie_t)]; cloudabi_dircookie_t cookie; char cookie_r_[PADR_(cloudabi_dircookie_t)];
};
struct cloudabi_sys_file_readlink_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
- char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)];
- char bufsize_l_[PADL_(size_t)]; size_t bufsize; char bufsize_r_[PADR_(size_t)];
+ char buf_len_l_[PADL_(size_t)]; size_t buf_len; char buf_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_file_rename_args {
- char oldfd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t oldfd; char oldfd_r_[PADR_(cloudabi_fd_t)];
- char old_l_[PADL_(const char *)]; const char * old; char old_r_[PADR_(const char *)];
- char oldlen_l_[PADL_(size_t)]; size_t oldlen; char oldlen_r_[PADR_(size_t)];
- char newfd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t newfd; char newfd_r_[PADR_(cloudabi_fd_t)];
- char new_l_[PADL_(const char *)]; const char * new; char new_r_[PADR_(const char *)];
- char newlen_l_[PADL_(size_t)]; size_t newlen; char newlen_r_[PADR_(size_t)];
+ char fd1_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd1; char fd1_r_[PADR_(cloudabi_fd_t)];
+ char path1_l_[PADL_(const char *)]; const char * path1; char path1_r_[PADR_(const char *)];
+ char path1_len_l_[PADL_(size_t)]; size_t path1_len; char path1_len_r_[PADR_(size_t)];
+ char fd2_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd2; char fd2_r_[PADR_(cloudabi_fd_t)];
+ char path2_l_[PADL_(const char *)]; const char * path2; char path2_r_[PADR_(const char *)];
+ char path2_len_l_[PADL_(size_t)]; size_t path2_len; char path2_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_file_stat_fget_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
@@ -169,27 +169,27 @@ struct cloudabi_sys_file_stat_fput_args {
struct cloudabi_sys_file_stat_get_args {
char fd_l_[PADL_(cloudabi_lookup_t)]; cloudabi_lookup_t fd; char fd_r_[PADR_(cloudabi_lookup_t)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
- char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
char buf_l_[PADL_(cloudabi_filestat_t *)]; cloudabi_filestat_t * buf; char buf_r_[PADR_(cloudabi_filestat_t *)];
};
struct cloudabi_sys_file_stat_put_args {
char fd_l_[PADL_(cloudabi_lookup_t)]; cloudabi_lookup_t fd; char fd_r_[PADR_(cloudabi_lookup_t)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
- char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
char buf_l_[PADL_(const cloudabi_filestat_t *)]; const cloudabi_filestat_t * buf; char buf_r_[PADR_(const cloudabi_filestat_t *)];
char flags_l_[PADL_(cloudabi_fsflags_t)]; cloudabi_fsflags_t flags; char flags_r_[PADR_(cloudabi_fsflags_t)];
};
struct cloudabi_sys_file_symlink_args {
char path1_l_[PADL_(const char *)]; const char * path1; char path1_r_[PADR_(const char *)];
- char path1len_l_[PADL_(size_t)]; size_t path1len; char path1len_r_[PADR_(size_t)];
+ char path1_len_l_[PADL_(size_t)]; size_t path1_len; char path1_len_r_[PADR_(size_t)];
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char path2_l_[PADL_(const char *)]; const char * path2; char path2_r_[PADR_(const char *)];
- char path2len_l_[PADL_(size_t)]; size_t path2len; char path2len_r_[PADR_(size_t)];
+ char path2_len_l_[PADL_(size_t)]; size_t path2_len; char path2_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_file_unlink_args {
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
- char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
char flags_l_[PADL_(cloudabi_ulflags_t)]; cloudabi_ulflags_t flags; char flags_r_[PADR_(cloudabi_ulflags_t)];
};
struct cloudabi_sys_lock_unlock_args {
@@ -197,13 +197,13 @@ struct cloudabi_sys_lock_unlock_args {
char scope_l_[PADL_(cloudabi_scope_t)]; cloudabi_scope_t scope; char scope_r_[PADR_(cloudabi_scope_t)];
};
struct cloudabi_sys_mem_advise_args {
- char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
- char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char mapping_l_[PADL_(void *)]; void * mapping; char mapping_r_[PADR_(void *)];
+ char mapping_len_l_[PADL_(size_t)]; size_t mapping_len; char mapping_len_r_[PADR_(size_t)];
char advice_l_[PADL_(cloudabi_advice_t)]; cloudabi_advice_t advice; char advice_r_[PADR_(cloudabi_advice_t)];
};
struct cloudabi_sys_mem_lock_args {
- char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)];
- char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char mapping_l_[PADL_(const void *)]; const void * mapping; char mapping_r_[PADR_(const void *)];
+ char mapping_len_l_[PADL_(size_t)]; size_t mapping_len; char mapping_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_mem_map_args {
char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
@@ -214,22 +214,22 @@ struct cloudabi_sys_mem_map_args {
char off_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t off; char off_r_[PADR_(cloudabi_filesize_t)];
};
struct cloudabi_sys_mem_protect_args {
- char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
- char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char mapping_l_[PADL_(void *)]; void * mapping; char mapping_r_[PADR_(void *)];
+ char mapping_len_l_[PADL_(size_t)]; size_t mapping_len; char mapping_len_r_[PADR_(size_t)];
char prot_l_[PADL_(cloudabi_mprot_t)]; cloudabi_mprot_t prot; char prot_r_[PADR_(cloudabi_mprot_t)];
};
struct cloudabi_sys_mem_sync_args {
- char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
- char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char mapping_l_[PADL_(void *)]; void * mapping; char mapping_r_[PADR_(void *)];
+ char mapping_len_l_[PADL_(size_t)]; size_t mapping_len; char mapping_len_r_[PADR_(size_t)];
char flags_l_[PADL_(cloudabi_msflags_t)]; cloudabi_msflags_t flags; char flags_r_[PADR_(cloudabi_msflags_t)];
};
struct cloudabi_sys_mem_unlock_args {
- char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)];
- char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char mapping_l_[PADL_(const void *)]; const void * mapping; char mapping_r_[PADR_(const void *)];
+ char mapping_len_l_[PADL_(size_t)]; size_t mapping_len; char mapping_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_mem_unmap_args {
- char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
- char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char mapping_l_[PADL_(void *)]; void * mapping; char mapping_r_[PADR_(void *)];
+ char mapping_len_l_[PADL_(size_t)]; size_t mapping_len; char mapping_len_r_[PADR_(size_t)];
};
struct cloudabi32_sys_poll_args {
char in_l_[PADL_(const cloudabi32_subscription_t *)]; const cloudabi32_subscription_t * in; char in_r_[PADR_(const cloudabi32_subscription_t *)];
@@ -239,17 +239,17 @@ struct cloudabi32_sys_poll_args {
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 nin_l_[PADL_(size_t)]; size_t nin; char nin_r_[PADR_(size_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 nout_l_[PADL_(size_t)]; size_t nout; char nout_r_[PADR_(size_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 *)];
- char datalen_l_[PADL_(size_t)]; size_t datalen; char datalen_r_[PADR_(size_t)];
+ char data_len_l_[PADL_(size_t)]; size_t data_len; char data_len_r_[PADR_(size_t)];
char fds_l_[PADL_(const cloudabi_fd_t *)]; const cloudabi_fd_t * fds; char fds_r_[PADR_(const cloudabi_fd_t *)];
- char fdslen_l_[PADL_(size_t)]; size_t fdslen; char fdslen_r_[PADR_(size_t)];
+ char fds_len_l_[PADL_(size_t)]; size_t fds_len; char fds_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_proc_exit_args {
char rval_l_[PADL_(cloudabi_exitcode_t)]; cloudabi_exitcode_t rval; char rval_r_[PADR_(cloudabi_exitcode_t)];
@@ -262,7 +262,7 @@ struct cloudabi_sys_proc_raise_args {
};
struct cloudabi_sys_random_get_args {
char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
- char nbyte_l_[PADL_(size_t)]; size_t nbyte; char nbyte_r_[PADR_(size_t)];
+ char buf_len_l_[PADL_(size_t)]; size_t buf_len; char buf_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_sock_accept_args {
char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
@@ -272,13 +272,13 @@ struct cloudabi_sys_sock_bind_args {
char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
- char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_sock_connect_args {
char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
- char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
};
struct cloudabi_sys_sock_listen_args {
char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
diff --git a/sys/compat/cloudabi32/cloudabi32_sock.c b/sys/compat/cloudabi32/cloudabi32_sock.c
index 24ed32c..1b01fc6 100644
--- a/sys/compat/cloudabi32/cloudabi32_sock.c
+++ b/sys/compat/cloudabi32/cloudabi32_sock.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ * Copyright (c) 2015-2017 Nuxi, https://nuxi.nl/
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,9 +29,6 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
-#include <sys/proc.h>
-#include <sys/socket.h>
-#include <sys/syscallsubr.h>
#include <sys/systm.h>
#include <sys/uio.h>
@@ -48,53 +45,43 @@ int
cloudabi32_sys_sock_recv(struct thread *td,
struct cloudabi32_sys_sock_recv_args *uap)
{
- struct sockaddr_storage ss;
cloudabi32_recv_in_t ri;
cloudabi32_recv_out_t ro = {};
cloudabi32_iovec_t iovobj;
- struct msghdr msghdr = {};
+ struct iovec *iov;
const cloudabi32_iovec_t *user_iov;
- size_t i;
+ size_t i, rdatalen, rfdslen;
int error;
error = copyin(uap->in, &ri, sizeof(ri));
if (error != 0)
return (error);
- /* Convert results in cloudabi_recv_in_t to struct msghdr. */
- if (ri.ri_datalen > UIO_MAXIOV)
+ /* Convert iovecs to native format. */
+ if (ri.ri_data_len > UIO_MAXIOV)
return (EINVAL);
- msghdr.msg_iovlen = ri.ri_datalen;
- msghdr.msg_iov = malloc(msghdr.msg_iovlen * sizeof(struct iovec),
+ iov = malloc(ri.ri_data_len * sizeof(struct iovec),
M_SOCKET, M_WAITOK);
user_iov = TO_PTR(ri.ri_data);
- for (i = 0; i < msghdr.msg_iovlen; i++) {
+ for (i = 0; i < ri.ri_data_len; i++) {
error = copyin(&user_iov[i], &iovobj, sizeof(iovobj));
if (error != 0) {
- free(msghdr.msg_iov, M_SOCKET);
+ free(iov, M_SOCKET);
return (error);
}
- msghdr.msg_iov[i].iov_base = TO_PTR(iovobj.iov_base);
- msghdr.msg_iov[i].iov_len = iovobj.iov_len;
+ iov[i].iov_base = TO_PTR(iovobj.buf);
+ iov[i].iov_len = iovobj.buf_len;
}
- msghdr.msg_name = &ss;
- msghdr.msg_namelen = sizeof(ss);
- if (ri.ri_flags & CLOUDABI_MSG_PEEK)
- msghdr.msg_flags |= MSG_PEEK;
- if (ri.ri_flags & CLOUDABI_MSG_WAITALL)
- msghdr.msg_flags |= MSG_WAITALL;
-
- /* TODO(ed): Add file descriptor passing. */
- error = kern_recvit(td, uap->sock, &msghdr, UIO_SYSSPACE, NULL);
- free(msghdr.msg_iov, M_SOCKET);
+
+ error = cloudabi_sock_recv(td, uap->sock, iov, ri.ri_data_len,
+ TO_PTR(ri.ri_fds), ri.ri_fds_len, ri.ri_flags, &rdatalen,
+ &rfdslen, &ro.ro_peername, &ro.ro_flags);
+ free(iov, M_SOCKET);
if (error != 0)
return (error);
- /* Convert results in msghdr to cloudabi_recv_out_t. */
- ro.ro_datalen = td->td_retval[0];
- cloudabi_convert_sockaddr((struct sockaddr *)&ss,
- MIN(msghdr.msg_namelen, sizeof(ss)), &ro.ro_peername);
- td->td_retval[0] = 0;
+ ro.ro_datalen = rdatalen;
+ ro.ro_fdslen = rfdslen;
return (copyout(&ro, uap->out, sizeof(ro)));
}
@@ -105,44 +92,37 @@ cloudabi32_sys_sock_send(struct thread *td,
cloudabi32_send_in_t si;
cloudabi32_send_out_t so = {};
cloudabi32_ciovec_t iovobj;
- struct msghdr msghdr = {};
+ struct iovec *iov;
const cloudabi32_ciovec_t *user_iov;
- size_t i;
- int error, flags;
+ size_t datalen, i;
+ int error;
error = copyin(uap->in, &si, sizeof(si));
if (error != 0)
return (error);
- /* Convert results in cloudabi_send_in_t to struct msghdr. */
- if (si.si_datalen > UIO_MAXIOV)
+ /* Convert iovecs to native format. */
+ if (si.si_data_len > UIO_MAXIOV)
return (EINVAL);
- msghdr.msg_iovlen = si.si_datalen;
- msghdr.msg_iov = malloc(msghdr.msg_iovlen * sizeof(struct iovec),
+ iov = malloc(si.si_data_len * sizeof(struct iovec),
M_SOCKET, M_WAITOK);
user_iov = TO_PTR(si.si_data);
- for (i = 0; i < msghdr.msg_iovlen; i++) {
+ for (i = 0; i < si.si_data_len; i++) {
error = copyin(&user_iov[i], &iovobj, sizeof(iovobj));
if (error != 0) {
- free(msghdr.msg_iov, M_SOCKET);
+ free(iov, M_SOCKET);
return (error);
}
- msghdr.msg_iov[i].iov_base = TO_PTR(iovobj.iov_base);
- msghdr.msg_iov[i].iov_len = iovobj.iov_len;
+ iov[i].iov_base = TO_PTR(iovobj.buf);
+ iov[i].iov_len = iovobj.buf_len;
}
- flags = MSG_NOSIGNAL;
- if (si.si_flags & CLOUDABI_MSG_EOR)
- flags |= MSG_EOR;
-
- /* TODO(ed): Add file descriptor passing. */
- error = kern_sendit(td, uap->sock, &msghdr, flags, NULL, UIO_USERSPACE);
- free(msghdr.msg_iov, M_SOCKET);
+ error = cloudabi_sock_send(td, uap->sock, iov, si.si_data_len,
+ TO_PTR(si.si_fds), si.si_fds_len, si.si_flags, &datalen);
+ free(iov, M_SOCKET);
if (error != 0)
return (error);
- /* Convert results in msghdr to cloudabi_send_out_t. */
- so.so_datalen = td->td_retval[0];
- td->td_retval[0] = 0;
+ so.so_datalen = datalen;
return (copyout(&so, uap->out, sizeof(so)));
}
diff --git a/sys/compat/cloudabi32/cloudabi32_syscall.h b/sys/compat/cloudabi32/cloudabi32_syscall.h
index 4cba6fd..3ec07f1 100644
--- a/sys/compat/cloudabi32/cloudabi32_syscall.h
+++ b/sys/compat/cloudabi32/cloudabi32_syscall.h
@@ -3,7 +3,7 @@
*
* DO NOT EDIT-- this file is automatically generated.
* $FreeBSD$
- * created from FreeBSD: head/sys/contrib/cloudabi/syscalls32.master 304563 2016-08-21 15:56:19Z ed
+ * created from FreeBSD: head/sys/contrib/cloudabi/syscalls32.master 312353 2017-01-17 22:03:08Z ed
*/
#define CLOUDABI32_SYS_cloudabi_sys_clock_res_get 0
diff --git a/sys/compat/cloudabi32/cloudabi32_syscalls.c b/sys/compat/cloudabi32/cloudabi32_syscalls.c
index 56a46fb..c24ad81 100644
--- a/sys/compat/cloudabi32/cloudabi32_syscalls.c
+++ b/sys/compat/cloudabi32/cloudabi32_syscalls.c
@@ -3,7 +3,7 @@
*
* DO NOT EDIT-- this file is automatically generated.
* $FreeBSD$
- * created from FreeBSD: head/sys/contrib/cloudabi/syscalls32.master 304563 2016-08-21 15:56:19Z ed
+ * created from FreeBSD: head/sys/contrib/cloudabi/syscalls32.master 312353 2017-01-17 22:03:08Z ed
*/
const char *cloudabi32_syscallnames[] = {
diff --git a/sys/compat/cloudabi32/cloudabi32_sysent.c b/sys/compat/cloudabi32/cloudabi32_sysent.c
index 187e384..e2a67ae 100644
--- a/sys/compat/cloudabi32/cloudabi32_sysent.c
+++ b/sys/compat/cloudabi32/cloudabi32_sysent.c
@@ -3,7 +3,7 @@
*
* DO NOT EDIT-- this file is automatically generated.
* $FreeBSD$
- * created from FreeBSD: head/sys/contrib/cloudabi/syscalls32.master 304563 2016-08-21 15:56:19Z ed
+ * created from FreeBSD: head/sys/contrib/cloudabi/syscalls32.master 312353 2017-01-17 22:03:08Z ed
*/
#include <sys/sysent.h>
diff --git a/sys/compat/cloudabi32/cloudabi32_systrace_args.c b/sys/compat/cloudabi32/cloudabi32_systrace_args.c
index 0ba5ec5..92b2490 100644
--- a/sys/compat/cloudabi32/cloudabi32_systrace_args.c
+++ b/sys/compat/cloudabi32/cloudabi32_systrace_args.c
@@ -74,8 +74,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
case 8: {
struct cloudabi32_sys_fd_pread_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
- uarg[1] = (intptr_t) p->iov; /* const cloudabi32_iovec_t * */
- uarg[2] = p->iovcnt; /* size_t */
+ uarg[1] = (intptr_t) p->iovs; /* const cloudabi32_iovec_t * */
+ uarg[2] = p->iovs_len; /* size_t */
iarg[3] = p->offset; /* cloudabi_filesize_t */
*n_args = 4;
break;
@@ -84,8 +84,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
case 9: {
struct cloudabi32_sys_fd_pwrite_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
- uarg[1] = (intptr_t) p->iov; /* const cloudabi32_ciovec_t * */
- uarg[2] = p->iovcnt; /* size_t */
+ uarg[1] = (intptr_t) p->iovs; /* const cloudabi32_ciovec_t * */
+ uarg[2] = p->iovs_len; /* size_t */
iarg[3] = p->offset; /* cloudabi_filesize_t */
*n_args = 4;
break;
@@ -94,8 +94,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
case 10: {
struct cloudabi32_sys_fd_read_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
- uarg[1] = (intptr_t) p->iov; /* const cloudabi32_iovec_t * */
- uarg[2] = p->iovcnt; /* size_t */
+ uarg[1] = (intptr_t) p->iovs; /* const cloudabi32_iovec_t * */
+ uarg[2] = p->iovs_len; /* size_t */
*n_args = 3;
break;
}
@@ -144,8 +144,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
case 16: {
struct cloudabi32_sys_fd_write_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
- uarg[1] = (intptr_t) p->iov; /* const cloudabi32_ciovec_t * */
- uarg[2] = p->iovcnt; /* size_t */
+ uarg[1] = (intptr_t) p->iovs; /* const cloudabi32_ciovec_t * */
+ uarg[2] = p->iovs_len; /* size_t */
*n_args = 3;
break;
}
@@ -173,7 +173,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
struct cloudabi_sys_file_create_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->path; /* const char * */
- uarg[2] = p->pathlen; /* size_t */
+ uarg[2] = p->path_len; /* size_t */
iarg[3] = p->type; /* cloudabi_filetype_t */
*n_args = 4;
break;
@@ -183,10 +183,10 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
struct cloudabi_sys_file_link_args *p = params;
iarg[0] = p->fd1; /* cloudabi_lookup_t */
uarg[1] = (intptr_t) p->path1; /* const char * */
- uarg[2] = p->path1len; /* size_t */
+ uarg[2] = p->path1_len; /* size_t */
iarg[3] = p->fd2; /* cloudabi_fd_t */
uarg[4] = (intptr_t) p->path2; /* const char * */
- uarg[5] = p->path2len; /* size_t */
+ uarg[5] = p->path2_len; /* size_t */
*n_args = 6;
break;
}
@@ -195,7 +195,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
struct cloudabi_sys_file_open_args *p = params;
iarg[0] = p->dirfd; /* cloudabi_lookup_t */
uarg[1] = (intptr_t) p->path; /* const char * */
- uarg[2] = p->pathlen; /* size_t */
+ uarg[2] = p->path_len; /* size_t */
iarg[3] = p->oflags; /* cloudabi_oflags_t */
uarg[4] = (intptr_t) p->fds; /* const cloudabi_fdstat_t * */
*n_args = 5;
@@ -206,7 +206,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
struct cloudabi_sys_file_readdir_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->buf; /* void * */
- uarg[2] = p->nbyte; /* size_t */
+ uarg[2] = p->buf_len; /* size_t */
iarg[3] = p->cookie; /* cloudabi_dircookie_t */
*n_args = 4;
break;
@@ -216,21 +216,21 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
struct cloudabi_sys_file_readlink_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->path; /* const char * */
- uarg[2] = p->pathlen; /* size_t */
+ uarg[2] = p->path_len; /* size_t */
uarg[3] = (intptr_t) p->buf; /* char * */
- uarg[4] = p->bufsize; /* size_t */
+ uarg[4] = p->buf_len; /* size_t */
*n_args = 5;
break;
}
/* cloudabi_sys_file_rename */
case 24: {
struct cloudabi_sys_file_rename_args *p = params;
- iarg[0] = p->oldfd; /* cloudabi_fd_t */
- uarg[1] = (intptr_t) p->old; /* const char * */
- uarg[2] = p->oldlen; /* size_t */
- iarg[3] = p->newfd; /* cloudabi_fd_t */
- uarg[4] = (intptr_t) p->new; /* const char * */
- uarg[5] = p->newlen; /* size_t */
+ iarg[0] = p->fd1; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->path1; /* const char * */
+ uarg[2] = p->path1_len; /* size_t */
+ iarg[3] = p->fd2; /* cloudabi_fd_t */
+ uarg[4] = (intptr_t) p->path2; /* const char * */
+ uarg[5] = p->path2_len; /* size_t */
*n_args = 6;
break;
}
@@ -256,7 +256,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
struct cloudabi_sys_file_stat_get_args *p = params;
iarg[0] = p->fd; /* cloudabi_lookup_t */
uarg[1] = (intptr_t) p->path; /* const char * */
- uarg[2] = p->pathlen; /* size_t */
+ uarg[2] = p->path_len; /* size_t */
uarg[3] = (intptr_t) p->buf; /* cloudabi_filestat_t * */
*n_args = 4;
break;
@@ -266,7 +266,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
struct cloudabi_sys_file_stat_put_args *p = params;
iarg[0] = p->fd; /* cloudabi_lookup_t */
uarg[1] = (intptr_t) p->path; /* const char * */
- uarg[2] = p->pathlen; /* size_t */
+ uarg[2] = p->path_len; /* size_t */
uarg[3] = (intptr_t) p->buf; /* const cloudabi_filestat_t * */
iarg[4] = p->flags; /* cloudabi_fsflags_t */
*n_args = 5;
@@ -276,10 +276,10 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
case 29: {
struct cloudabi_sys_file_symlink_args *p = params;
uarg[0] = (intptr_t) p->path1; /* const char * */
- uarg[1] = p->path1len; /* size_t */
+ uarg[1] = p->path1_len; /* size_t */
iarg[2] = p->fd; /* cloudabi_fd_t */
uarg[3] = (intptr_t) p->path2; /* const char * */
- uarg[4] = p->path2len; /* size_t */
+ uarg[4] = p->path2_len; /* size_t */
*n_args = 5;
break;
}
@@ -288,7 +288,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
struct cloudabi_sys_file_unlink_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->path; /* const char * */
- uarg[2] = p->pathlen; /* size_t */
+ uarg[2] = p->path_len; /* size_t */
iarg[3] = p->flags; /* cloudabi_ulflags_t */
*n_args = 4;
break;
@@ -304,8 +304,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
/* cloudabi_sys_mem_advise */
case 32: {
struct cloudabi_sys_mem_advise_args *p = params;
- uarg[0] = (intptr_t) p->addr; /* void * */
- uarg[1] = p->len; /* size_t */
+ uarg[0] = (intptr_t) p->mapping; /* void * */
+ uarg[1] = p->mapping_len; /* size_t */
iarg[2] = p->advice; /* cloudabi_advice_t */
*n_args = 3;
break;
@@ -313,8 +313,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
/* cloudabi_sys_mem_lock */
case 33: {
struct cloudabi_sys_mem_lock_args *p = params;
- uarg[0] = (intptr_t) p->addr; /* const void * */
- uarg[1] = p->len; /* size_t */
+ uarg[0] = (intptr_t) p->mapping; /* const void * */
+ uarg[1] = p->mapping_len; /* size_t */
*n_args = 2;
break;
}
@@ -333,8 +333,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
/* cloudabi_sys_mem_protect */
case 35: {
struct cloudabi_sys_mem_protect_args *p = params;
- uarg[0] = (intptr_t) p->addr; /* void * */
- uarg[1] = p->len; /* size_t */
+ uarg[0] = (intptr_t) p->mapping; /* void * */
+ uarg[1] = p->mapping_len; /* size_t */
iarg[2] = p->prot; /* cloudabi_mprot_t */
*n_args = 3;
break;
@@ -342,8 +342,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
/* cloudabi_sys_mem_sync */
case 36: {
struct cloudabi_sys_mem_sync_args *p = params;
- uarg[0] = (intptr_t) p->addr; /* void * */
- uarg[1] = p->len; /* size_t */
+ uarg[0] = (intptr_t) p->mapping; /* void * */
+ uarg[1] = p->mapping_len; /* size_t */
iarg[2] = p->flags; /* cloudabi_msflags_t */
*n_args = 3;
break;
@@ -351,16 +351,16 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
/* cloudabi_sys_mem_unlock */
case 37: {
struct cloudabi_sys_mem_unlock_args *p = params;
- uarg[0] = (intptr_t) p->addr; /* const void * */
- uarg[1] = p->len; /* size_t */
+ uarg[0] = (intptr_t) p->mapping; /* const void * */
+ uarg[1] = p->mapping_len; /* size_t */
*n_args = 2;
break;
}
/* cloudabi_sys_mem_unmap */
case 38: {
struct cloudabi_sys_mem_unmap_args *p = params;
- uarg[0] = (intptr_t) p->addr; /* void * */
- uarg[1] = p->len; /* size_t */
+ uarg[0] = (intptr_t) p->mapping; /* void * */
+ uarg[1] = p->mapping_len; /* size_t */
*n_args = 2;
break;
}
@@ -378,9 +378,9 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
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->nin; /* size_t */
+ uarg[2] = p->in_len; /* size_t */
uarg[3] = (intptr_t) p->out; /* cloudabi32_event_t * */
- uarg[4] = p->nout; /* size_t */
+ uarg[4] = p->out_len; /* size_t */
uarg[5] = (intptr_t) p->timeout; /* const cloudabi32_subscription_t * */
*n_args = 6;
break;
@@ -390,9 +390,9 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
struct cloudabi_sys_proc_exec_args *p = params;
iarg[0] = p->fd; /* cloudabi_fd_t */
uarg[1] = (intptr_t) p->data; /* const void * */
- uarg[2] = p->datalen; /* size_t */
+ uarg[2] = p->data_len; /* size_t */
uarg[3] = (intptr_t) p->fds; /* const cloudabi_fd_t * */
- uarg[4] = p->fdslen; /* size_t */
+ uarg[4] = p->fds_len; /* size_t */
*n_args = 5;
break;
}
@@ -419,7 +419,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
case 45: {
struct cloudabi_sys_random_get_args *p = params;
uarg[0] = (intptr_t) p->buf; /* void * */
- uarg[1] = p->nbyte; /* size_t */
+ uarg[1] = p->buf_len; /* size_t */
*n_args = 2;
break;
}
@@ -437,7 +437,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
iarg[0] = p->sock; /* cloudabi_fd_t */
iarg[1] = p->fd; /* cloudabi_fd_t */
uarg[2] = (intptr_t) p->path; /* const char * */
- uarg[3] = p->pathlen; /* size_t */
+ uarg[3] = p->path_len; /* size_t */
*n_args = 4;
break;
}
@@ -447,7 +447,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
iarg[0] = p->sock; /* cloudabi_fd_t */
iarg[1] = p->fd; /* cloudabi_fd_t */
uarg[2] = (intptr_t) p->path; /* const char * */
- uarg[3] = p->pathlen; /* size_t */
+ uarg[3] = p->path_len; /* size_t */
*n_args = 4;
break;
}
diff --git a/sys/compat/cloudabi32/cloudabi32_thread.c b/sys/compat/cloudabi32/cloudabi32_thread.c
index 50538d9..233700b 100644
--- a/sys/compat/cloudabi32/cloudabi32_thread.c
+++ b/sys/compat/cloudabi32/cloudabi32_thread.c
@@ -65,9 +65,9 @@ cloudabi32_sys_thread_create(struct thread *td,
return (error);
/* Remove some space on the top of the stack for the TCB. */
- args.tcb = rounddown(args.attr.stack + args.attr.stack_size -
+ args.tcb = rounddown(args.attr.stack + args.attr.stack_len -
sizeof(cloudabi32_tcb_t), _Alignof(cloudabi32_tcb_t));
- args.attr.stack_size = args.tcb - args.attr.stack;
+ args.attr.stack_len = args.tcb - args.attr.stack;
error = thread_create(td, NULL, initialize_thread, &args);
if (error != 0)
OpenPOWER on IntegriCloud