The cam_sim structure was being deallocated unconditionally by device
[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.7 2004/03/06 19:40:32 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, int cmd)
15 {
16     msg->ms_cmd = cmd;
17     msg->ms_flags = MSGF_DONE;
18     msg->ms_reply_port = &curthread->td_msgport;
19     msg->ms_msgsize = 0;
20 }
21
22 static __inline
23 void
24 lwkt_initmsg_rp(lwkt_msg_t msg, lwkt_port_t rport, int cmd)
25 {
26     msg->ms_cmd = cmd;
27     msg->ms_flags = MSGF_DONE;
28     msg->ms_reply_port = rport;
29     msg->ms_msgsize = 0;
30 }
31
32 static __inline
33 void
34 lwkt_reinitmsg(lwkt_msg_t msg, lwkt_port_t rport)
35 {
36     msg->ms_flags = (msg->ms_flags & MSGF_ASYNC) | MSGF_DONE;
37     msg->ms_reply_port = rport;
38 }
39
40 static __inline
41 int
42 lwkt_beginmsg(lwkt_port_t port, lwkt_msg_t msg)
43 {
44     return(port->mp_putport(port, msg));
45 }
46
47 static __inline
48 int
49 lwkt_forwardmsg(lwkt_port_t port, lwkt_msg_t msg)
50 {
51     return(port->mp_putport(port, msg));
52 }
53
54 static __inline
55 int
56 lwkt_waitmsg(lwkt_msg_t msg)
57 {
58     lwkt_port_t port = msg->ms_reply_port;
59     return(((lwkt_msg_t)port->mp_waitport(port, msg))->ms_error);
60 }
61
62 static __inline
63 void
64 lwkt_abortmsg(lwkt_msg_t msg)
65 {
66     lwkt_port_t port = msg->ms_target_port;
67     port->mp_abortport(port, msg);
68 }
69
70 static __inline
71 void
72 lwkt_replymsg(lwkt_msg_t msg, int error)
73 {
74     lwkt_port_t port = msg->ms_reply_port;
75     msg->ms_error = error;
76     port->mp_replyport(port, msg);
77 }
78
79 static __inline
80 void *
81 lwkt_waitport(lwkt_port_t port, lwkt_msg_t msg)
82 {
83     return(port->mp_waitport(port, msg));
84 }
85
86 #endif
87