summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2015-07-22 10:04:53 +0000
committered <ed@FreeBSD.org>2015-07-22 10:04:53 +0000
commitdf82c1e80119dbaf2b3c5e016df404c5c61f65f1 (patch)
treedac2ce11faaabd6da54e956239c6107651f60086 /sys
parentd8c34e18a351c7858cc9204d92c8db8c8232d2ee (diff)
downloadFreeBSD-src-df82c1e80119dbaf2b3c5e016df404c5c61f65f1.zip
FreeBSD-src-df82c1e80119dbaf2b3c5e016df404c5c61f65f1.tar.gz
Import upstream changes to the system call definitions.
Support has been added for providing the scope of a futex operation, whether the futex is local to the process or shared between processes.
Diffstat (limited to 'sys')
-rw-r--r--sys/compat/cloudabi64/syscalls.master7
-rw-r--r--sys/contrib/cloudabi/syscalldefs_md.h6
-rw-r--r--sys/contrib/cloudabi/syscalldefs_mi.h5
3 files changed, 16 insertions, 2 deletions
diff --git a/sys/compat/cloudabi64/syscalls.master b/sys/compat/cloudabi64/syscalls.master
index d2c797a..ba1df9a 100644
--- a/sys/compat/cloudabi64/syscalls.master
+++ b/sys/compat/cloudabi64/syscalls.master
@@ -21,6 +21,7 @@
2 AUE_NULL STD { void cloudabi_sys_condvar_signal( \
cloudabi_condvar_t *condvar, \
+ cloudabi_futexscope_t scope, \
cloudabi_nthreads_t nwaiters); }
3 AUE_NULL STD { void cloudabi_sys_fd_close( \
@@ -130,7 +131,8 @@
cloudabi_ulflags_t flag); }
31 AUE_NULL STD { void cloudabi_sys_lock_unlock( \
- cloudabi_lock_t *lock); }
+ cloudabi_lock_t *lock, \
+ cloudabi_futexscope_t scope); }
32 AUE_NULL STD { void cloudabi_sys_mem_advise( \
void *addr, size_t len, \
@@ -206,6 +208,7 @@
53 AUE_NULL STD { cloudabi_tid_t cloudabi64_sys_thread_create( \
cloudabi64_threadattr_t *attr); }
54 AUE_NULL STD { void cloudabi_sys_thread_exit( \
- cloudabi_lock_t *lock); }
+ cloudabi_lock_t *lock, \
+ cloudabi_futexscope_t scope); }
55 AUE_NULL STD { void cloudabi_sys_thread_tcb_set(void *tcb); }
56 AUE_NULL STD { void cloudabi_sys_thread_yield(); }
diff --git a/sys/contrib/cloudabi/syscalldefs_md.h b/sys/contrib/cloudabi/syscalldefs_md.h
index 6fc26f1..272360e 100644
--- a/sys/contrib/cloudabi/syscalldefs_md.h
+++ b/sys/contrib/cloudabi/syscalldefs_md.h
@@ -193,6 +193,8 @@ typedef struct {
struct {
MEMBER(PTR(_Atomic(cloudabi_condvar_t))) condvar;
MEMBER(PTR(_Atomic(cloudabi_lock_t))) lock;
+ MEMBER(cloudabi_futexscope_t) condvar_scope;
+ MEMBER(cloudabi_futexscope_t) lock_scope;
} condvar;
// CLOUDABI_EVENTTYPE_FD_READ and CLOUDABI_EVENTTYPE_FD_WRITE:
@@ -206,6 +208,7 @@ typedef struct {
// and acquire a read or write lock.
struct {
MEMBER(PTR(_Atomic(cloudabi_lock_t))) lock;
+ MEMBER(cloudabi_futexscope_t) lock_scope;
} lock;
// CLOUDABI_EVENTTYPE_PROC_TERMINATE: Wait for a process to terminate.
@@ -223,8 +226,11 @@ ASSERT_OFFSET(subscription_t, clock.timeout, 32, 32);
ASSERT_OFFSET(subscription_t, clock.precision, 40, 40);
ASSERT_OFFSET(subscription_t, condvar.condvar, 16, 16);
ASSERT_OFFSET(subscription_t, condvar.lock, 20, 24);
+ASSERT_OFFSET(subscription_t, condvar.condvar_scope, 24, 32);
+ASSERT_OFFSET(subscription_t, condvar.lock_scope, 25, 33);
ASSERT_OFFSET(subscription_t, fd_readwrite.fd, 16, 16);
ASSERT_OFFSET(subscription_t, lock.lock, 16, 16);
+ASSERT_OFFSET(subscription_t, lock.lock_scope, 20, 24);
ASSERT_OFFSET(subscription_t, proc_terminate.fd, 16, 16);
ASSERT_SIZE(subscription_t, 48, 48);
diff --git a/sys/contrib/cloudabi/syscalldefs_mi.h b/sys/contrib/cloudabi/syscalldefs_mi.h
index 151a3dc..23aa58c 100644
--- a/sys/contrib/cloudabi/syscalldefs_mi.h
+++ b/sys/contrib/cloudabi/syscalldefs_mi.h
@@ -189,6 +189,10 @@
#define CLOUDABI_FILETYPE_SOCKET_STREAM 0x82
#define CLOUDABI_FILETYPE_SYMBOLIC_LINK 0x90
+// Futex object scopes.
+#define CLOUDABI_FUTEXSCOPE_GLOBAL 1
+#define CLOUDABI_FUTEXSCOPE_PROCESS_LOCAL 2
+
// Read-write lock related constants.
#define CLOUDABI_LOCK_UNLOCKED 0 // Lock is unlocked.
#define CLOUDABI_LOCK_WRLOCKED 0x40000000 // Lock is write locked.
@@ -350,6 +354,7 @@ typedef int64_t cloudabi_filedelta_t; // lseek().
typedef uint64_t cloudabi_filesize_t; // ftruncate(), struct stat::st_size.
typedef uint8_t cloudabi_filetype_t; // struct stat::st_mode.
typedef uint16_t cloudabi_fsflags_t; // file_stat_put().
+typedef uint8_t cloudabi_futexscope_t; // Scope of lock or condition variable.
typedef uint64_t cloudabi_inode_t; // struct stat::st_ino.
typedef uint32_t cloudabi_linkcount_t; // struct stat::st_nlink.
typedef uint32_t cloudabi_lock_t; // pthread_{mutex,rwlock}_*().
OpenPOWER on IntegriCloud