source: ssp_qb_r5f100le_cs/trunk/kernel/interrupt.c@ 95

Last change on this file since 95 was 95, checked in by nmir-saito, 9 years ago

ファイルの mime-type 変更

  • Property svn:mime-type set to text/plain; charset=shift_jis
File size: 3.7 KB
Line 
1/*
2 * TOPPERS/SSP Kernel
3 * Smallest Set Profile Kernel
4 *
5 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
6 * Toyohashi Univ. of Technology, JAPAN
7 * Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
8 * Graduate School of Information Science, Nagoya Univ., JAPAN
9 * Copyright (C) 2010 by Naoki Saito
10 * Nagoya Municipal Industrial Research Institute, JAPAN
11 * Copyright (C) 2010-2011 by Meika Sugimoto
12 *
13 * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
14 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
15 * 再配布(以下,利用と呼ぶ)することを無償で許諾する.
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
17 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース
18 * コード中に含まれていること.
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
20 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
21 * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
22 * 証規定を掲載すること.
23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
24 * できない形で再配布する場合には,次のいずれかの条件を満たすこと.
25 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
26 * 権表示,この利用条件および下記の無保証規定を掲載すること.
27 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
28 * 告すること.
29 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
30 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
31 * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
32 * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
33 *
34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
35 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
36 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
37 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負
38 * わない.
39 *
40 */
41
42/*
43 * 割込み管理機能
44 */
45
46#include "kernel_impl.h"
47#include "check.h"
48#include "task.h"
49#include "interrupt.h"
50
51
52/*
53 * 割込み管理機能の初期化
54 */
55#ifdef TOPPERS_intini
56#ifndef OMIT_INITIALIZE_INTERRUPT
57
58void
59initialize_interrupt(void)
60{
61 uint_t i;
62
63 for (i = 0U; i < tnum_inhno; i++) {
64 x_define_inh(inhinib_inhno[i], (FP)(inhinib_entry[i]));
65 }
66 for (i = 0U; i < tnum_intno; i++) {
67 x_config_int(intinib_intno[i], intinib_intatr[i], intinib_intpri[i]);
68 }
69}
70
71#endif /* OMIT_INITIALIZE_INTERRUPT */
72#endif /* TOPPERS_intini */
73
74/*
75 * 割込みの禁止
76 */
77#ifdef TOPPERS_dis_int
78#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
79
80ER
81dis_int(INTNO intno)
82{
83 bool_t locked;
84 ER ercd;
85
86 CHECK_TSKCTX();
87 CHECK_INTNO_DISINT(intno);
88
89 locked = t_sense_lock();
90
91 if (!locked) {
92 t_lock_cpu();
93 }
94
95 if (t_disable_int(intno)) {
96 ercd = E_OK;
97 }
98 else {
99 ercd = E_OBJ;
100 }
101
102 if (!locked) {
103 t_unlock_cpu();
104 }
105
106 error_exit:
107 return(ercd);
108}
109
110#endif /* TOPPERS_SUPPORT_DIS_INT */
111#endif /* TOPPERS_dis_int */
112
113
114/*
115 * 割込みの許可
116 */
117#ifdef TOPPERS_ena_int
118#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
119
120ER
121ena_int(INTNO intno)
122{
123 bool_t locked;
124 ER ercd;
125
126 CHECK_TSKCTX();
127 CHECK_INTNO_DISINT(intno);
128
129 locked = t_sense_lock();
130 if (!locked) {
131 t_lock_cpu();
132 }
133
134 if (t_enable_int(intno)) {
135 ercd = E_OK;
136 }
137 else {
138 ercd = E_OBJ;
139 }
140
141 if (!locked) {
142 t_unlock_cpu();
143 }
144
145 error_exit:
146 return(ercd);
147}
148
149#endif /* TOPPERS_SUPPORT_ENA_INT */
150#endif /* TOPPERS_ena_int */
Note: See TracBrowser for help on using the repository browser.