diff --git a/osal/FreeRTOS/TaskFactory.cpp b/osal/FreeRTOS/TaskFactory.cpp index 3ac5cb49..5b64811a 100644 --- a/osal/FreeRTOS/TaskFactory.cpp +++ b/osal/FreeRTOS/TaskFactory.cpp @@ -49,5 +49,11 @@ ReturnValue_t TaskFactory::delayTask(uint32_t delayMs) { return HasReturnvaluesIF::RETURN_OK; } +void TaskFactory::printMissedDeadline() { + /* TODO: Implement */ + return; +} + + TaskFactory::TaskFactory() { } diff --git a/osal/host/TaskFactory.cpp b/osal/host/TaskFactory.cpp index bc65504c..4fafd349 100644 --- a/osal/host/TaskFactory.cpp +++ b/osal/host/TaskFactory.cpp @@ -48,4 +48,9 @@ ReturnValue_t TaskFactory::delayTask(uint32_t delayMs){ return HasReturnvaluesIF::RETURN_OK; } +void TaskFactory::printMissedDeadline() { + /* TODO: Implement */ + return; +} + diff --git a/osal/linux/TaskFactory.cpp b/osal/linux/TaskFactory.cpp index d18a0316..93564647 100644 --- a/osal/linux/TaskFactory.cpp +++ b/osal/linux/TaskFactory.cpp @@ -39,5 +39,26 @@ ReturnValue_t TaskFactory::delayTask(uint32_t delayMs){ return PosixThread::sleep(delayMs*1000000ull); } +void TaskFactory::printMissedDeadline() { + char name[20] = {0}; + int status = pthread_getname_np(pthread_self(), name, sizeof(name)); +#if FSFW_CPP_OSTREAM_ENABLED == 1 + if(status == 0) { + sif::warning << "task::printMissedDeadline: " << name << "" << std::endl; + } + else { + sif::warning << "task::printMissedDeadline: Unknown task name" << status << + std::endl; + } +#else + if(status == 0) { + sif::printWarning("task::printMissedDeadline: %s\n", name); + } + else { + sif::printWarning("task::printMissedDeadline: Unknown task name\n", name); + } +#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */ +} + TaskFactory::TaskFactory() { } diff --git a/osal/rtems/TaskFactory.cpp b/osal/rtems/TaskFactory.cpp index 5dad69fe..095e9a26 100644 --- a/osal/rtems/TaskFactory.cpp +++ b/osal/rtems/TaskFactory.cpp @@ -44,5 +44,10 @@ ReturnValue_t TaskFactory::delayTask(uint32_t delayMs){ return HasReturnvaluesIF::RETURN_OK; } +void TaskFactory::printMissedDeadline() { + /* TODO: Implement */ + return; +} + TaskFactory::TaskFactory() { } diff --git a/tasks/TaskFactory.h b/tasks/TaskFactory.h index 85cdda90..03b5163c 100644 --- a/tasks/TaskFactory.h +++ b/tasks/TaskFactory.h @@ -62,6 +62,12 @@ public: */ static ReturnValue_t delayTask(uint32_t delayMs); + /** + * OS specific implementation to print deadline. In most cases, there is a OS specific + * way to retrieve the task name and print it out as well. + */ + static void printMissedDeadline(); + private: /** * External instantiation is not allowed.