Print this page
11584 ::xcall would be useful
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
*** 20,29 ****
--- 20,30 ----
*/
/*
* 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,40 ****
--- 32,49 ----
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,66 ****
/*
* 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.
--- 59,70 ----