]> granicus.if.org Git - esp-idf/commitdiff
freertos: fix calling first task hook
authorIvan Grokhotkov <ivan@espressif.com>
Fri, 28 Oct 2016 05:41:07 +0000 (13:41 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Fri, 28 Oct 2016 05:41:07 +0000 (13:41 +0800)
components/freertos/tasks.c

index 64cc3a65df583495a9fc9a7b5e2384d7c0acc0a9..bd32f834ffe3326d8d5f5f073f0edf826ea2d925 100644 (file)
@@ -1018,6 +1018,11 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB, TaskFunction_t pxTaskCode
 
                        if( uxCurrentNumberOfTasks == ( UBaseType_t ) 1 )
                        {
+#if portFIRST_TASK_HOOK
+                               if ( xPortGetCoreID() == 0 ) {
+                                       vPortFirstTaskHook(pxTaskCode);
+                               }
+#endif /* configFIRST_TASK_HOOK */
                                /* This is the first task to be created so do the preliminary
                                initialisation required.  We will not recover if this call
                                fails, but we will report the failure. */
@@ -1044,12 +1049,6 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB, TaskFunction_t pxTaskCode
                                                /* Schedule if nothing is scheduled yet, or overwrite a task of lower prio. */
                                                if ( pxCurrentTCB[i] == NULL || pxCurrentTCB[i]->uxPriority <= pxNewTCB->uxPriority )
                                                {
-#if portFIRST_TASK_HOOK
-                                                       if ( i == 0) {
-                                                               vPortFirstTaskHook(pxTaskCode);
-                                                       }
-#endif /* configFIRST_TASK_HOOK */
-
                                                        pxCurrentTCB[i] = pxNewTCB;
                                                        break;
                                                }