OSDN Git Service

31c043dfc9f47561614a512613b8fb8401fb29ef
[hos/hos-v4a.git] / kernel / include / core / dpc.h
1 /** 
2  *  Hyper Operating System V4 Advance
3  *
4  * @file  dpc.h
5  * @brief %jp{遅延プロシージャーコールヘッダファイル}%en{Deferred Procedure Call header file}
6  *
7  * Copyright (C) 1998-2006 by Project HOS
8  * http://sourceforge.jp/projects/hos/
9  */
10
11
12 #ifndef _KERNEL__core__dpc_h__
13 #define _KERNEL__core__dpc_h__
14
15
16 typedef struct _kernel_t_dpccb
17 {
18         VP_INT                  *msgq;
19         UINT                    msgqsz;
20         volatile UINT   head;
21         volatile UINT   tail;
22 } _KERNEL_T_DPCCB;
23
24
25 #define _KERNEL_DPC_SET_MSGQ(dcpcb, x)          do { (dcpcb)->msgq = (x); } while (0)
26 #define _KERNEL_DPC_GET_MSGQ(dcpcb)                     ((dcpcb)->msgq)
27 #define _KERNEL_DPC_SET_MSGQSZ(dcpcb, x)        do { (dcpcb)->msgqsz = (x); } while (0)
28 #define _KERNEL_DPC_GET_MSGQSZ(dcpcb)           ((dcpcb)->msgqsz)
29 #define _KERNEL_DPC_SET_HEAD(dcpcb, x)          do { (dcpcb)->msgqsz = (x); } while (0)
30 #define _KERNEL_DPC_GET_HEAD(dcpcb)                     ((dcpcb)->msgqsz)
31 #define _KERNEL_DPC_SET_TAIL(dcpcb, x)          do { (dcpcb)->msgqsz = (x); } while (0)
32 #define _KERNEL_DPC_GET_HEAD(dcpcb)                     ((dcpcb)->msgqsz)
33
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 void   _kernel_dpc_snd_msg(_KERNEL_T_DPCCB *dcpcb, VP_INT msg);
40 VP_INT _kernel_dpc_rcv_msg(_KERNEL_T_DPCCB *dcpcb);
41 UINT   _kernel_dpc_ref_dat(_KERNEL_T_DPCCB *dcpcb);
42 UINT   _kernel_dpc_ref_fre(_KERNEL_T_DPCCB *dcpcb);
43 void   _kernel_dpc_lev_svc(void);
44
45 #ifdef __cplusplus
46 }
47 #endif
48
49 #define _KERNEL_DPC_SND_MSG(dcpcb, msg)                 _kernel_dpc_snd_msg((dcpcb), (msg))
50 #define _KERNEL_DPC_RCV_MSG(dcpcb)                              _kernel_dpc_rcv_msg((dcpcb))
51 #define _KERNEL_DPC_REF_DAT(dcpcb)                              _kernel_dpc_ref_dat((dcpcb))                    /* データ数参照 */
52 #define _KERNEL_DPC_REF_FRE(dcpcb)                              _kernel_dpc_ref_fre((dcpcb))                    /* 空き領域参照 */
53
54
55 #endif  /* _KERNEL__core__dpc_h__ */
56
57
58 /* end of file */