PRIVILEGED_FUNCTION int _gettimeofday_r(struct _reent *ptr, struct timeval * tp, void * tzvp) { struct timezone *tzp = (struct timezone *)tzvp; if (tp) { // FIXME this is uptime not time of day... unsigned long long uptime_usec = ullTaskGetSchedulerUptime(); tp->tv_sec = uptime_usec / 1000000; tp->tv_usec = uptime_usec % 1000000; } /* Return fixed data for the timezone. */ if (tzp) { tzp->tz_minuteswest = 0; tzp->tz_dsttime = 0; } return 0; }
extern "C" void vApplicationTickHook() { static unsigned portLONG ulTicksSinceLastDisplay = 0; // Called from every tick interrupt. Have enough ticks passed to make it // time to perform our health status check again? ulTicksSinceLastDisplay++; if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) { ulTicksSinceLastDisplay = 0; WDT_Feed(); #if configGENERATE_RUN_TIME_STATS == 1 unsigned long long uptime_usec = ullTaskGetSchedulerUptime(); #if 1 struct timeval tp; int t = gettimeofday(&tp, NULL); printf("timeofday = %ld seconds %ld microseconds (code %d)\n", (long)tp.tv_sec, (long)tp.tv_usec, t); #endif printf("Uptime: %u.%06u seconds\n", (unsigned int)(uptime_usec / 1000000), (unsigned int)(uptime_usec % 1000000)); int8_t *taskListBuffer = (int8_t *)malloc(40 * uxTaskGetNumberOfTasks()); if (taskListBuffer != NULL) { vTaskGetRunTimeStats((int8_t *)taskListBuffer); puts((const char *)taskListBuffer); free(taskListBuffer); } #endif // Has an error been found in any task? int allGood = 1; #if 0 if( xAreBlockingQueuesStillRunning() != pdTRUE ) { printf("ERROR - BLOCKQ\n"); allGood = 0; } if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) { printf("ERROR - BLOCKTIM\n"); allGood = 0; } if( xAreGenericQueueTasksStillRunning() != pdTRUE ) { printf("ERROR - GENQ\n"); allGood = 0; } if( xAreQueuePeekTasksStillRunning() != pdTRUE ) { printf("ERROR - PEEKQ\n"); allGood = 0; } if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) { printf("ERROR - DYNAMIC\n"); allGood = 0; } #endif if (allGood == 1) { printf("All Good.\n"); } fflush(stdout); } }