Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Mar 2016 18:50:06 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r297468 - in head/sys: compat/cloudabi compat/cloudabi64 contrib/cloudabi
Message-ID:  <201603311850.u2VIo69v001979@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed
Date: Thu Mar 31 18:50:06 2016
New Revision: 297468
URL: https://svnweb.freebsd.org/changeset/base/297468

Log:
  Sync in the latest CloudABI system call definitions.
  
  Some time ago I made a change to merge together the memory scope
  definitions used by mmap (MAP_{PRIVATE,SHARED}) and lock objects
  (PTHREAD_PROCESS_{PRIVATE,SHARED}). Though that sounded pretty smart
  back then, it's backfiring. In the case of mmap it's used with other
  flags in a bitmask, but for locking it's an enumeration. As our plan is
  to automatically generate bindings for other languages, that looks a bit
  sloppy.
  
  Change all of the locking functions to use separate flags instead.
  
  Obtained from:	https://github.com/NuxiNL/cloudabi

Modified:
  head/sys/compat/cloudabi/cloudabi_futex.c
  head/sys/compat/cloudabi/cloudabi_util.h
  head/sys/compat/cloudabi64/cloudabi64_systrace_args.c
  head/sys/contrib/cloudabi/cloudabi64_types.h
  head/sys/contrib/cloudabi/cloudabi_types_common.h
  head/sys/contrib/cloudabi/syscalls.master

Modified: head/sys/compat/cloudabi/cloudabi_futex.c
==============================================================================
--- head/sys/compat/cloudabi/cloudabi_futex.c	Thu Mar 31 18:36:50 2016	(r297467)
+++ head/sys/compat/cloudabi/cloudabi_futex.c	Thu Mar 31 18:50:06 2016	(r297468)
@@ -212,16 +212,16 @@ static int futex_user_cmpxchg(uint32_t *
 
 static int
 futex_address_create(struct futex_address *fa, struct thread *td,
-    const void *object, cloudabi_mflags_t scope)
+    const void *object, cloudabi_scope_t scope)
 {
 
 	KASSERT(td == curthread,
 	    ("Can only create umtx keys for the current thread"));
 	switch (scope) {
-	case CLOUDABI_MAP_PRIVATE:
+	case CLOUDABI_SCOPE_PRIVATE:
 		return (umtx_key_get(object, TYPE_FUTEX, THREAD_SHARE,
 		    &fa->fa_key));
-	case CLOUDABI_MAP_SHARED:
+	case CLOUDABI_SCOPE_SHARED:
 		return (umtx_key_get(object, TYPE_FUTEX, AUTO_SHARE,
 		    &fa->fa_key));
 	default:
@@ -259,7 +259,7 @@ futex_condvar_assert(const struct futex_
 
 static int
 futex_condvar_lookup(struct thread *td, const cloudabi_condvar_t *address,
-    cloudabi_mflags_t scope, struct futex_condvar **fcret)
+    cloudabi_scope_t scope, struct futex_condvar **fcret)
 {
 	struct futex_address fa_condvar;
 	struct futex_condvar *fc;
@@ -286,8 +286,8 @@ futex_condvar_lookup(struct thread *td, 
 
 static int
 futex_condvar_lookup_or_create(struct thread *td,
-    const cloudabi_condvar_t *condvar, cloudabi_mflags_t condvar_scope,
-    const cloudabi_lock_t *lock, cloudabi_mflags_t lock_scope,
+    const cloudabi_condvar_t *condvar, cloudabi_scope_t condvar_scope,
+    const cloudabi_lock_t *lock, cloudabi_scope_t lock_scope,
     struct futex_condvar **fcret)
 {
 	struct futex_address fa_condvar, fa_lock;
@@ -385,7 +385,7 @@ futex_lock_assert(const struct futex_loc
 
 static int
 futex_lock_lookup(struct thread *td, const cloudabi_lock_t *address,
-    cloudabi_mflags_t scope, struct futex_lock **flret)
+    cloudabi_scope_t scope, struct futex_lock **flret)
 {
 	struct futex_address fa;
 	int error;
@@ -974,8 +974,8 @@ futex_user_cmpxchg(uint32_t *obj, uint32
 
 int
 cloudabi_futex_condvar_wait(struct thread *td, cloudabi_condvar_t *condvar,
-    cloudabi_mflags_t condvar_scope, cloudabi_lock_t *lock,
-    cloudabi_mflags_t lock_scope, cloudabi_clockid_t clock_id,
+    cloudabi_scope_t condvar_scope, cloudabi_lock_t *lock,
+    cloudabi_scope_t lock_scope, cloudabi_clockid_t clock_id,
     cloudabi_timestamp_t timeout, cloudabi_timestamp_t precision)
 {
 	struct futex_condvar *fc;
@@ -1047,7 +1047,7 @@ cloudabi_futex_condvar_wait(struct threa
 
 int
 cloudabi_futex_lock_rdlock(struct thread *td, cloudabi_lock_t *lock,
-    cloudabi_mflags_t scope, cloudabi_clockid_t clock_id,
+    cloudabi_scope_t scope, cloudabi_clockid_t clock_id,
     cloudabi_timestamp_t timeout, cloudabi_timestamp_t precision)
 {
 	struct futex_lock *fl;
@@ -1066,7 +1066,7 @@ cloudabi_futex_lock_rdlock(struct thread
 
 int
 cloudabi_futex_lock_wrlock(struct thread *td, cloudabi_lock_t *lock,
-    cloudabi_mflags_t scope, cloudabi_clockid_t clock_id,
+    cloudabi_scope_t scope, cloudabi_clockid_t clock_id,
     cloudabi_timestamp_t timeout, cloudabi_timestamp_t precision)
 {
 	struct futex_lock *fl;

Modified: head/sys/compat/cloudabi/cloudabi_util.h
==============================================================================
--- head/sys/compat/cloudabi/cloudabi_util.h	Thu Mar 31 18:36:50 2016	(r297467)
+++ head/sys/compat/cloudabi/cloudabi_util.h	Thu Mar 31 18:50:06 2016	(r297468)
@@ -67,13 +67,13 @@ int cloudabi_convert_timespec(const stru
  * sleep on a lock or condition variable.
  */
 int cloudabi_futex_condvar_wait(struct thread *, cloudabi_condvar_t *,
-    cloudabi_mflags_t, cloudabi_lock_t *, cloudabi_mflags_t, cloudabi_clockid_t,
+    cloudabi_scope_t, cloudabi_lock_t *, cloudabi_scope_t, cloudabi_clockid_t,
     cloudabi_timestamp_t, cloudabi_timestamp_t);
 int cloudabi_futex_lock_rdlock(struct thread *, cloudabi_lock_t *,
-    cloudabi_mflags_t, cloudabi_clockid_t, cloudabi_timestamp_t,
+    cloudabi_scope_t, cloudabi_clockid_t, cloudabi_timestamp_t,
     cloudabi_timestamp_t);
 int cloudabi_futex_lock_wrlock(struct thread *, cloudabi_lock_t *,
-    cloudabi_mflags_t, cloudabi_clockid_t, cloudabi_timestamp_t,
+    cloudabi_scope_t, cloudabi_clockid_t, cloudabi_timestamp_t,
     cloudabi_timestamp_t);
 
 #endif

Modified: head/sys/compat/cloudabi64/cloudabi64_systrace_args.c
==============================================================================
--- head/sys/compat/cloudabi64/cloudabi64_systrace_args.c	Thu Mar 31 18:36:50 2016	(r297467)
+++ head/sys/compat/cloudabi64/cloudabi64_systrace_args.c	Thu Mar 31 18:50:06 2016	(r297468)
@@ -30,7 +30,7 @@ systrace_args(int sysnum, void *params, 
 	case 2: {
 		struct cloudabi_sys_condvar_signal_args *p = params;
 		uarg[0] = (intptr_t) p->condvar; /* cloudabi_condvar_t * */
-		iarg[1] = p->scope; /* cloudabi_mflags_t */
+		iarg[1] = p->scope; /* cloudabi_scope_t */
 		iarg[2] = p->nwaiters; /* cloudabi_nthreads_t */
 		*n_args = 3;
 		break;
@@ -297,7 +297,7 @@ systrace_args(int sysnum, void *params, 
 	case 31: {
 		struct cloudabi_sys_lock_unlock_args *p = params;
 		uarg[0] = (intptr_t) p->lock; /* cloudabi_lock_t * */
-		iarg[1] = p->scope; /* cloudabi_mflags_t */
+		iarg[1] = p->scope; /* cloudabi_scope_t */
 		*n_args = 2;
 		break;
 	}
@@ -493,7 +493,7 @@ systrace_args(int sysnum, void *params, 
 	case 54: {
 		struct cloudabi_sys_thread_exit_args *p = params;
 		uarg[0] = (intptr_t) p->lock; /* cloudabi_lock_t * */
-		iarg[1] = p->scope; /* cloudabi_mflags_t */
+		iarg[1] = p->scope; /* cloudabi_scope_t */
 		*n_args = 2;
 		break;
 	}
@@ -561,7 +561,7 @@ systrace_entry_setargdesc(int sysnum, in
 			p = "cloudabi_condvar_t *";
 			break;
 		case 1:
-			p = "cloudabi_mflags_t";
+			p = "cloudabi_scope_t";
 			break;
 		case 2:
 			p = "cloudabi_nthreads_t";
@@ -1043,7 +1043,7 @@ systrace_entry_setargdesc(int sysnum, in
 			p = "cloudabi_lock_t *";
 			break;
 		case 1:
-			p = "cloudabi_mflags_t";
+			p = "cloudabi_scope_t";
 			break;
 		default:
 			break;
@@ -1377,7 +1377,7 @@ systrace_entry_setargdesc(int sysnum, in
 			p = "cloudabi_lock_t *";
 			break;
 		case 1:
-			p = "cloudabi_mflags_t";
+			p = "cloudabi_scope_t";
 			break;
 		default:
 			break;

Modified: head/sys/contrib/cloudabi/cloudabi64_types.h
==============================================================================
--- head/sys/contrib/cloudabi/cloudabi64_types.h	Thu Mar 31 18:36:50 2016	(r297467)
+++ head/sys/contrib/cloudabi/cloudabi64_types.h	Thu Mar 31 18:50:06 2016	(r297468)
@@ -1,4 +1,4 @@
-// Copyright (c) 2016 Nuxi, https://nuxi.nl/
+// Copyright (c) 2016 Nuxi (https://nuxi.nl/) and contributors.
 //
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions
@@ -20,8 +20,9 @@
 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 // SUCH DAMAGE.
-
+//
 // This file is automatically generated. Do not edit.
+//
 // Source: https://github.com/NuxiNL/cloudabi
 
 #ifndef CLOUDABI64_TYPES_H
@@ -101,6 +102,8 @@ _Static_assert(offsetof(cloudabi64_iovec
 _Static_assert(sizeof(cloudabi64_iovec_t) == 16, "Incorrect layout");
 _Static_assert(_Alignof(cloudabi64_iovec_t) == 8, "Incorrect layout");
 
+typedef void cloudabi64_processentry_t(uint64_t auxv);
+
 typedef struct {
 	_Alignas(8) uint64_t ri_data;
 	_Alignas(8) uint64_t ri_datalen;
@@ -153,8 +156,8 @@ typedef struct {
 		struct {
 			_Alignas(8) uint64_t condvar;
 			_Alignas(8) uint64_t lock;
-			_Alignas(1) cloudabi_mflags_t condvar_scope;
-			_Alignas(1) cloudabi_mflags_t lock_scope;
+			_Alignas(1) cloudabi_scope_t condvar_scope;
+			_Alignas(1) cloudabi_scope_t lock_scope;
 		} condvar;
 		struct {
 			_Alignas(4) cloudabi_fd_t fd;
@@ -162,7 +165,7 @@ typedef struct {
 		} fd_readwrite;
 		struct {
 			_Alignas(8) uint64_t lock;
-			_Alignas(1) cloudabi_mflags_t lock_scope;
+			_Alignas(1) cloudabi_scope_t lock_scope;
 		} lock;
 		struct {
 			_Alignas(4) cloudabi_fd_t fd;

Modified: head/sys/contrib/cloudabi/cloudabi_types_common.h
==============================================================================
--- head/sys/contrib/cloudabi/cloudabi_types_common.h	Thu Mar 31 18:36:50 2016	(r297467)
+++ head/sys/contrib/cloudabi/cloudabi_types_common.h	Thu Mar 31 18:50:06 2016	(r297468)
@@ -1,4 +1,4 @@
-// Copyright (c) 2016 Nuxi, https://nuxi.nl/
+// Copyright (c) 2016 Nuxi (https://nuxi.nl/) and contributors.
 //
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions
@@ -20,8 +20,9 @@
 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 // SUCH DAMAGE.
-
+//
 // This file is automatically generated. Do not edit.
+//
 // Source: https://github.com/NuxiNL/cloudabi
 
 #ifndef CLOUDABI_TYPES_COMMON_H
@@ -47,6 +48,7 @@ typedef uint8_t cloudabi_advice_t;
 typedef uint32_t cloudabi_auxtype_t;
 #define CLOUDABI_AT_ARGDATA    256
 #define CLOUDABI_AT_ARGDATALEN 257
+#define CLOUDABI_AT_BASE         7
 #define CLOUDABI_AT_CANARY     258
 #define CLOUDABI_AT_CANARYLEN  259
 #define CLOUDABI_AT_NCPUS      260
@@ -298,6 +300,10 @@ typedef uint8_t cloudabi_sa_family_t;
 #define CLOUDABI_AF_INET6  2
 #define CLOUDABI_AF_UNIX   3
 
+typedef uint8_t cloudabi_scope_t;
+#define CLOUDABI_SCOPE_PRIVATE 4
+#define CLOUDABI_SCOPE_SHARED  8
+
 typedef uint8_t cloudabi_sdflags_t;
 #define CLOUDABI_SHUT_RD 0x01
 #define CLOUDABI_SHUT_WR 0x02

Modified: head/sys/contrib/cloudabi/syscalls.master
==============================================================================
--- head/sys/contrib/cloudabi/syscalls.master	Thu Mar 31 18:36:50 2016	(r297467)
+++ head/sys/contrib/cloudabi/syscalls.master	Thu Mar 31 18:50:06 2016	(r297468)
@@ -1,6 +1,6 @@
  $FreeBSD$
 
-; Copyright (c) 2016 Nuxi, https://nuxi.nl/
+; Copyright (c) 2016 Nuxi (https://nuxi.nl/) and contributors.
 ;
 ; Redistribution and use in source and binary forms, with or without
 ; modification, are permitted provided that the following conditions
@@ -22,8 +22,9 @@
 ; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 ; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 ; SUCH DAMAGE.
-
+;
 ; This file is automatically generated. Do not edit.
+;
 ; Source: https://github.com/NuxiNL/cloudabi
 
 #include <sys/sysent.h>
@@ -44,7 +45,7 @@
 
 2	AUE_NULL	STD	{ void cloudabi_sys_condvar_signal( \
 					cloudabi_condvar_t *condvar, \
-					cloudabi_mflags_t scope, \
+					cloudabi_scope_t scope, \
 					cloudabi_nthreads_t nwaiters); }
 
 3	AUE_NULL	STD	{ void cloudabi_sys_fd_close( \
@@ -196,7 +197,7 @@
 
 31	AUE_NULL	STD	{ void cloudabi_sys_lock_unlock( \
 					cloudabi_lock_t *lock, \
-					cloudabi_mflags_t scope); }
+					cloudabi_scope_t scope); }
 
 32	AUE_NULL	STD	{ void cloudabi_sys_mem_advise( \
 					void *addr, \
@@ -301,7 +302,7 @@
 
 54	AUE_NULL	STD	{ void cloudabi_sys_thread_exit( \
 					cloudabi_lock_t *lock, \
-					cloudabi_mflags_t scope); }
+					cloudabi_scope_t scope); }
 
 55	AUE_NULL	STD	{ void cloudabi_sys_thread_tcb_set( \
 					void *tcb); }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201603311850.u2VIo69v001979>