1 /* 2 * SYS/MSGPORT2.H 3 * 4 * Implements Inlines for LWKT messages and ports. 5 * 6 * $DragonFly: src/sys/sys/msgport2.h,v 1.5 2003/11/24 20:46:05 dillon Exp $ 7 */ 8 9 #ifndef _SYS_MSGPORT2_H_ 10 #define _SYS_MSGPORT2_H_ 11 12 static __inline 13 void 14 lwkt_initmsg(lwkt_msg_t msg, lwkt_port_t rport, int cmd) 15 { 16 msg->ms_cmd = cmd; 17 msg->ms_flags = MSGF_DONE; 18 msg->ms_reply_port = rport; 19 msg->ms_msgsize = 0; 20 msg->ms_maxsize = 0; 21 } 22 23 static __inline 24 void 25 lwkt_reinitmsg(lwkt_msg_t msg, lwkt_port_t rport) 26 { 27 msg->ms_flags = (msg->ms_flags & MSGF_ASYNC) | MSGF_DONE; 28 msg->ms_reply_port = rport; 29 } 30 31 static __inline 32 int 33 lwkt_beginmsg(lwkt_port_t port, lwkt_msg_t msg) 34 { 35 return(port->mp_putport(port, msg)); 36 } 37 38 static __inline 39 int 40 lwkt_forwardmsg(lwkt_port_t port, lwkt_msg_t msg) 41 { 42 return(port->mp_putport(port, msg)); 43 } 44 45 static __inline 46 int 47 lwkt_waitmsg(lwkt_msg_t msg) 48 { 49 lwkt_port_t port = msg->ms_reply_port; 50 return(((lwkt_msg_t)port->mp_waitport(port, msg))->ms_error); 51 } 52 53 static __inline 54 void 55 lwkt_abortmsg(lwkt_msg_t msg) 56 { 57 lwkt_port_t port = msg->ms_target_port; 58 port->mp_abortport(port, msg); 59 } 60 61 static __inline 62 void 63 lwkt_replymsg(lwkt_msg_t msg, int error) 64 { 65 lwkt_port_t port = msg->ms_reply_port; 66 msg->ms_error = error; 67 port->mp_replyport(port, msg); 68 } 69 70 static __inline 71 void * 72 lwkt_waitport(lwkt_port_t port, lwkt_msg_t msg) 73 { 74 return(port->mp_waitport(port, msg)); 75 } 76 77 #endif 78 79