source: UsbWattMeter/trunk/asp_dcre/kernel/interrupt.h@ 167

Last change on this file since 167 was 167, checked in by coas-nagasima, 8 years ago

MIMEにSJISを設定

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr; charset=SHIFT_JIS
File size: 5.3 KB
RevLine 
[164]1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16 * スコード中に含まれていること.
17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20 * の無保証規定を掲載すること.
21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23 * と.
24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27 * 報告すること.
28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
32 * 免責すること.
33 *
34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
38 * の責任を負わない.
39 *
40 * @(#) $Id: interrupt.h 167 2016-03-08 11:37:45Z coas-nagasima $
41 */
42
43/*
44 * 割込み管理機能
45 */
46
47#ifndef TOPPERS_INTERRUPT_H
48#define TOPPERS_INTERRUPT_H
49
50/*
51 * 割込みサービスルーチン初期化ブロック
52 */
53typedef struct isr_initialization_block {
54 ATR isratr; /* 割込みサービスルーチン属性 */
55 intptr_t exinf; /* 割込みサービスルーチンの拡張情報 */
56 INTNO intno; /* 割込みサービスルーチンを登録する割込み番号 */
57 QUEUE *p_isr_queue; /* 登録先割込みサービスルーチンキューの番地 */
58 ISR isr; /* 割込みサービスルーチンの先頭番地 */
59 PRI isrpri; /* 割込みサービスルーチン優先度 */
60} ISRINIB;
61
62/*
63 * 割込みサービスルーチン管理ブロック
64 */
65typedef struct isr_control_block {
66 QUEUE isr_queue; /* 割込みサービスルーチン呼出しキュー */
67 const ISRINIB *p_isrinib; /* 初期化ブロックへのポインタ */
68} ISRCB;
69
70/*
71 * 割込みサービスルーチン呼出しキューを検索するためのデータ構造
72 */
73typedef struct {
74 INTNO intno; /* 割込み番号 */
75 QUEUE *p_isr_queue; /* 割込みサービスルーチン呼出しキュー */
76} ISR_ENTRY;
77
78/*
79 * 割込みサービスルーチンキューのエントリ数(kernel_cfg.c)
80 */
81extern const uint_t tnum_isr_queue;
82
83/*
84 * 割込みサービスルーチンキューリスト(kernel_cfg.c)
85 */
86extern const ISR_ENTRY isr_queue_list[];
87
88/*
89 * 割込みサービスルーチンキューのエリア(kernel_cfg.c)
90 */
91extern QUEUE isr_queue_table[];
92
93/*
94 * 使用していない割込みサービスルーチン管理ブロックのリスト
95 */
96extern QUEUE free_isrcb;
97
98/*
99 * 割込みサービスルーチンIDの最大値(kernel_cfg.c)
100 *
101 * 静的に生成される割込みサービスルーチンはID番号を持たないため,
102 * tmax_isridは動的に生成される割込みサービスルーチンのID番号の最大値
103 * である.静的に生成される割込みサービスルーチンの数は,tnum_sisrに保
104 * 持する.
105 */
106extern const ID tmax_isrid;
107extern const uint_t tnum_sisr;
108
109/*
110 * 割込みサービスルーチン初期化ブロックのエリア(kernel_cfg.c)
111 */
112extern const ISRINIB sisrinib_table[];
113extern ISRINIB aisrinib_table[];
114
115/*
116 * 割込みサービスルーチン管理ブロックのエリア(kernel_cfg.c)
117 */
118extern ISRCB isrcb_table[];
119
120/*
121 * 割込みサービスルーチン管理ブロックから割込みサービスルーチンIDを取
122 * り出すためのマクロ
123 */
124#define ISRID(p_isrcb) ((ID)(((p_isrcb) - isrcb_table) \
125 - tnum_sisr + TMIN_ISRID))
126
127/*
128 * 割込みサービスルーチン機能の初期化
129 */
130extern void initialize_isr(void);
131
132/*
133 * 割込みサービスルーチンの呼出し
134 */
135extern void call_isr(QUEUE *p_isr_queue);
136
137#ifndef OMIT_INITIALIZE_INTERRUPT
138
139/*
140 * 割込みハンドラ初期化ブロック
141 */
142typedef struct interrupt_handler_initialization_block {
143 INHNO inhno; /* 割込みハンドラ番号 */
144 ATR inhatr; /* 割込みハンドラ属性 */
145 FP int_entry; /* 割込みハンドラの出入口処理の番地 */
146} INHINIB;
147
148/*
149 * 割込み要求ライン初期化ブロック
150 */
151typedef struct interrupt_request_initialization_block {
152 INTNO intno; /* 割込み番号 */
153 ATR intatr; /* 割込み属性 */
154 PRI intpri; /* 割込み優先度 */
155} INTINIB;
156
157/*
158 * 割込みハンドラ番号の数(kernel_cfg.c)
159 */
160extern const uint_t tnum_inhno;
161
162/*
163 * 割込みハンドラ初期化ブロックのエリア(kernel_cfg.c)
164 */
165extern const INHINIB inhinib_table[];
166
167/*
168 * 割込み要求ラインの数(kernel_cfg.c)
169 */
170extern const uint_t tnum_intno;
171
172/*
173 * 割込み要求ライン初期化ブロックのエリア(kernel_cfg.c)
174 */
175extern const INTINIB intinib_table[];
176
177#endif /* OMIT_INITIALIZE_INTERRUPT */
178
179/*
180 * 割込み管理機能の初期化
181 */
182extern void initialize_interrupt(void);
183
184#endif /* TOPPERS_INTERRUPT_H */
Note: See TracBrowser for help on using the repository browser.