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.