1 /* 2 * SYS/MSGPORT2.H 3 * 4 * Implements Inlines for LWKT messages and ports. 5 * 6 * $DragonFly: src/sys/sys/msgport2.h,v 1.6 2004/01/18 12:29:50 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 } 21 22 static __inline 23 void 24 lwkt_reinitmsg(lwkt_msg_t msg, lwkt_port_t rport) 25 { 26 msg->ms_flags = (msg->ms_flags & MSGF_ASYNC) | MSGF_DONE; 27 msg->ms_reply_port = rport; 28 } 29 30 static __inline 31 int 32 lwkt_beginmsg(lwkt_port_t port, lwkt_msg_t msg) 33 { 34 return(port->mp_putport(port, msg)); 35 } 36 37 static __inline 38 int 39 lwkt_forwardmsg(lwkt_port_t port, lwkt_msg_t msg) 40 { 41 return(port->mp_putport(port, msg)); 42 } 43 44 static __inline 45 int 46 lwkt_waitmsg(lwkt_msg_t msg) 47 { 48 lwkt_port_t port = msg->ms_reply_port; 49 return(((lwkt_msg_t)port->mp_waitport(port, msg))->ms_error); 50 } 51 52 static __inline 53 void 54 lwkt_abortmsg(lwkt_msg_t msg) 55 { 56 lwkt_port_t port = msg->ms_target_port; 57 port->mp_abortport(port, msg); 58 } 59 60 static __inline 61 void 62 lwkt_replymsg(lwkt_msg_t msg, int error) 63 { 64 lwkt_port_t port = msg->ms_reply_port; 65 msg->ms_error = error; 66 port->mp_replyport(port, msg); 67 } 68 69 static __inline 70 void * 71 lwkt_waitport(lwkt_port_t port, lwkt_msg_t msg) 72 { 73 return(port->mp_waitport(port, msg)); 74 } 75 76 #endif 77 78