| [7] | 1 | TOPPERS Confidential |
|---|
| 2 | TOPPERS¥×¥í¥ž¥§¥¯¥È ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥á¥â |
|---|
| 3 | ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ËŽØ€¹€ëÀß·×¥á¥â |
|---|
| 4 | |
|---|
| 5 | ºîÀ®ŒÔ: ¹âÅĹŸÏ¡ÊÌŸžÅ²°Âç³Ø¡Ë |
|---|
| 6 | ºÇœª¹¹¿·: 2014ǯ9·î28Æü |
|---|
| 7 | |
|---|
| 8 | ¡û¥á¥â€Î°ÌÃÖÉÕ€± |
|---|
| 9 | |
|---|
| 10 | €³€Î¥É¥¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€Î¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€ËŽØ |
|---|
| 11 | €¹€ëÀß·×¥á¥â€Ç€¢€ë¡¥ |
|---|
| 12 | |
|---|
| 13 | ¡û¥Ç¡Œ¥¿·¿€ÈÄê¿ô€ÎÄêµÁ |
|---|
| 14 | |
|---|
| 15 | ¥×¥í¥»¥Ã¥µ»þŽÖ€òÉœžœ€¹€ë¥Ç¡Œ¥¿·¿OVRTIM€ÎÄêµÁ€ò¡€kernel.h€ËŽÞ€á€ë¡¥ |
|---|
| 16 | |
|---|
| 17 | ---------------------------------------- |
|---|
| 18 | typedef ulong_t OVRTIM; /* ¥×¥í¥»¥Ã¥µ»þŽÖ */ |
|---|
| 19 | ---------------------------------------- |
|---|
| 20 | |
|---|
| 21 | ¥×¥í¥»¥Ã¥µ»þŽÖ€Ë»ØÄê€Ç€€ëºÇÂçÃ̀ϡ€¥¿¡Œ¥²¥Ã¥È°ÍžÉô¡Êtarget_kernel.h€Þ |
|---|
| 22 | €¿€Ï€œ€³€«€é¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¥Õ¥¡¥€¥ë¡Ë€ÇÄêµÁ€¹€ë€â€Î€È€¹€ë€¬¡€¥Ç¥Õ¥© |
|---|
| 23 | ¥ë¥È€ÎÄêµÁ€òkernel.h€ËŽÞ€á€ë¡¥ |
|---|
| 24 | |
|---|
| 25 | ---------------------------------------- |
|---|
| 26 | #ifndef TMAX_OVRTIM |
|---|
| 27 | #define TMAX_OVRTIM ULONG_MAX |
|---|
| 28 | #endif /* TMAX_OVRTIM */ |
|---|
| 29 | ---------------------------------------- |
|---|
| 30 | |
|---|
| 31 | €Þ€¿¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Î¥Ç¡Œ¥¿·¿OVRHDR€ÎÄêµÁ€ò¡€kernel.h€ËŽÞ€á€ë¡¥ |
|---|
| 32 | |
|---|
| 33 | ---------------------------------------- |
|---|
| 34 | typedef void (*OVRHDR)(ID tskid, intptr_t exinf); |
|---|
| 35 | ---------------------------------------- |
|---|
| 36 | |
|---|
| 37 | €³€ÎŸ€Ë¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€ÈŽØÏ¢€¹€ëÄê¿ô€Î |
|---|
| 38 | ÄêµÁ€ò¡€kernel€ËŽÞ€á€ë¡¥ |
|---|
| 39 | |
|---|
| 40 | ¡ûÍÑ€€€ë¥Ï¡Œ¥É¥Š¥§¥¢»ñž»€È¥µ¥Ý¡Œ¥È€Ç€€Ê€€Ÿì¹ç€ÎÁŒÃÖ |
|---|
| 41 | |
|---|
| 42 | ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€òŒÂžœ€¹€ë€Ë¡€¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î³ä¹þ€ß€òȯÀž€µ€»€ë€Î€È |
|---|
| 43 | €ÏỀΥ¿¥€¥Þ¡Ê°Ê²Œ¡€€³€ì€ò¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÈžÆ€Ö¡Ë€òÍÑ€€€ë¡¥€œ€Î€¿€á¡€ |
|---|
| 44 | ¥¿¡Œ¥²¥Ã¥È€Ë€è€Ã€Æ€Ï¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ò¥µ¥Ý¡Œ¥È€Ç€€Ê€€Ÿì¹ç€â¹Í€š€é |
|---|
| 45 | €ì€ë¡¥€Þ€¿¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ò¥µ¥Ý¡Œ¥È€¹€ë€³€È€Ç¡€¥¿¥¹¥¯ÀÚŽ¹€š€Ë€«€« |
|---|
| 46 | €ë¥ª¡Œ¥Ð¥Ø¥Ã¥É€¬ÌäÂê€Ë€Ê€ëŸì¹ç€â¹Í€š€é€ì€ë¡¥ |
|---|
| 47 | |
|---|
| 48 | €œ€³€Ç¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ò¥µ¥Ý¡Œ¥È€Ç€€ëŸì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Ë |
|---|
| 49 | €ª€€€Æ¡€TOPPERS_TARGET_SUPPORT_OVRHDR€ò¥Þ¥¯¥íÄêµÁ€¹€ë€â€Î€È€¹€ë¡¥ |
|---|
| 50 | |
|---|
| 51 | ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€Îkernel.h€Ç€Ï¡€TOPPERS_TARGET_SUPPORT_OVRHDR |
|---|
| 52 | €¬¥Þ¥¯¥íÄêµÁ€µ€ì€Æ€€€ì€Ð¡€TOPPERS_SUPPORT_OVRHDR€òÄêµÁ€¹€ë¡¥ |
|---|
| 53 | |
|---|
| 54 | ---------------------------------------- |
|---|
| 55 | #ifdef TOPPERS_TARGET_SUPPORT_OVRHDR |
|---|
| 56 | #define TOPPERS_SUPPORT_OVRHDR /* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥ */ |
|---|
| 57 | #endif /* TOPPERS_TARGET_SUPPORT_OVRHDR */ |
|---|
| 58 | ---------------------------------------- |
|---|
| 59 | |
|---|
| 60 | ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€Ï¡€TOPPERS_SUPPORT_OVRHDR€¬ÄêµÁ€µ€ì€Æ€€€ëŸì¹ç€Î |
|---|
| 61 | €ßÁȀ߹þ€à¡¥€³€ì€Ë€è€ê¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€ò»ÈÍÑ€·¡€¥¿¡Œ¥²¥Ã¥È |
|---|
| 62 | °ÍžÉô€¬¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ò¥µ¥Ý¡Œ¥È€·€Æ€€€ëŸì¹ç€Î€ß¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É |
|---|
| 63 | ¥éµ¡Çœ€¬ÁȀ߹þ€Þ€ì€ë€³€È€Ë€Ê€ë¡¥ |
|---|
| 64 | |
|---|
| 65 | ¡û¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ËŽØÏ¢€¹€ë¥Ç¡Œ¥¿¹œÂ€ |
|---|
| 66 | |
|---|
| 67 | ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€òŒÂÁõ€¹€ë€¿€á€Ë¡€TCB€Ë¡€»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òÉœ€¹¥Õ¥£¡Œ |
|---|
| 68 | ¥ë¥Éleftotm€òÀ߀±€ë¡Êtask.h¡Ë¡¥ |
|---|
| 69 | |
|---|
| 70 | ---------------------------------------- |
|---|
| 71 | typedef struct task_control_block { |
|---|
| 72 | ... |
|---|
| 73 | OVRTIM leftotm; /* »Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ */ |
|---|
| 74 | ... |
|---|
| 75 | } TCB; |
|---|
| 76 | ---------------------------------------- |
|---|
| 77 | |
|---|
| 78 | ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ŸõÂրλþ€Ï¡€leftotm€ò0€ËÀßÄꀹ€ë€³€È |
|---|
| 79 | €È€·¡€make_dormant€ÎÃæ€Ç0€ËœéŽü²œ€¹€ë¡Êtask.c¡Ë¡¥ |
|---|
| 80 | |
|---|
| 81 | ---------------------------------------- |
|---|
| 82 | void |
|---|
| 83 | make_dormant(TCB *p_tcb) |
|---|
| 84 | { |
|---|
| 85 | ... |
|---|
| 86 | p_tcb->leftotm = 0U; |
|---|
| 87 | ... |
|---|
| 88 | } |
|---|
| 89 | ---------------------------------------- |
|---|
| 90 | |
|---|
| 91 | ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ËÂЀ·€Æ€Ï¡€ŽÉÍý¥Ö¥í¥Ã¥¯€ÏɬÍ׀ʀ¯¡€DEF_OVR€ÇÄêµÁ€·€¿ |
|---|
| 92 | ŸðÊó€ò³ÊÇŒ€·€¿œéŽü²œ¥Ö¥í¥Ã¥¯€Î€ß€òÍѰՀ¹€ë¡¥œéŽü²œ¥Ö¥í¥Ã¥¯€â¡€Ã±°ì€ÎÍ× |
|---|
| 93 | ÁǀǜœÊ¬€Ç€¢€ê¡€ÇÛÎó€Ç€¢€ëɬÍ׀πʀ€¡Êoverrun.h¡Ë¡¥ |
|---|
| 94 | |
|---|
| 95 | ---------------------------------------- |
|---|
| 96 | typedef struct overrun_handler_initialization_block { |
|---|
| 97 | ATR ovratr; /* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é°À */ |
|---|
| 98 | OVRHDR ovrhdr; /* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Îµ¯Æ°ÈÖÃÏ */ |
|---|
| 99 | } OVRINIB; |
|---|
| 100 | ---------------------------------------- |
|---|
| 101 | extern const OVRINIB ovrinib; |
|---|
| 102 | ---------------------------------------- |
|---|
| 103 | |
|---|
| 104 | ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Æ°ºîÃæ€«€òŒš€¹¥Õ¥é¥°€È€·€Æ¡€boot_t·¿€ÎÊÑ¿ô |
|---|
| 105 | ovrtimer_flag€òÍѰՀ¹€ë¡Êoverrun.h¡€overrun.c¡Ë¡¥ |
|---|
| 106 | |
|---|
| 107 | ---------------------------------------- |
|---|
| 108 | extern boot_t ovrtimer_flag; |
|---|
| 109 | ---------------------------------------- |
|---|
| 110 | |
|---|
| 111 | ¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ€ÎŸì¹ç€Ë€Ï¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Æ°ºîÃæ€«€Ï¡€Œ¡€ÎÊýË¡€Ç |
|---|
| 112 | ÈœÊÌ€¹€ë€³€È€¬€Ç€€ë¡¥ |
|---|
| 113 | |
|---|
| 114 | ¥¿¥¹¥¯¥³¥ó¥Æ¥¥¹¥È€Ç€Ï¡€(p_runtsk->leftotm > 0U)€Î»þ€Î€ßưºî€·€Æ€€€ë¡¥ |
|---|
| 115 | È󥿥¹¥¯¥³¥ó¥Æ¥¥¹¥È€Ç€Ï¡€Æ°ºî€·€Æ€€€Ê€€¡¥ |
|---|
| 116 | |
|---|
| 117 | €œ€Î€¿€á¡€€³€Î¥Õ¥é¥°€òÍÑ€€€Ê€€ŒÂÁõ€â²ÄÇœ€Ç€¢€ë€¬¡€¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ€Ø€Î |
|---|
| 118 | ³ÈÄ¥À€ä¥¿¡Œ¥²¥Ã¥È°ÍžÀ€ò²Œ€²€ë€¿€á€Ë¡€€³€ì€òÍÑ€€€ëŒÂÁõ€È€·€Æ€€€ë¡ÊŒÂ |
|---|
| 119 | ºÝ¡€Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Ç€Ï¡€€³€ì€ò³èÍÑ€·€Æ€€€ë¡Ë¡¥ |
|---|
| 120 | |
|---|
| 121 | ¡û»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€ÎÊÝž¡¿Éüµ¢œèÍý€ÎÆâÍÆ |
|---|
| 122 | |
|---|
| 123 | ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ª€è€Ó³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎœÐÆþžý€Ç¡€¥¿¥¹¥¯€Î»Ä€ê¥×¥í |
|---|
| 124 | ¥»¥Ã¥µ»þŽÖ€òÊÝž¡¿Éüµ¢€¹€ëɬÍ×€¬€¢€ë¡¥¶ñÂÎŪ€Ë€Ï¡€°Ê²Œ€Î€è€Š€ÊœèÍý€¬É¬ |
|---|
| 125 | Í׀ǀ¢€ë¡¥ |
|---|
| 126 | |
|---|
| 127 | (a) dispatch€Ø€ÎÆþžý |
|---|
| 128 | |
|---|
| 129 | ovrtimer_flag€¬true€Ç€¢€ì€Ð¡Ê€Þ€¿€Ï¡€p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡Ë¡€ |
|---|
| 130 | ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÄä»ß€µ€»¡€»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€Ë³ÊÇŒ |
|---|
| 131 | €¹€ë¡¥»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€¬0¡Ê€Þ€¿€Ï€œ€ìÌ€Ëþ¡Ë€Ë€Ê€Ã€Æ€€€¿Ÿì¹ç€Ë€Ï¡€ |
|---|
| 132 | p_runtsk->leftotm€Ë1€ò³ÊÇŒ€¹€ë¡¥ |
|---|
| 133 | |
|---|
| 134 | (b) dispatch€«€é€ÎœÐžý |
|---|
| 135 | |
|---|
| 136 | ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·Á°€Ë¡€p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡€»Ä |
|---|
| 137 | €ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€È€·€Æ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òưºî³«»Ï€¹€ë¡¥ |
|---|
| 138 | |
|---|
| 139 | (c) ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎÆþžý |
|---|
| 140 | |
|---|
| 141 | ovrtimer_flag€¬true€Ç€¢€ì€Ð¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÄä»ß€µ€»¡€»Ä€ê¥×¥í¥»¥Ã¥µ |
|---|
| 142 | »þŽÖ€òp_runtsk->leftotm€Ë³ÊÇŒ€¹€ë¡¥»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€¬0¡Ê€Þ€¿€Ï€œ€ìÌ€ |
|---|
| 143 | Ëþ¡Ë€Ë€Ê€Ã€Æ€€€¿Ÿì¹ç€Ë€Ï¡€p_runtsk->leftotm€Ë1€ò³ÊÇŒ€¹€ë¡¥ |
|---|
| 144 | |
|---|
| 145 | €³€ÎœèÍý€Ï¡€¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò€¹€Ù€Æ¶Ø»ß€·€¿ŸõÂրǹԀŠÉ¬Í×€¬€¢€ë¡¥ |
|---|
| 146 | ³ä¹þ€ß¡¿CPUÎ㳰ȯÀžÄŸžå€Ë€¹€Ù€Æ€Î³ä¹þ€ß€¬¶Ø»ß€µ€ì€Ê€€¥×¥í¥»¥Ã¥µ€Ç€Ï¡€³ä |
|---|
| 147 | ¹þ€ß€ò¶Ø»ß€·€¿žå€Ë€³€ÎœèÍý€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥ |
|---|
| 148 | |
|---|
| 149 | (d) ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎœÐžý |
|---|
| 150 | |
|---|
| 151 | ¥¿¥¹¥¯¥³¥ó¥Æ¥¥¹¥È€ËÌá€ëŸì¹ç€Ë¡€p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡€»Ä€ê¥× |
|---|
| 152 | ¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€È€·€Æ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òưºî³«»Ï€¹€ë¡¥ |
|---|
| 153 | |
|---|
| 154 | (e) ¥¿¥¹¥¯€ÎœªÎ»»þ |
|---|
| 155 | |
|---|
| 156 | ovrtimer_flag€¬true€Ç€¢€ì€Ð¡Ê€Þ€¿€Ï¡€p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡Ë¡€ |
|---|
| 157 | ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÄä»ß€µ€»€ë¡¥»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€Ë³Ê |
|---|
| 158 | ÇŒ€¹€ëɬÍ׀πʀ€¡Êmake_dormant€Ç0€¬³ÊÇŒ€µ€ì€ë¡Ë¡¥ |
|---|
| 159 | |
|---|
| 160 | (f) ¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þ |
|---|
| 161 | |
|---|
| 162 | p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡€»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€È |
|---|
| 163 | €·€Æ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òưºî³«»Ï€¹€ë¡¥ |
|---|
| 164 | |
|---|
| 165 | ¡û¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Î¥€¥ó¥¿¥Õ¥§¡Œ¥¹ |
|---|
| 166 | |
|---|
| 167 | ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€Î¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Ç€Ï¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÍрΥ¿ |
|---|
| 168 | ¥€¥Þ¡Ê°Ê²Œ¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÈžÆ€Ö¡Ë€òÁàºî€¹€ë€¿€á€Îµ¡Çœ€òÄó¶¡€¹€ë¡¥ |
|---|
| 169 | |
|---|
| 170 | €Þ€º¡€Œ¡€ÎÄê¿ô€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥ |
|---|
| 171 | |
|---|
| 172 | (1) TMAX_OVRTIM |
|---|
| 173 | |
|---|
| 174 | ¥×¥í¥»¥Ã¥µ»þŽÖ€È€·€Æ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÍÑ¥¿¥€¥Þ€ËÀßÄê€Ç€€ëºÇÂç€ÎÃÍ¡¥Ã± |
|---|
| 175 | °Ì€Ï¥Þ¥€¥¯¥íÉÀȀ¹€ë¡¥¥¿¡Œ¥²¥Ã¥È°ÍžÉô€ÇÄêµÁ€·€Ê€€Ÿì¹ç€Ë€Ï¡€kernel.h€Ç |
|---|
| 176 | ULONG_MAX€ËÄêµÁ€¹€ë¡¥ |
|---|
| 177 | |
|---|
| 178 | €Þ€¿¡€Œ¡€Î5€Ä€ÎŽØ¿ô€òÍѰՀ¹€ë¡¥ |
|---|
| 179 | |
|---|
| 180 | (1) void target_ovrtimer_initialize(intptr_t exinf) |
|---|
| 181 | |
|---|
| 182 | ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎœéŽü²œœèÍý€ò¹Ô€Š¡¥¥¿¥€¥Þ€Îưºî³«»Ï€Ï¹Ô€ï€Ê€€¡¥ |
|---|
| 183 | |
|---|
| 184 | €³€ÎŽØ¿ô€Ï¡€target_timer.cfgÃæ€ËµœÒ€¹€ëÀÅŪAPI€Ë€è€ê¡€œéŽü²œ¥ë¡Œ¥Á¥ó€È |
|---|
| 185 | €·€Æ¥«¡Œ¥Í¥ë€ËÅÐÏ¿€¹€ë€³€È€òÁÛÄꀷ€Æ€€€ë¡¥ |
|---|
| 186 | |
|---|
| 187 | (2) void target_ovrtimer_terminate(intptr_t exinf) |
|---|
| 188 | |
|---|
| 189 | ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ßœèÍý€ò¹Ô€Š¡¥ |
|---|
| 190 | |
|---|
| 191 | €³€ÎŽØ¿ô€Ï¡€target_timer.cfgÃæ€ËµœÒ€¹€ëÀÅŪAPI€Ë€è€ê¡€œªÎ»œèÍý¥ë¡Œ¥Á¥ó |
|---|
| 192 | €È€·€Æ¥«¡Œ¥Í¥ë€ËÅÐÏ¿€¹€ë€³€È€òÁÛÄꀷ€Æ€€€ë¡¥ |
|---|
| 193 | |
|---|
| 194 | (3) void target_ovrtimer_start(OVRTIM ovrtim) |
|---|
| 195 | |
|---|
| 196 | ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ò¡€ovrtim€Ç»ØÄꀷ€¿»þŽÖ€¬·Ð²á€·€¿€é³ä¹þ€ß€¬È¯Àž€¹€ë€è |
|---|
| 197 | €Š€ËÀßÄꀷ¡€Æ°ºî³«»Ï€¹€ë¡¥ovrtim€Îñ°Ì€Ï¥Þ¥€¥¯¥íÉÀȀ¹€ë¡¥ |
|---|
| 198 | |
|---|
| 199 | (4) OVRTIM target_ovrtimer_stop(void) |
|---|
| 200 | |
|---|
| 201 | ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÄä»ß€·¡€¥¿¥€¥Þ€Î»Ä€ê»þŽÖ€òÆÉ€ßœÐ€¹¡¥€â€·»Ä€ê»þŽÖ€¬ |
|---|
| 202 | 0¡Ê€Þ€¿€Ï€œ€ìÌ€Ëþ¡Ë€Ë€Ê€Ã€Æ€€€¿Ÿì¹ç€Ë€Ï¡€1€òÊÖ€¹¡¥€Þ€¿¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€ |
|---|
| 203 | ¥Þ€«€é€Î³ä¹þ€ß€ò¥¯¥ê¥¢€¹€ë¡¥ |
|---|
| 204 | |
|---|
| 205 | (5) OVRTIM target_ovrtimer_get_current(void) |
|---|
| 206 | |
|---|
| 207 | ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Î»Ä€ê»þŽÖ€òÆÉ€ßœÐ€¹¡¥€â€·»Ä€ê»þŽÖ€¬0¡Ê€Þ€¿€Ï€œ€ìÌ€Ëþ¡Ë |
|---|
| 208 | €Ë€Ê€Ã€Æ€€€¿Ÿì¹ç€Ë€Ï¡€0€òÊÖ€¹¡¥¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€«€é€Î³ä¹þ€ß€Ï¥¯¥ê¥¢€·€Ê |
|---|
| 209 | €€¡¥ |
|---|
| 210 | |
|---|
| 211 | ¡û»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€ÎÊÝž¡¿Éüµ¢€ÎŒÂÁõ¡Ê¥¿¡Œ¥²¥Ã¥ÈÈó°ÍžÉô¡Ë |
|---|
| 212 | |
|---|
| 213 | Á°µ€ÎœèÍýÆâÍÆ€ÎÃæ€Ç¡€(a)€È(c)€Ï¡€žÆœÐ€·Ÿò·ï€¬°ã€Š€À€±€ÇœèÍýÆâÍÆ€ÏƱ°ì |
|---|
| 214 | €Ç€¢€ë€¿€á¡€€³€ì€òŒÂžœ€¹€ëŽØ¿ôovrtimer_stop€ò¥¿¡Œ¥²¥Ã¥ÈÈó°ÍžÉô€ËÀ߀±¡€ |
|---|
| 215 | ¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Î³ºÅö²Õœê€«€éžÆ€ÓœÐ€¹€è€Š€Ë€¹€ë¡¥ |
|---|
| 216 | |
|---|
| 217 | ---------------------------------------- |
|---|
| 218 | void |
|---|
| 219 | ovrtimer_stop(void) |
|---|
| 220 | { |
|---|
| 221 | if (ovrtimer_flag) { |
|---|
| 222 | assert(p_runtsk->leftotm > 0U); |
|---|
| 223 | p_runtsk->leftotm = target_ovrtimer_stop(); |
|---|
| 224 | ovrtimer_flag = false; |
|---|
| 225 | } |
|---|
| 226 | } |
|---|
| 227 | ---------------------------------------- |
|---|
| 228 | |
|---|
| 229 | €Þ€¿(b),(d),(f)€â¡€žÆœÐ€·Ÿò·ï€¬°ã€Š€À€±€ÇœèÍýÆâÍÆ€ÏƱ°ì€Ç€¢€ë€¿€á¡€€³€ì |
|---|
| 230 | €òŒÂžœ€¹€ëŽØ¿ôovrtimer_start€ò¥¿¡Œ¥²¥Ã¥ÈÈó°ÍžÉô€ËÀ߀±¡€¥¿¡Œ¥²¥Ã¥È°Íž |
|---|
| 231 | Éô€Î³ºÅö²Õœê€«€éžÆ€ÓœÐ€¹€è€Š€Ë€¹€ë¡¥ |
|---|
| 232 | |
|---|
| 233 | ---------------------------------------- |
|---|
| 234 | void |
|---|
| 235 | ovrtimer_start(void) |
|---|
| 236 | { |
|---|
| 237 | if (p_runtsk->leftotm > 0U) { |
|---|
| 238 | target_ovrtimer_start(p_runtsk->leftotm); |
|---|
| 239 | ovrtimer_flag = true; |
|---|
| 240 | } |
|---|
| 241 | } |
|---|
| 242 | ---------------------------------------- |
|---|
| 243 | |
|---|
| 244 | (e)€Ï¡€»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€Ë³ÊÇŒ€¹€ëɬÍ׀πʀ€ÅÀ€Ç |
|---|
| 245 | (a),(c)€ÈœèÍýÆâÍÆ€¬°Û€Ê€ë€¬¡€p_runtsk->leftotm€Ïmake_dormant€Ç0€ËœéŽü²œ |
|---|
| 246 | €µ€ì€ë€¿€á¡€make_dormant€òžÆ€ÓœÐ€¹Á°€Ç€¢€ì€Ð¡€ovrtimer_stop€òήÍÑ€¹€ë€³ |
|---|
| 247 | €È€¬€Ç€€ë¡¥€œ€³€Ç¡€ext_tsk€ËŒ¡€Îœ€Àµ€ò²Ã€š€ë¡Êtask_manage.c¡Ë¡¥ |
|---|
| 248 | |
|---|
| 249 | ---------------------------------------- |
|---|
| 250 | ER |
|---|
| 251 | ext_tsk(void) |
|---|
| 252 | { |
|---|
| 253 | ... |
|---|
| 254 | (void) make_non_runnable(p_runtsk); |
|---|
| 255 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 256 | | ovrtimer_stop(); |
|---|
| 257 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 258 | make_dormant(p_runtsk); |
|---|
| 259 | ... |
|---|
| 260 | } |
|---|
| 261 | ---------------------------------------- |
|---|
| 262 | |
|---|
| 263 | ¡û»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€ÎÊÝž¡¿Éüµ¢€ÎŒÂÁõ¡Ê¥¿¡Œ¥²¥Ã¥È°ÍžÉô¡Ë |
|---|
| 264 | |
|---|
| 265 | (a) dispatch€Ø€ÎÆþžý |
|---|
| 266 | |
|---|
| 267 | ---------------------------------------- |
|---|
| 268 | void |
|---|
| 269 | dispatch(void) |
|---|
| 270 | { |
|---|
| 271 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 272 | | ovrtimer_stop(); /* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß */ |
|---|
| 273 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 274 | ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òœü€¯€¹€Ù€Æ€Î¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€ËÊÝž€¹€ë |
|---|
| 275 | ... |
|---|
| 276 | } |
|---|
| 277 | ---------------------------------------- |
|---|
| 278 | |
|---|
| 279 | (b) dispatch€«€é€ÎœÐžý |
|---|
| 280 | |
|---|
| 281 | ---------------------------------------- |
|---|
| 282 | void |
|---|
| 283 | dispatch(void) |
|---|
| 284 | { |
|---|
| 285 | ... |
|---|
| 286 | |
|---|
| 287 | dispatch_r: |
|---|
| 288 | ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òœü€¯€¹€Ù€Æ€Î¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€«€éÉüµ¢€¹€ë |
|---|
| 289 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 290 | | ovrtimer_start(); /* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Îưºî³«»Ï */ |
|---|
| 291 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 292 | calltex(); ¡Ä (*b) |
|---|
| 293 | } |
|---|
| 294 | ---------------------------------------- |
|---|
| 295 | |
|---|
| 296 | (c) ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎÆþžý |
|---|
| 297 | |
|---|
| 298 | ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎÆþžý€ÏŒ¡€ÎÄÌ€ê€Ëœ€Àµ€¹€ë¡¥ |
|---|
| 299 | |
|---|
| 300 | ---------------------------------------- |
|---|
| 301 | void |
|---|
| 302 | <³ä¹þ€ß€ÎœÐÆþžýœèÍý>(void) |
|---|
| 303 | { |
|---|
| 304 | ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€ËÊÝž€¹€ë |
|---|
| 305 | if (¥¿¥¹¥¯¥³¥ó¥Æ¥¥¹¥È€Ç³ä¹þ€ßȯÀž) { |
|---|
| 306 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 307 | | ¡ÊŸ¯€Ê€¯€È€â¡Ë¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€¿ŸõÂրˀ¹€ë |
|---|
| 308 | | ovrtimer_stop(); /* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß */ |
|---|
| 309 | | ¡ÊɬÍ׀ʀé¡Ëžµ€ÎŸõÂÖ€ËÌ္ |
|---|
| 310 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 311 | ¥¹¥¿¥Ã¥¯€òÈ󥿥¹¥¯¥³¥ó¥Æ¥¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯€ËÀڀꎹ€š¡€ |
|---|
| 312 | È󥿥¹¥¯¥³¥ó¥Æ¥¥¹¥È€ËÀڀꎹ€š€ë |
|---|
| 313 | } |
|---|
| 314 | ... |
|---|
| 315 | } |
|---|
| 316 | ---------------------------------------- |
|---|
| 317 | void |
|---|
| 318 | <CPUÎã³°€ÎœÐÆþžýœèÍý>(void) |
|---|
| 319 | { |
|---|
| 320 | ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€ËÊÝž€¹€ë |
|---|
| 321 | if (¥¿¥¹¥¯¥³¥ó¥Æ¥¥¹¥È€ÇCPUÎ㳰ȯÀž) { |
|---|
| 322 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 323 | | ¡ÊŸ¯€Ê€¯€È€â¡Ë¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€¿ŸõÂրˀ¹€ë |
|---|
| 324 | | ovrtimer_stop(); /* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß */ |
|---|
| 325 | | ¡ÊɬÍ׀ʀé¡Ëžµ€ÎŸõÂÖ€ËÌ္ |
|---|
| 326 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 327 | ¥¹¥¿¥Ã¥¯€òÈ󥿥¹¥¯¥³¥ó¥Æ¥¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯€ËÀڀꎹ€š¡€ |
|---|
| 328 | È󥿥¹¥¯¥³¥ó¥Æ¥¥¹¥È€ËÀڀꎹ€š€ë |
|---|
| 329 | } |
|---|
| 330 | ... |
|---|
| 331 | } |
|---|
| 332 | ---------------------------------------- |
|---|
| 333 | |
|---|
| 334 | (d) ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎœÐžý |
|---|
| 335 | |
|---|
| 336 | ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎœÐžý€ÏŒ¡€ÎÄÌ€ê€Ëœ€Àµ€¹€ë¡¥ |
|---|
| 337 | |
|---|
| 338 | ---------------------------------------- |
|---|
| 339 | void |
|---|
| 340 | <³ä¹þ€ß€ÎœÐÆþžýœèÍý>(void) |
|---|
| 341 | { |
|---|
| 342 | ... |
|---|
| 343 | |
|---|
| 344 | ret_int_r: |
|---|
| 345 | ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òœü€¯€¹€Ù€Æ€Î¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€«€éÉüµ¢€¹€ë |
|---|
| 346 | } |
|---|
| 347 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 348 | | ovrtimer_start(); /* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Îưºî³«»Ï */ |
|---|
| 349 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 350 | calltex(); ¡Ä (*b) |
|---|
| 351 | } |
|---|
| 352 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 353 | | else { |
|---|
| 354 | | ¡ÊŸ¯€Ê€¯€È€â¡Ë¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€¿ŸõÂրˀ¹€ë |
|---|
| 355 | | ovrtimer_start(); /* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Îưºî³«»Ï */ |
|---|
| 356 | | } |
|---|
| 357 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 358 | } |
|---|
| 359 | ... |
|---|
| 360 | } |
|---|
| 361 | ---------------------------------------- |
|---|
| 362 | void |
|---|
| 363 | <CPUÎã³°€ÎœÐÆþžýœèÍý>(void) |
|---|
| 364 | { |
|---|
| 365 | ... |
|---|
| 366 | |
|---|
| 367 | ret_exc_r: |
|---|
| 368 | ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òœü€¯€¹€Ù€Æ€Î¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€«€éÉüµ¢€¹€ë |
|---|
| 369 | } |
|---|
| 370 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 371 | | ovrtimer_start(); /* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Îưºî³«»Ï */ |
|---|
| 372 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 373 | calltex(); ¡Ä (*b) |
|---|
| 374 | } |
|---|
| 375 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 376 | | else { |
|---|
| 377 | | ¡ÊŸ¯€Ê€¯€È€â¡Ë¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€¿ŸõÂրˀ¹€ë |
|---|
| 378 | | ovrtimer_start(); /* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Îưºî³«»Ï */ |
|---|
| 379 | | } |
|---|
| 380 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 381 | } |
|---|
| 382 | CPUÎã³°œèÍý€«€é€Î¥ê¥¿¡Œ¥ó€Ç¡€CPU¥í¥Ã¥¯ŸõÂÖ¡¿¥í¥Ã¥¯²òœüŸõÂÖ€¬ |
|---|
| 383 | CPUÎ㳰ȯÀž»þ€ÎŸõÂÖ€ËÌá€ë€è€Š€ËœàÈ÷€¹€ë |
|---|
| 384 | ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€«€éÉüµ¢€¹€ë |
|---|
| 385 | CPUÎã³°œèÍý€«€é€Î¥ê¥¿¡Œ¥ó |
|---|
| 386 | } |
|---|
| 387 | ---------------------------------------- |
|---|
| 388 | |
|---|
| 389 | (e) ¥¿¥¹¥¯€ÎœªÎ»»þ |
|---|
| 390 | |
|---|
| 391 | ¥¿¡Œ¥²¥Ã¥ÈÈó°ÍžÉô€Îext_tsk€ÇÂбþ€·€¿¡¥ |
|---|
| 392 | |
|---|
| 393 | (f) ¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þ |
|---|
| 394 | |
|---|
| 395 | ---------------------------------------- |
|---|
| 396 | void |
|---|
| 397 | activate_context(TCB *p_tcb) |
|---|
| 398 | { |
|---|
| 399 | ... |
|---|
| 400 | |
|---|
| 401 | start_r: |
|---|
| 402 | |#ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 403 | | ovrtimer_start(); /* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Îưºî³«»Ï */ |
|---|
| 404 | |#endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 405 | CPU¥í¥Ã¥¯²òœüŸõÂրˀ¹€ë |
|---|
| 406 | Œ«¥¿¥¹¥¯¡Êp_runtsk¡Ë€Îµ¯Æ°ÈÖÃÏ€ò¡€³ÈÄ¥ŸðÊó€ò¥Ñ¥é¥á¡Œ¥¿€È€·€ÆžÆ€ÓœÐ€¹ |
|---|
| 407 | ext_tsk€ËʬŽô€¹€ë ... (*c) |
|---|
| 408 | } |
|---|
| 409 | ---------------------------------------- |
|---|
| 410 | |
|---|
| 411 | ¡û¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎžÆœÐ€·€ÎŒÂÁõ |
|---|
| 412 | |
|---|
| 413 | ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Ëþλ€·¡€³ä¹þ€ß€¬È¯Àž€·€¿Ÿì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Î |
|---|
| 414 | ³ä¹þ€ß¥Ï¥ó¥É¥é¡Ê€Þ€¿€Ï¡€³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡Ë€«€é¡€¥¿¡Œ¥²¥Ã¥ÈÈó°Íž |
|---|
| 415 | Éô€Îcall_ovrhdr€òžÆ€ÓœÐ€¹¡¥ |
|---|
| 416 | |
|---|
| 417 | €³€³€Ç¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é€Îµ¯Æ°€È¡€sta_ovr¡¿stp_ovr€ÎžÆœÐ |
|---|
| 418 | €·€Î¶¥¹ç€ÎÌäÂꀬ€¢€ë¡¥¶ñÂÎÎã€È€·€Æ¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Ëþλ€·€¿ÄŸžå€Ë¡€ |
|---|
| 419 | Ÿ€Î¹âÍ¥ÀèÅـγä¹þ€ß€¬È¯Àž€·¡€€œ€ÎœèÍýÃæ€Ç¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€¬ºÆÆ°ºî³« |
|---|
| 420 | »Ï¡Ê»Ä€ê¥×¥í¥»¥Ã¥µ€Ï¹¹¿·€µ€ì€ë¡Ë€µ€ì€¿Ÿì¹ç€äÄä»ß€µ€ì€¿Ÿì¹ç€¬ÌäÂê€Ë€Ê€ë¡¥ |
|---|
| 421 | €³€ÎŸì¹ç¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÃæ€Ç¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€òžÆ |
|---|
| 422 | €ÓœÐ€µ€Ê€€€è€Š€Ë€¹€Ù€€Ç€¢€ë¡¥ |
|---|
| 423 | |
|---|
| 424 | ¥¿¡Œ¥²¥Ã¥ÈÈó°ÍžÉô€Îcall_ovrhdr€ÎŒÂÁõ€ÏŒ¡€ÎÄ̀ꡥ |
|---|
| 425 | |
|---|
| 426 | ---------------------------------------- |
|---|
| 427 | void |
|---|
| 428 | call_ovrhdr(void) |
|---|
| 429 | { |
|---|
| 430 | assert(sense_context()); |
|---|
| 431 | assert(!sense_lock()); |
|---|
| 432 | assert(ovrinib.ovrhdr != NULL); |
|---|
| 433 | |
|---|
| 434 | i_lock_cpu(); |
|---|
| 435 | if (p_runtsk!= NULL && p_runtsk->leftotm == 1U) { |
|---|
| 436 | p_runtsk->leftotm = 0U; |
|---|
| 437 | i_unlock_cpu(); |
|---|
| 438 | |
|---|
| 439 | LOG_OVR_ENTER(p_runtsk); |
|---|
| 440 | ((OVRHDR)(ovrinib.ovrhdr))(TSKID(p_runtsk), p_runtsk->p_tinib->exinf); |
|---|
| 441 | LOG_OVR_LEAVE(p_runtsk); |
|---|
| 442 | } |
|---|
| 443 | else { |
|---|
| 444 | /* |
|---|
| 445 | * €³€Î¥ë¡Œ¥Á¥ó€¬žÆ€ÓœÐ€µ€ì€ëÁ°€Ë¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Îµ¯Æ°€¬ |
|---|
| 446 | * ¥¥ã¥ó¥»¥ë€µ€ì€¿Ÿì¹ç |
|---|
| 447 | */ |
|---|
| 448 | i_unlock_cpu(); |
|---|
| 449 | } |
|---|
| 450 | } |
|---|
| 451 | ---------------------------------------- |
|---|
| 452 | |
|---|
| 453 | p_runtsk€¬NULL€ÎŸì¹ç€ò¹ÍΞ€·€Æ€€€ë€Î€Ï¡€¥¹¥×¥ê¥¢¥¹³ä¹þ€ß€ËÂЀ¹€ë¥í¥Ð¥¹ |
|---|
| 454 | ¥ÈÀ€ò³ÎÊÝ€¹€ë€¿€á€Ç€¢€ë¡¥ |
|---|
| 455 | |
|---|
| 456 | ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎžÆœÐ€·žå€Ë¡€žÆœÐ€·Á°€ÎŸõÂÖ¡ÊCPU¥í¥Ã¥¯¡€³ä¹þ€ßÍ¥ÀèÅÙ |
|---|
| 457 | ¥Þ¥¹¥¯¡Ë€ËÌဵ€Ê€€€Î€Ï¡€€³€Î¥ë¡Œ¥Á¥ó€«€é€Î¥ê¥¿¡Œ¥óžå€Ë¡€³ä¹þ€ßœÐžýœèÍý |
|---|
| 458 | €Çžµ€ÎŸõÂÖ€ËÌ္€¿€á€Ç€¢€ë¡¥ |
|---|
| 459 | |
|---|
| 460 | call_ovrhdr€Ï¡€³ä¹þ€ß¥Ï¥ó¥É¥é€«€é¡Ê€Þ€¿€Ï¡€³ä¹þ€ß¥Ï¥ó¥É¥é€È€·€Æ¡ËžÆ€ÓœÐ |
|---|
| 461 | €µ€ì€ë€¿€á¡€€³€Î¥ë¡Œ¥Á¥ó€ËÍè€ë€Þ€Ç€Ë¡€ovrtimer_stop€¬žÆ€Ð€ì€Æ€€€ë¡Ê€¹€Ê |
|---|
| 462 | €ï€Á¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Ää»ß€·€Æ€€€ë¡Ë¡¥ |
|---|
| 463 | |
|---|
| 464 | ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀßÄê€Ï¡€°Ê²Œ€Î€è€Š€ÊÀÅŪAPI€ò¡€target_timer.hÃæ€ËµœÒ€¹ |
|---|
| 465 | €ë€³€È€Ç¹Ô€Š€â€Î€È€¹€ë¡Ê¥¿¡Œ¥²¥Ã¥È€Î»öŸð€ÇÊѹ¹€·€Æ€è€€¡Ë¡¥ |
|---|
| 466 | |
|---|
| 467 | ---------------------------------------- |
|---|
| 468 | #ifdef TOPPERS_SUPPORT_OVRHDR |
|---|
| 469 | ATT_INI({ TA_NULL, 0, target_ovrtimer_initialize }); |
|---|
| 470 | ATT_TER({ TA_NULL, 0, target_ovrtimer_terminate }); |
|---|
| 471 | CFG_INT(INTNO_OVRTIMER, { TA_ENAINT | INTATR_OVRTIMER, INTPRI_OVRTIMER }); |
|---|
| 472 | DEF_INH(INHNO_OVRTIMER, { TA_NULL, target_ovrtimer_handler }); |
|---|
| 473 | #endif /* TOPPERS_SUPPORT_OVRHDR */ |
|---|
| 474 | ---------------------------------------- |
|---|
| 475 | |
|---|
| 476 | €³€ì€é€ÎÀÅŪAPIÃæ€Î¡€INHNO_OVRTIMER¡€INTNO_OVRTIMER¡€INTPRI_OVRTIMER¡€ |
|---|
| 477 | INTATR_OVRTIMER€Î4€Ä€ÎÄê¿ô€Ï¡€target_timer.hÃæ€ÇÄêµÁ€¹€ë¡¥ |
|---|
| 478 | |
|---|
| 479 | ¡û¥ª¡Œ¥Ð¥Ø¥Ã¥É€ÎÄ㞺ÊýË¡ |
|---|
| 480 | |
|---|
| 481 | °ÊŸå€ÇÀâÌÀ€·€¿ÊýË¡€Ç€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Î¥¢¥»¥ó¥Ö¥êžÀžì€ÇµœÒ€¹€ë€³€È |
|---|
| 482 | €òÁÛÄꀷ€¿¥³¡Œ¥É€«€é¡€¥¿¡Œ¥²¥Ã¥ÈÈó°ÍžÉô€Îovrtimer_start€È |
|---|
| 483 | ovrtimer_stop€òžÆ€ÓœÐ€·€Æ€€€ë€¬¡€€³€ì€é€ÎŽØ¿ô€Ïû€€€â€Î€Ç¡€¥¢¥»¥ó¥Ö¥êžÀ |
|---|
| 484 | žì€ÎÃæ€ËÅž³«€·€¿Êý€¬žúΚ€¬€è€€¡¥€³€ì€é€ÎŽØ¿ô€ò¥¢¥»¥ó¥Ö¥êžÀžì€ÎÃæ€ËÅž³« |
|---|
| 485 | €¹€ëŸì¹ç€Ë€Ï¡€€œ€ì€Ÿ€ì¡€OMIT_OVRTIMER_START€ÈOMIT_OVRTIMER_STOP€ò¥Þ¥¯¥í |
|---|
| 486 | ÄêµÁ€¹€ë¡¥ |
|---|
| 487 | |
|---|
| 488 | ¡û¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µÂбþ¥«¡Œ¥Í¥ë€Ø€ÎÂбþ€ËŽØ€¹€ë¥á¥â |
|---|
| 489 | |
|---|
| 490 | ¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µÂбþ¥«¡Œ¥Í¥ë€Ë€ª€€€Æ¡€sta_ovr¡¿ista_ovr¡€stp_ovr¡¿ |
|---|
| 491 | istp_ovr€ò¡€žÆ€ÓœÐ€·€¿œèÍýñ°Ì€È°Û€Ê€ë¥×¥í¥»¥Ã¥µ€Ë³ä€êÉÕ€±€é€ì€¿¥¿¥¹¥¯ |
|---|
| 492 | €òÂП݀Ëȯ¹Ô€·€¿Ÿì¹ç€ÎŒÂÁõ€Ï¹©É×€òÍ×€¹€ë¡¥ |
|---|
| 493 | |
|---|
| 494 | ŽðËÜŪ€Ë€Ï¡€ÂПݥ¿¥¹¥¯€¬³ä€êÉÕ€±€é€ì€¿¥×¥í¥»¥Ã¥µ€ËÂЀ·€Æ¥×¥í¥»¥Ã¥µŽÖ³ä |
|---|
| 495 | ¹þ€ß€ò€«€±€ë€³€È€Ë€è€Ã€Æ¡€ÂПݥ¿¥¹¥¯€Î¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Îưºî€ò³«»Ï¡¿ |
|---|
| 496 | Ää»ß€µ€»€ë€³€È€¬É¬Í׀ǀ¢€ë€¬¡€³ä¹þ€ß€ÎÆþžýœèÍý€ÇžÆ€ÓœÐ€¹ovrtimer_stop€Ç¡€ |
|---|
| 497 | ovrtimer_flag€È(p_runtsk->leftotm > 0U)€¬°ìŽÓ€·€Ê€¯€Ê€ë€¿€á¡€¹©É×€òÍ×€¹ |
|---|
| 498 | €ë€â€Î€È»×€ï€ì€ë¡¥ |
|---|
| 499 | |
|---|
| 500 | °ÊŸå |
|---|