Print this page
11584 ::xcall would be useful
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

@@ -20,10 +20,11 @@
  */
 
 /*
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2018 Joyent, Inc.
  */
 
 #ifndef _SYS_X_CALL_H
 #define _SYS_X_CALL_H
 

@@ -31,10 +32,18 @@
 extern "C" {
 #endif
 
 #ifndef _ASM
 
+#define XC_MSG_FREE     (0)     /* msg in xc_free queue */
+#define XC_MSG_ASYNC    (1)     /* msg in slave xc_msgbox */
+#define XC_MSG_CALL     (2)     /* msg in slave xc_msgbox */
+#define XC_MSG_SYNC     (3)     /* msg in slave xc_msgbox */
+#define XC_MSG_WAITING  (4)     /* msg in master xc_msgbox or xc_waiters */
+#define XC_MSG_RELEASED (5)     /* msg in slave xc_msgbox */
+#define XC_MSG_DONE     (6)     /* msg in master xc_msgbox */
+
 typedef uintptr_t xc_arg_t;
 typedef int (*xc_func_t)(xc_arg_t, xc_arg_t, xc_arg_t);
 
 /*
  * One of these is stored in each CPU's machcpu data, plus one extra for

@@ -50,17 +59,12 @@
 /*
  * This is kept as small as possible, since for N CPUs we need N * N of them.
  */
 typedef struct xc_msg {
         uint8_t         xc_command;
-#ifdef __amd64
         uint16_t        xc_master;
         uint16_t        xc_slave;
-#else
-        uint8_t         xc_master;
-        uint8_t         xc_slave;
-#endif
         struct xc_msg   *xc_next;
 } xc_msg_t;
 
 /*
  * Cross-call routines.