Revision 22ccef0f src/urt_node.c
| src/urt_node.c | ||
|---|---|---|
| 38 | 38 |
/******************************************************************************/ |
| 39 | 39 |
|
| 40 | 40 |
urt_node_t localNode; |
| 41 |
static URT_THREAD_MEMORY(_node_thread, AMIROOS_CFG_SHELL_STACKSIZE); |
|
| 41 |
static URT_THREAD_MEMORY(_node_thread, AMIROOS_CFG_SHELL_STACKSIZE); //TODO: not here
|
|
| 42 | 42 |
|
| 43 | 43 |
/******************************************************************************/ |
| 44 | 44 |
/* LOCAL FUNCTIONS */ |
| ... | ... | |
| 94 | 94 |
} |
| 95 | 95 |
urtEventUnregister(urtCoreGetEvtSource(), &localNode.listener); |
| 96 | 96 |
|
| 97 |
|
|
| 98 | 97 |
urt_osThread_t* threadToTerminate = localNode.thread; |
| 99 | 98 |
while (threadToTerminate->children != NULL || threadToTerminate->sibling != NULL) |
| 100 | 99 |
{
|
| ... | ... | |
| 105 | 104 |
} |
| 106 | 105 |
urtThreadTerminate(&threadToTerminate, URT_THREAD_TERMINATE_REQUEST); |
| 107 | 106 |
|
| 107 |
urt_osThread_t* threadToJoin = localNode.thread; |
|
| 108 |
while (threadToJoin->children != NULL || threadToJoin->sibling != NULL) |
|
| 109 |
{
|
|
| 110 |
if (threadToJoin->children != NULL) |
|
| 111 |
urtThreadJoin(threadToJoin->children); |
|
| 112 |
if(threadToJoin->sibling != NULL) |
|
| 113 |
urtThreadJoin(threadToJoin->sibling); |
|
| 114 |
} |
|
| 115 |
urtThreadJoin(&threadToJoin); |
|
| 116 |
|
|
| 108 | 117 |
return; |
| 109 | 118 |
} |
| 110 | 119 |
|
| ... | ... | |
| 131 | 140 |
* Must be NULL if no shutdown callback is specified. |
| 132 | 141 |
* May be NULL if the specified shutdown callback does not expect parameters. |
| 133 | 142 |
*/ |
| 134 |
void urtNodeInit(urt_node_t* node, urt_osThread_t* thread, urt_nodeSetupCallback_t* setupcallback, |
|
| 143 |
void urtNodeInit(urt_node_t* node, urt_osThread_t* thread, urt_osThreadPrio_t prio, urt_nodeSetupCallback_t* setupcallback,
|
|
| 135 | 144 |
void* setupparams, urt_nodeLoopCallback_t* loopcallback, void* loopparams, |
| 136 | 145 |
urt_nodeShutdownCallback_t* shutdowncallback, void* shutdownparams) |
| 137 | 146 |
{
|
| ... | ... | |
| 141 | 150 |
urtDebugAssert(setupparams == NULL); |
| 142 | 151 |
|
| 143 | 152 |
node->next = NULL; |
| 144 |
node->thread = urtThreadInit(_node_thread, sizeof(_node_thread), URT_THREAD_PRIO_NORMAL_MIN, _main, setupparams);
|
|
| 153 |
node->thread = urtThreadInit(_node_thread, sizeof(_node_thread), prio, _main, setupparams);
|
|
| 145 | 154 |
node->setupcallback = setupcallback; |
| 146 | 155 |
node->setupparams = setupparams; |
| 147 | 156 |
node->loopcallback = loopcallback; |
Also available in: Unified diff