Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of libMiMic by
core/os/NyLPC_cThread.h@41:2389bd6b6f74, 2013-06-30 (annotated)
- Committer:
- nyatla
- Date:
- Sun Jun 30 14:17:42 2013 +0000
- Revision:
- 41:2389bd6b6f74
- Parent:
- 12:efe841863fc8
- Child:
- 48:00d211aac2ec
update core r270;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| nyatla | 0:142ee8b12fef | 1 | /********************************************************************************* |
| nyatla | 0:142ee8b12fef | 2 | * PROJECT: MiMic |
| nyatla | 0:142ee8b12fef | 3 | * -------------------------------------------------------------------------------- |
| nyatla | 0:142ee8b12fef | 4 | * |
| nyatla | 0:142ee8b12fef | 5 | * This file is part of MiMic |
| nyatla | 0:142ee8b12fef | 6 | * Copyright (C)2011 Ryo Iizuka |
| nyatla | 0:142ee8b12fef | 7 | * |
| nyatla | 0:142ee8b12fef | 8 | * MiMic is free software: you can redistribute it and/or modify |
| nyatla | 0:142ee8b12fef | 9 | * it under the terms of the GNU Lesser General Public License as published |
| nyatla | 0:142ee8b12fef | 10 | * by the Free Software Foundation, either version 3 of the License, or |
| nyatla | 0:142ee8b12fef | 11 | * (at your option) any later version. |
| nyatla | 0:142ee8b12fef | 12 | * |
| nyatla | 0:142ee8b12fef | 13 | * This program is distributed in the hope that it will be useful, |
| nyatla | 0:142ee8b12fef | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| nyatla | 0:142ee8b12fef | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| nyatla | 0:142ee8b12fef | 16 | * GNU General Public License for more details. |
| nyatla | 0:142ee8b12fef | 17 | * |
| nyatla | 0:142ee8b12fef | 18 | * You should have received a copy of the GNU Lesser General Public License |
| nyatla | 0:142ee8b12fef | 19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| nyatla | 0:142ee8b12fef | 20 | * |
| nyatla | 0:142ee8b12fef | 21 | * For further information please contact. |
| nyatla | 0:142ee8b12fef | 22 | * http://nyatla.jp/ |
| nyatla | 0:142ee8b12fef | 23 | * <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp> |
| nyatla | 0:142ee8b12fef | 24 | * |
| nyatla | 0:142ee8b12fef | 25 | *********************************************************************************/ |
| nyatla | 0:142ee8b12fef | 26 | #ifndef NYLPC_CTHREAD_H_ |
| nyatla | 0:142ee8b12fef | 27 | #define NYLPC_CTHREAD_H_ |
| nyatla | 0:142ee8b12fef | 28 | |
| nyatla | 0:142ee8b12fef | 29 | //////////////////////////////////////////////////////////////////////////////// |
| nyatla | 0:142ee8b12fef | 30 | // Include |
| nyatla | 0:142ee8b12fef | 31 | //////////////////////////////////////////////////////////////////////////////// |
| nyatla | 0:142ee8b12fef | 32 | #include "NyLPC_stdlib.h" |
| nyatla | 0:142ee8b12fef | 33 | #if NyLPC_ARCH==NyLPC_ARCH_FREERTOS |
| nyatla | 0:142ee8b12fef | 34 | #include "FreeRTOS.h" |
| nyatla | 0:142ee8b12fef | 35 | #include "task.h" |
| nyatla | 0:142ee8b12fef | 36 | #elif NyLPC_ARCH==NyLPC_ARCH_MBEDRTOS |
| nyatla | 41:2389bd6b6f74 | 37 | #elif NyLPC_ARCH==NyLPC_ARCH_WIN32 |
| nyatla | 41:2389bd6b6f74 | 38 | //not work! |
| nyatla | 0:142ee8b12fef | 39 | #else |
| nyatla | 0:142ee8b12fef | 40 | #error Bad NyLPC_ARCH! |
| nyatla | 0:142ee8b12fef | 41 | #endif |
| nyatla | 0:142ee8b12fef | 42 | |
| nyatla | 0:142ee8b12fef | 43 | /********************************************************************** |
| nyatla | 0:142ee8b12fef | 44 | * |
| nyatla | 0:142ee8b12fef | 45 | * NyLPC_TcThread class |
| nyatla | 0:142ee8b12fef | 46 | * |
| nyatla | 0:142ee8b12fef | 47 | **********************************************************************/ |
| nyatla | 0:142ee8b12fef | 48 | #ifdef __cplusplus |
| nyatla | 0:142ee8b12fef | 49 | extern "C" { |
| nyatla | 0:142ee8b12fef | 50 | #endif /* __cplusplus */ |
| nyatla | 0:142ee8b12fef | 51 | |
| nyatla | 0:142ee8b12fef | 52 | /** |
| nyatla | 0:142ee8b12fef | 53 | * 関数スレッドを実行します。 |
| nyatla | 0:142ee8b12fef | 54 | */ |
| nyatla | 0:142ee8b12fef | 55 | typedef struct NyLPC_TcThread NyLPC_TcThread_t; |
| nyatla | 0:142ee8b12fef | 56 | |
| nyatla | 41:2389bd6b6f74 | 57 | /** スレッドの関数型 */ |
| nyatla | 2:b96c1e90d120 | 58 | typedef int (*NyLPC_TcThread_ThreadFunc)(void* i_param); |
| nyatla | 0:142ee8b12fef | 59 | /** */ |
| nyatla | 0:142ee8b12fef | 60 | #define NyLPC_TcThread_DEFAULT_STACKSIZE configMINIMAL_STACK_SIZE |
| nyatla | 0:142ee8b12fef | 61 | |
| nyatla | 0:142ee8b12fef | 62 | /** ターミネイトしたときに1*/ |
| nyatla | 0:142ee8b12fef | 63 | #define NyLPC_TcThread_BIT_IS_TERMINATED 0x00000001 |
| nyatla | 0:142ee8b12fef | 64 | |
| nyatla | 0:142ee8b12fef | 65 | /** JOINリクエストがある場合に1*/ |
| nyatla | 0:142ee8b12fef | 66 | #define NyLPC_TcThread_BIT_IS_JOIN_REQ 0x00000002 |
| nyatla | 0:142ee8b12fef | 67 | |
| nyatla | 0:142ee8b12fef | 68 | /** |
| nyatla | 0:142ee8b12fef | 69 | * Thread priorities |
| nyatla | 0:142ee8b12fef | 70 | */ |
| nyatla | 0:142ee8b12fef | 71 | #define NyLPC_TcThread_PRIORITY_IDLE 0 |
| nyatla | 0:142ee8b12fef | 72 | #define NyLPC_TcThread_PRIORITY_SERVICE 1 |
| nyatla | 0:142ee8b12fef | 73 | |
| nyatla | 0:142ee8b12fef | 74 | #if NyLPC_ARCH==NyLPC_ARCH_FREERTOS |
| nyatla | 0:142ee8b12fef | 75 | |
| nyatla | 2:b96c1e90d120 | 76 | struct NyLPC_TcThread { |
| nyatla | 0:142ee8b12fef | 77 | NyLPC_TUInt32 _sbit; |
| nyatla | 0:142ee8b12fef | 78 | xTaskHandle _taskid; |
| nyatla | 0:142ee8b12fef | 79 | NyLPC_TcThread_ThreadFunc _func; |
| nyatla | 0:142ee8b12fef | 80 | void* _param; |
| nyatla | 0:142ee8b12fef | 81 | }; |
| nyatla | 0:142ee8b12fef | 82 | #elif NyLPC_ARCH==NyLPC_ARCH_MBEDRTOS |
| nyatla | 0:142ee8b12fef | 83 | |
| nyatla | 0:142ee8b12fef | 84 | struct NyLPC_TcThread |
| nyatla | 0:142ee8b12fef | 85 | { |
| nyatla | 0:142ee8b12fef | 86 | NyLPC_TUInt32 _sbit; |
| nyatla | 11:c82a7b2899b0 | 87 | void* _thread; //Thread* type. |
| nyatla | 0:142ee8b12fef | 88 | NyLPC_TcThread_ThreadFunc _func; |
| nyatla | 0:142ee8b12fef | 89 | void* _arg; |
| nyatla | 0:142ee8b12fef | 90 | }; |
| nyatla | 41:2389bd6b6f74 | 91 | #elif NyLPC_ARCH==NyLPC_ARCH_WIN32 |
| nyatla | 41:2389bd6b6f74 | 92 | //this is dummy definition. |
| nyatla | 41:2389bd6b6f74 | 93 | struct NyLPC_TcThread |
| nyatla | 41:2389bd6b6f74 | 94 | { |
| nyatla | 41:2389bd6b6f74 | 95 | int dummy; |
| nyatla | 41:2389bd6b6f74 | 96 | NyLPC_TcThread_ThreadFunc _func; |
| nyatla | 41:2389bd6b6f74 | 97 | }; |
| nyatla | 0:142ee8b12fef | 98 | #else |
| nyatla | 0:142ee8b12fef | 99 | #error Bad NyLPC_ARCH! |
| nyatla | 0:142ee8b12fef | 100 | #endif |
| nyatla | 0:142ee8b12fef | 101 | |
| nyatla | 0:142ee8b12fef | 102 | /** |
| nyatla | 0:142ee8b12fef | 103 | * 終了要求フラグの値を返します。 |
| nyatla | 0:142ee8b12fef | 104 | * スレッドのループ内で、Join要求の有無を確認するために使います。 |
| nyatla | 0:142ee8b12fef | 105 | * スレッドは定期的にこの関数を実行して、trueの場合は速やかに関数を終了する必要があります。 |
| nyatla | 0:142ee8b12fef | 106 | */ |
| nyatla | 0:142ee8b12fef | 107 | #define NyLPC_cThread_isJoinReqest(i_inst) NyLPC_TUInt32_isBitOn((i_inst)->_sbit,NyLPC_TcThread_BIT_IS_JOIN_REQ) |
| nyatla | 0:142ee8b12fef | 108 | #define NyLPC_cThread_isTerminated(i_inst) NyLPC_TUInt32_isBitOn((i_inst)->_sbit,NyLPC_TcThread_BIT_IS_TERMINATED) |
| nyatla | 0:142ee8b12fef | 109 | |
| nyatla | 2:b96c1e90d120 | 110 | void NyLPC_cThread_initialize(NyLPC_TcThread_t* i_inst, NyLPC_TInt32 i_stack,NyLPC_TInt32 i_prio); |
| nyatla | 2:b96c1e90d120 | 111 | void NyLPC_cThread_finalize(NyLPC_TcThread_t* i_inst); |
| nyatla | 2:b96c1e90d120 | 112 | void NyLPC_cThread_start(NyLPC_TcThread_t* i_inst, |
| nyatla | 2:b96c1e90d120 | 113 | NyLPC_TcThread_ThreadFunc i_func, void* i_param); |
| nyatla | 0:142ee8b12fef | 114 | void NyLPC_cThread_join(NyLPC_TcThread_t* i_inst); |
| nyatla | 12:efe841863fc8 | 115 | void NyLPC_cThread_yield(void); |
| nyatla | 0:142ee8b12fef | 116 | /** |
| nyatla | 0:142ee8b12fef | 117 | * 一定時間、スレッドをスリープする。 |
| nyatla | 0:142ee8b12fef | 118 | * この関数はstatic関数です。 |
| nyatla | 0:142ee8b12fef | 119 | */ |
| nyatla | 0:142ee8b12fef | 120 | void NyLPC_cThread_sleep(NyLPC_TUInt32 i_time_in_msec); |
| nyatla | 0:142ee8b12fef | 121 | |
| nyatla | 0:142ee8b12fef | 122 | #ifdef __cplusplus |
| nyatla | 0:142ee8b12fef | 123 | } |
| nyatla | 0:142ee8b12fef | 124 | #endif /* __cplusplus */ |
| nyatla | 0:142ee8b12fef | 125 | |
| nyatla | 3:0a94993be1f6 | 126 | #endif /* NYLPC_CTHREAD_H_ */ |
