This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Fork of libMiMic by
core/os/NyLPC_cThread.h@48:00d211aac2ec, 2013-08-07 (annotated)
- Committer:
- nyatla
- Date:
- Wed Aug 07 13:53:02 2013 +0000
- Revision:
- 48:00d211aac2ec
- Parent:
- 41:2389bd6b6f74
backup
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 | 48:00d211aac2ec | 63 | #define NyLPC_TcThread_BIT_IS_TERMINATED 0 |
nyatla | 0:142ee8b12fef | 64 | /** JOINリクエストがある場合に1*/ |
nyatla | 48:00d211aac2ec | 65 | #define NyLPC_TcThread_BIT_IS_JOIN_REQ 1 |
nyatla | 0:142ee8b12fef | 66 | |
nyatla | 0:142ee8b12fef | 67 | /** |
nyatla | 0:142ee8b12fef | 68 | * Thread priorities |
nyatla | 0:142ee8b12fef | 69 | */ |
nyatla | 0:142ee8b12fef | 70 | #define NyLPC_TcThread_PRIORITY_IDLE 0 |
nyatla | 0:142ee8b12fef | 71 | #define NyLPC_TcThread_PRIORITY_SERVICE 1 |
nyatla | 0:142ee8b12fef | 72 | |
nyatla | 0:142ee8b12fef | 73 | #if NyLPC_ARCH==NyLPC_ARCH_FREERTOS |
nyatla | 0:142ee8b12fef | 74 | |
nyatla | 2:b96c1e90d120 | 75 | struct NyLPC_TcThread { |
nyatla | 0:142ee8b12fef | 76 | NyLPC_TUInt32 _sbit; |
nyatla | 0:142ee8b12fef | 77 | xTaskHandle _taskid; |
nyatla | 0:142ee8b12fef | 78 | NyLPC_TcThread_ThreadFunc _func; |
nyatla | 0:142ee8b12fef | 79 | void* _param; |
nyatla | 0:142ee8b12fef | 80 | }; |
nyatla | 0:142ee8b12fef | 81 | #elif NyLPC_ARCH==NyLPC_ARCH_MBEDRTOS |
nyatla | 0:142ee8b12fef | 82 | |
nyatla | 0:142ee8b12fef | 83 | struct NyLPC_TcThread |
nyatla | 0:142ee8b12fef | 84 | { |
nyatla | 0:142ee8b12fef | 85 | NyLPC_TUInt32 _sbit; |
nyatla | 11:c82a7b2899b0 | 86 | void* _thread; //Thread* type. |
nyatla | 0:142ee8b12fef | 87 | NyLPC_TcThread_ThreadFunc _func; |
nyatla | 0:142ee8b12fef | 88 | void* _arg; |
nyatla | 0:142ee8b12fef | 89 | }; |
nyatla | 41:2389bd6b6f74 | 90 | #elif NyLPC_ARCH==NyLPC_ARCH_WIN32 |
nyatla | 41:2389bd6b6f74 | 91 | //this is dummy definition. |
nyatla | 41:2389bd6b6f74 | 92 | struct NyLPC_TcThread |
nyatla | 41:2389bd6b6f74 | 93 | { |
nyatla | 41:2389bd6b6f74 | 94 | int dummy; |
nyatla | 41:2389bd6b6f74 | 95 | NyLPC_TcThread_ThreadFunc _func; |
nyatla | 41:2389bd6b6f74 | 96 | }; |
nyatla | 0:142ee8b12fef | 97 | #else |
nyatla | 0:142ee8b12fef | 98 | #error Bad NyLPC_ARCH! |
nyatla | 0:142ee8b12fef | 99 | #endif |
nyatla | 0:142ee8b12fef | 100 | |
nyatla | 0:142ee8b12fef | 101 | /** |
nyatla | 0:142ee8b12fef | 102 | * 終了要求フラグの値を返します。 |
nyatla | 0:142ee8b12fef | 103 | * スレッドのループ内で、Join要求の有無を確認するために使います。 |
nyatla | 0:142ee8b12fef | 104 | * スレッドは定期的にこの関数を実行して、trueの場合は速やかに関数を終了する必要があります。 |
nyatla | 0:142ee8b12fef | 105 | */ |
nyatla | 0:142ee8b12fef | 106 | #define NyLPC_cThread_isJoinReqest(i_inst) NyLPC_TUInt32_isBitOn((i_inst)->_sbit,NyLPC_TcThread_BIT_IS_JOIN_REQ) |
nyatla | 0:142ee8b12fef | 107 | #define NyLPC_cThread_isTerminated(i_inst) NyLPC_TUInt32_isBitOn((i_inst)->_sbit,NyLPC_TcThread_BIT_IS_TERMINATED) |
nyatla | 0:142ee8b12fef | 108 | |
nyatla | 2:b96c1e90d120 | 109 | void NyLPC_cThread_initialize(NyLPC_TcThread_t* i_inst, NyLPC_TInt32 i_stack,NyLPC_TInt32 i_prio); |
nyatla | 2:b96c1e90d120 | 110 | void NyLPC_cThread_finalize(NyLPC_TcThread_t* i_inst); |
nyatla | 2:b96c1e90d120 | 111 | void NyLPC_cThread_start(NyLPC_TcThread_t* i_inst, |
nyatla | 2:b96c1e90d120 | 112 | NyLPC_TcThread_ThreadFunc i_func, void* i_param); |
nyatla | 0:142ee8b12fef | 113 | void NyLPC_cThread_join(NyLPC_TcThread_t* i_inst); |
nyatla | 12:efe841863fc8 | 114 | void NyLPC_cThread_yield(void); |
nyatla | 0:142ee8b12fef | 115 | /** |
nyatla | 0:142ee8b12fef | 116 | * 一定時間、スレッドをスリープする。 |
nyatla | 0:142ee8b12fef | 117 | * この関数はstatic関数です。 |
nyatla | 0:142ee8b12fef | 118 | */ |
nyatla | 0:142ee8b12fef | 119 | void NyLPC_cThread_sleep(NyLPC_TUInt32 i_time_in_msec); |
nyatla | 0:142ee8b12fef | 120 | |
nyatla | 0:142ee8b12fef | 121 | #ifdef __cplusplus |
nyatla | 0:142ee8b12fef | 122 | } |
nyatla | 0:142ee8b12fef | 123 | #endif /* __cplusplus */ |
nyatla | 0:142ee8b12fef | 124 | |
nyatla | 3:0a94993be1f6 | 125 | #endif /* NYLPC_CTHREAD_H_ */ |