Stanislav Silnitskiy / rtos
Committer:
mailgate_user
Date:
Sun Jun 24 19:47:00 2012 +0000
Revision:
0:ea15e955433d
N threads cut down to 4, stack size cut down to 1024

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mailgate_user 0:ea15e955433d 1 /* Copyright (c) 2012 mbed.org */
mailgate_user 0:ea15e955433d 2 #ifndef THREAD_H
mailgate_user 0:ea15e955433d 3 #define THREAD_H
mailgate_user 0:ea15e955433d 4
mailgate_user 0:ea15e955433d 5 #include <stdint.h>
mailgate_user 0:ea15e955433d 6 #include "cmsis_os.h"
mailgate_user 0:ea15e955433d 7
mailgate_user 0:ea15e955433d 8 namespace rtos {
mailgate_user 0:ea15e955433d 9
mailgate_user 0:ea15e955433d 10 /*! The Thread class allow defining, creating, and controlling thread functions in the system. */
mailgate_user 0:ea15e955433d 11 class Thread {
mailgate_user 0:ea15e955433d 12 public:
mailgate_user 0:ea15e955433d 13 /*! Create a new thread, and start it executing the specified function.
mailgate_user 0:ea15e955433d 14 \param task function to be executed by this thread.
mailgate_user 0:ea15e955433d 15 \param argument pointer that is passed to the thread function as start argument. (default: NULL).
mailgate_user 0:ea15e955433d 16 \param priority initial priority of the thread function. (default: osPriorityNormal).
mailgate_user 0:ea15e955433d 17 \param stacksz stack size (in bytes) requirements for the thread function. (default: DEFAULT_STACK_SIZE).
mailgate_user 0:ea15e955433d 18 */
mailgate_user 0:ea15e955433d 19 Thread(void (*task)(void const *argument),
mailgate_user 0:ea15e955433d 20 void *argument=NULL,
mailgate_user 0:ea15e955433d 21 osPriority priority=osPriorityNormal,
mailgate_user 0:ea15e955433d 22 uint32_t stacksize=DEFAULT_STACK_SIZE);
mailgate_user 0:ea15e955433d 23
mailgate_user 0:ea15e955433d 24 /*! Terminate execution of a thread and remove it from Active Threads
mailgate_user 0:ea15e955433d 25 \return status code that indicates the execution status of the function.
mailgate_user 0:ea15e955433d 26 */
mailgate_user 0:ea15e955433d 27 osStatus terminate();
mailgate_user 0:ea15e955433d 28
mailgate_user 0:ea15e955433d 29 /*! Set priority of an active thread
mailgate_user 0:ea15e955433d 30 \param priority new priority value for the thread function.
mailgate_user 0:ea15e955433d 31 \return status code that indicates the execution status of the function.
mailgate_user 0:ea15e955433d 32 */
mailgate_user 0:ea15e955433d 33 osStatus set_priority(osPriority priority);
mailgate_user 0:ea15e955433d 34
mailgate_user 0:ea15e955433d 35 /*! Get priority of an active thread
mailgate_user 0:ea15e955433d 36 \ return current priority value of the thread function.
mailgate_user 0:ea15e955433d 37 */
mailgate_user 0:ea15e955433d 38 osPriority get_priority();
mailgate_user 0:ea15e955433d 39
mailgate_user 0:ea15e955433d 40 /*! Set the specified Signal Flags of an active thread.
mailgate_user 0:ea15e955433d 41 \param signals specifies the signal flags of the thread that should be set.
mailgate_user 0:ea15e955433d 42 \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters.
mailgate_user 0:ea15e955433d 43 */
mailgate_user 0:ea15e955433d 44 int32_t signal_set(int32_t signals);
mailgate_user 0:ea15e955433d 45
mailgate_user 0:ea15e955433d 46 /*! Wait for one or more Signal Flags to become signaled for the current RUNNING thread.
mailgate_user 0:ea15e955433d 47 \param signals wait until all specified signal flags set or 0 for any single signal flag.
mailgate_user 0:ea15e955433d 48 \param millisec timeout value or 0 in case of no time-out. (default: osWaitForever).
mailgate_user 0:ea15e955433d 49 \return event flag information or error code.
mailgate_user 0:ea15e955433d 50 */
mailgate_user 0:ea15e955433d 51 static osEvent signal_wait(int32_t signals, uint32_t millisec=osWaitForever);
mailgate_user 0:ea15e955433d 52
mailgate_user 0:ea15e955433d 53
mailgate_user 0:ea15e955433d 54 /*! Wait for a specified time period in millisec:
mailgate_user 0:ea15e955433d 55 \param millisec time delay value
mailgate_user 0:ea15e955433d 56 \return status code that indicates the execution status of the function.
mailgate_user 0:ea15e955433d 57 */
mailgate_user 0:ea15e955433d 58 static osStatus wait(uint32_t millisec);
mailgate_user 0:ea15e955433d 59
mailgate_user 0:ea15e955433d 60 /*! Pass control to next thread that is in state READY.
mailgate_user 0:ea15e955433d 61 \return status code that indicates the execution status of the function.
mailgate_user 0:ea15e955433d 62 */
mailgate_user 0:ea15e955433d 63 static osStatus yield();
mailgate_user 0:ea15e955433d 64
mailgate_user 0:ea15e955433d 65 /*! Get the thread id of the current running thread.
mailgate_user 0:ea15e955433d 66 \return thread ID for reference by other functions or NULL in case of error.
mailgate_user 0:ea15e955433d 67 */
mailgate_user 0:ea15e955433d 68 static osThreadId gettid();
mailgate_user 0:ea15e955433d 69
mailgate_user 0:ea15e955433d 70 private:
mailgate_user 0:ea15e955433d 71 osThreadId _tid;
mailgate_user 0:ea15e955433d 72 osThreadDef_t _thread_def;
mailgate_user 0:ea15e955433d 73 };
mailgate_user 0:ea15e955433d 74
mailgate_user 0:ea15e955433d 75 }
mailgate_user 0:ea15e955433d 76 #endif