If the current thread is not a network thread then rejecting the packet back
[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.15 2007/05/24 20:51:19 dillon Exp $
7  */
8
9 #ifndef _SYS_MSGPORT2_H_
10 #define _SYS_MSGPORT2_H_
11
12 #ifndef _KERNEL
13
14 #error "This file should not be included by userland programs."
15
16 #else
17
18 #ifndef _SYS_THREAD2_H_
19 #include <sys/thread2.h>
20 #endif
21
22 /*
23  * Initialize a LWKT message structure.  Note that if the message supports
24  * an abort MSGF_ABORTABLE must be passed in flags.
25  *
26  * Note that other areas of the LWKT msg may already be initialized, so we
27  * do not zero the message here.
28  *
29  * Messages are marked as DONE until sent.
30  */
31 static __inline
32 void
33 lwkt_initmsg(lwkt_msg_t msg, lwkt_port_t rport, int flags)
34 {
35     msg->ms_flags = MSGF_DONE | flags;
36     msg->ms_reply_port = rport;
37 }
38
39 static __inline
40 void
41 lwkt_initmsg_abortable(lwkt_msg_t msg, lwkt_port_t rport, int flags,
42                        void (*abortfn)(lwkt_msg_t))
43 {
44     lwkt_initmsg(msg, rport, flags | MSGF_ABORTABLE);
45     msg->ms_abortfn = abortfn;
46 }
47
48 static __inline
49 int
50 lwkt_beginmsg(lwkt_port_t port, lwkt_msg_t msg)
51 {
52     return(port->mp_putport(port, msg));
53 }
54
55 static __inline
56 void
57 lwkt_replymsg(lwkt_msg_t msg, int error)
58 {   
59     lwkt_port_t port;
60
61     msg->ms_error = error;
62     port = msg->ms_reply_port;
63     port->mp_replyport(port, msg);
64 }
65
66 static __inline
67 void *
68 lwkt_getport(lwkt_port_t port)
69 {
70     return(port->mp_getport(port));
71 }
72
73 static __inline
74 void *
75 lwkt_waitport(lwkt_port_t port, int flags)
76 {
77     return(port->mp_waitport(port, flags));
78 }
79
80 static __inline
81 int
82 lwkt_waitmsg(lwkt_msg_t msg, int flags)
83 {
84     return(msg->ms_reply_port->mp_waitmsg(msg, flags));
85 }
86
87
88 static __inline
89 int
90 lwkt_checkmsg(lwkt_msg_t msg)
91 {
92     return(msg->ms_flags & MSGF_DONE);
93 }
94
95 #endif  /* _KERNEL */
96 #endif  /* _SYS_MSGPORT2_H_ */