Merge from vendor branch LIBSTDC++:
[dragonfly.git] / sys / sys / msgport2.h
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