le_thread.h
66 * le_thread_Cancel() or <c>pthread_cancel()</c>), it will be blocked and remain in a pending state67 * until cancellation is unblocked (also using pthread_setcancelstate()), at which time the thread104 * lack of synchronization. If threads share data, they @b MUST be synchronized with each other to107 * @warning This documentation assumes that the reader is familiar with multi-thread synchronization148 * dies, then that thread must call le_thread_CleanupLegatoThreadData() before it exits. Otherwise173 //--------------------------------------------------------------------------------------------------179 //--------------------------------------------------------------------------------------------------183 //--------------------------------------------------------------------------------------------------188 * They are privileged levels and will therefore not be allowed unless the application is executed195 //--------------------------------------------------------------------------------------------------248 //--------------------------------------------------------------------------------------------------257 //--------------------------------------------------------------------------------------------------265 //--------------------------------------------------------------------------------------------------276 //--------------------------------------------------------------------------------------------------285 //--------------------------------------------------------------------------------------------------289 //--------------------------------------------------------------------------------------------------292 //--------------------------------------------------------------------------------------------------303 //--------------------------------------------------------------------------------------------------316 //--------------------------------------------------------------------------------------------------324 //--------------------------------------------------------------------------------------------------332 //--------------------------------------------------------------------------------------------------349 //--------------------------------------------------------------------------------------------------358 //--------------------------------------------------------------------------------------------------365 //--------------------------------------------------------------------------------------------------372 //--------------------------------------------------------------------------------------------------384 //--------------------------------------------------------------------------------------------------389 //--------------------------------------------------------------------------------------------------393 * Setting the stack explicitly allows the caller to control the memory allocation of the thread's397 * The macro LE_THREAD_DEFINE_STATIC_STACK() may be used to create a statically allocated stack for400 * @attention In general, this function is only useful on embedded, RTOS based systems in order to409 //--------------------------------------------------------------------------------------------------420 //--------------------------------------------------------------------------------------------------426 //--------------------------------------------------------------------------------------------------433 //--------------------------------------------------------------------------------------------------438 //--------------------------------------------------------------------------------------------------445 //--------------------------------------------------------------------------------------------------467 //--------------------------------------------------------------------------------------------------477 //--------------------------------------------------------------------------------------------------481 //--------------------------------------------------------------------------------------------------490 //--------------------------------------------------------------------------------------------------502 //--------------------------------------------------------------------------------------------------509 //--------------------------------------------------------------------------------------------------517 * @note This function is not a full equivalence of nanosleep() as the remaining sleep time will not520 //--------------------------------------------------------------------------------------------------527 //--------------------------------------------------------------------------------------------------533 //--------------------------------------------------------------------------------------------------540 //--------------------------------------------------------------------------------------------------544 //--------------------------------------------------------------------------------------------------553 //--------------------------------------------------------------------------------------------------557 //--------------------------------------------------------------------------------------------------564 //--------------------------------------------------------------------------------------------------571 //--------------------------------------------------------------------------------------------------579 //--------------------------------------------------------------------------------------------------583 //--------------------------------------------------------------------------------------------------587 //--------------------------------------------------------------------------------------------------598 //--------------------------------------------------------------------------------------------------606 //--------------------------------------------------------------------------------------------------615 * avoid a race condition that can cause resource leakage when a parent thread passes dynamically620 * For example, a thread @e T1 could allocate an object from a memory pool, create a thread @e T2,625 * released. So, we allow @e T1 to register a destructor function for @e T2 before starting @e T2.629 //--------------------------------------------------------------------------------------------------638 //--------------------------------------------------------------------------------------------------642 //--------------------------------------------------------------------------------------------------648 //--------------------------------------------------------------------------------------------------652 //--------------------------------------------------------------------------------------------------658 //--------------------------------------------------------------------------------------------------662 //--------------------------------------------------------------------------------------------------669 //--------------------------------------------------------------------------------------------------680 //--------------------------------------------------------------------------------------------------687 //--------------------------------------------------------------------------------------------------691 //--------------------------------------------------------------------------------------------------694 //--------------------------------------------------------------------------------------------------705 //--------------------------------------------------------------------------------------------------716 //--------------------------------------------------------------------------------------------------718 * Clean-up the thread-specific data that was initialized using le_thread_InitLegatoThreadData().725 //--------------------------------------------------------------------------------------------------Definition: le_cdata.h:57