source: ssp_qb_r5f100le_cs/trunk/kernel/task_manage.c@ 93

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

add Combined package of SSP kernel for QB-R5F100LE-TB(RL78 processor)

File size: 3.8 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) 2011 by Meika Sugimoto
12 *
13 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
14 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
15 * Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
16 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
17 * •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
18 * ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
19 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
20 * ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
21ƒƒ“ƒgi—˜—pŽÒƒ}
22 * ƒjƒ…
23ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
24 * Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
25 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
26 * ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
27 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
28ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
29ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
30 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
31 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
32 * ‚·‚邱‚ƁD
33 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
34 * ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
35 * –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
36 * ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
37 *
38 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
39 * ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
40 * ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
41 * ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
42 * ‚í‚È‚¢D
43 *
44 */
45
46/*
47 * ƒ^ƒXƒNŠÇ—‹@”\
48 */
49
50#include "kernel_impl.h"
51#include "check.h"
52#include "task.h"
53
54/*
55 * ƒgƒŒ[ƒXƒƒOƒ}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
56 */
57#ifndef LOG_ACT_TSK_ENTER
58#define LOG_ACT_TSK_ENTER(tskid)
59#endif /* LOG_ACT_TSK_ENTER */
60
61#ifndef LOG_ACT_TSK_LEAVE
62#define LOG_ACT_TSK_LEAVE(ercd)
63#endif /* LOG_ACT_TSK_LEAVE */
64
65#ifndef LOG_IACT_TSK_ENTER
66#define LOG_IACT_TSK_ENTER(tskid)
67#endif /* LOG_IACT_TSK_ENTER */
68
69#ifndef LOG_IACT_TSK_LEAVE
70#define LOG_IACT_TSK_LEAVE(ercd)
71#endif /* LOG_IACT_TSK_LEAVE */
72
73
74/*
75 * ƒ^ƒXƒN‚Ì‹N“®
76 */
77#ifdef TOPPERS_act_tsk
78
79ER
80act_tsk(ID tskid)
81{
82 ER ercd;
83 uint_t itskpri;
84
85 LOG_ACT_TSK_ENTER(tskid);
86 CHECK_TSKCTX_UNL();
87 CHECK_TSKID_SELF(tskid);
88
89 itskpri = get_ipri_self(tskid);
90
91 t_lock_cpu();
92 if (test_dormant(itskpri)) {
93 if(make_active(itskpri)) {
94 run_task(itskpri);
95 }
96 ercd = E_OK;
97 }
98 else if(!actque_test(itskpri)) {
99 actque_set(itskpri);
100 ercd = E_OK;
101 }
102 else {
103 ercd = E_QOVR;
104 }
105 t_unlock_cpu();
106
107 error_exit:
108 LOG_ACT_TSK_LEAVE(ercd);
109 return(ercd);
110}
111
112#endif /* TOPPERS_act_tsk */
113
114/*
115 * ƒ^ƒXƒN‚Ì‹N“®i”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pj
116 */
117
118#ifdef TOPPERS_iact_tsk
119
120ER
121iact_tsk(ID tskid)
122{
123 ER ercd;
124 uint_t itskpri;
125
126 LOG_IACT_TSK_ENTER(tskid);
127 CHECK_INTCTX_UNL();
128 CHECK_TSKID(tskid);
129 itskpri = get_ipri(tskid);
130
131 i_lock_cpu();
132 if (test_dormant(itskpri)) {
133 if(make_active(itskpri)) {
134 reqflg = true;
135 }
136 ercd = E_OK;
137 }
138 else if(!actque_test(itskpri)) {
139 actque_set(itskpri);
140 ercd = E_OK;
141 }
142 else {
143 ercd = E_QOVR;
144 }
145 i_unlock_cpu();
146
147 error_exit:
148 LOG_IACT_TSK_LEAVE(ercd);
149 return(ercd);
150}
151
152#endif /* TOPPERS_iact_tsk */
Note: See TracBrowser for help on using the repository browser.