Files
tactility/Modules/freertos-module/source/module.cpp
Ken Van Hoeylandt 19b11eb9a8 Remove TactilityC and Firmware subprojects (#638)
- Removed TactilityC, moved its symbols to existing modules and several new ones (pthread-module, c-symbols-module, cpp-symbols-module, posix-symbols-module, freertos-module).
- Removed Firmware subproject and moved main() into Tactility subproject.
- Strengthened application archive, path, version, stack-size, and device validation.
- Moved symbol resolution for elf_loader to app-esp32-module.
- Improved `struct Module` declarations and made module and symbol definitions in modules more consistent.
- Removed old http download code from Tactility subproject.
- Rename app-module's source files for consistency.
- Add missing pthread symbols.
- Kernel module symbols are now resolvable on all platforms.
2026-08-29 21:06:43 +02:00

166 lines
6.3 KiB
C++

// SPDX-License-Identifier: Apache-2.0
#ifdef ESP_PLATFORM
#include <sdkconfig.h>
#endif
#include <freertos/module.h>
#include <tactility/freertos/event_groups.h>
#include <tactility/freertos/queue.h>
#include <tactility/freertos/task.h>
#include <tactility/freertos/timers.h>
extern "C" {
static const ModuleSymbol SYMBOLS[] = {
// Task
DEFINE_MODULE_SYMBOL(uxTaskGetStackHighWaterMark),
DEFINE_MODULE_SYMBOL(uxTaskGetNumberOfTasks),
DEFINE_MODULE_SYMBOL(uxTaskGetTaskNumber),
DEFINE_MODULE_SYMBOL(uxTaskPriorityGet),
DEFINE_MODULE_SYMBOL(uxTaskPriorityGetFromISR),
DEFINE_MODULE_SYMBOL(vTaskDelay),
DEFINE_MODULE_SYMBOL(vTaskDelete),
#ifdef ESP_PLATFORM
// ESP-IDF FreeRTOS extension (memory-capability-aware alloc); not in vanilla FreeRTOS-Kernel.
DEFINE_MODULE_SYMBOL(vTaskDeleteWithCaps),
#endif
DEFINE_MODULE_SYMBOL(vTaskSetTimeOutState),
DEFINE_MODULE_SYMBOL(vTaskPrioritySet),
DEFINE_MODULE_SYMBOL(vTaskSetTaskNumber),
DEFINE_MODULE_SYMBOL(vTaskSetThreadLocalStoragePointer),
#ifdef ESP_PLATFORM
// ESP-IDF FreeRTOS extension (TLS pointer with destructor callback, used by pthread emulation).
DEFINE_MODULE_SYMBOL(vTaskSetThreadLocalStoragePointerAndDelCallback),
#endif
DEFINE_MODULE_SYMBOL(vTaskGetInfo),
DEFINE_MODULE_SYMBOL(vTaskResume),
DEFINE_MODULE_SYMBOL(vTaskSuspend),
DEFINE_MODULE_SYMBOL(xTaskCreate),
DEFINE_MODULE_SYMBOL(xTaskAbortDelay),
DEFINE_MODULE_SYMBOL(xTaskCheckForTimeOut),
#ifdef ESP_PLATFORM
// Xtensa_ESP32 port only; the POSIX port has no multi-core pinning.
DEFINE_MODULE_SYMBOL(xTaskCreatePinnedToCore),
#endif
#if configSUPPORT_STATIC_ALLOCATION == 1
DEFINE_MODULE_SYMBOL(xTaskCreateStatic),
#ifdef ESP_PLATFORM
DEFINE_MODULE_SYMBOL(xTaskCreateStaticPinnedToCore),
#endif
#endif
#ifdef ESP_PLATFORM
// ESP-IDF FreeRTOS extensions (memory-capability-aware alloc); not in vanilla FreeRTOS-Kernel.
DEFINE_MODULE_SYMBOL(xTaskCreateWithCaps),
DEFINE_MODULE_SYMBOL(xTaskCreatePinnedToCoreWithCaps),
#endif
DEFINE_MODULE_SYMBOL(xTaskDelayUntil),
DEFINE_MODULE_SYMBOL(xTaskGenericNotify),
DEFINE_MODULE_SYMBOL(xTaskGenericNotifyFromISR),
DEFINE_MODULE_SYMBOL(ulTaskGenericNotifyTake),
DEFINE_MODULE_SYMBOL(xTaskGetCurrentTaskHandle),
DEFINE_MODULE_SYMBOL(xTaskGetTickCount),
DEFINE_MODULE_SYMBOL(xTaskGetTickCountFromISR),
DEFINE_MODULE_SYMBOL(pvTaskGetThreadLocalStoragePointer),
DEFINE_MODULE_SYMBOL(pvTaskIncrementMutexHeldCount),
// EventGroup
DEFINE_MODULE_SYMBOL(xEventGroupCreate),
#ifdef ESP_PLATFORM
// ESP-IDF FreeRTOS extension (memory-capability-aware alloc); not in vanilla FreeRTOS-Kernel.
DEFINE_MODULE_SYMBOL(xEventGroupCreateWithCaps),
#endif
#if configSUPPORT_STATIC_ALLOCATION == 1
DEFINE_MODULE_SYMBOL(xEventGroupCreateStatic),
DEFINE_MODULE_SYMBOL(xEventGroupGetStaticBuffer),
#endif
DEFINE_MODULE_SYMBOL(xEventGroupClearBits),
DEFINE_MODULE_SYMBOL(xEventGroupClearBitsFromISR),
DEFINE_MODULE_SYMBOL(vEventGroupDelete),
DEFINE_MODULE_SYMBOL(xEventGroupGetBitsFromISR),
DEFINE_MODULE_SYMBOL(xEventGroupSetBits),
DEFINE_MODULE_SYMBOL(xEventGroupSetBitsFromISR),
DEFINE_MODULE_SYMBOL(xEventGroupSync),
DEFINE_MODULE_SYMBOL(xEventGroupWaitBits),
// Queue
DEFINE_MODULE_SYMBOL(vQueueDelete),
#ifdef ESP_PLATFORM
// ESP-IDF FreeRTOS extension (memory-capability-aware alloc); not in vanilla FreeRTOS-Kernel.
DEFINE_MODULE_SYMBOL(vQueueDeleteWithCaps),
#endif
DEFINE_MODULE_SYMBOL(vQueueSetQueueNumber),
DEFINE_MODULE_SYMBOL(vQueueWaitForMessageRestricted),
DEFINE_MODULE_SYMBOL(uxQueueGetQueueNumber),
DEFINE_MODULE_SYMBOL(uxQueueMessagesWaiting),
DEFINE_MODULE_SYMBOL(uxQueueMessagesWaitingFromISR),
DEFINE_MODULE_SYMBOL(uxQueueSpacesAvailable),
DEFINE_MODULE_SYMBOL(xQueueCreateCountingSemaphore),
#if configSUPPORT_STATIC_ALLOCATION == 1
DEFINE_MODULE_SYMBOL(xQueueCreateCountingSemaphoreStatic),
DEFINE_MODULE_SYMBOL(xQueueCreateMutexStatic),
DEFINE_MODULE_SYMBOL(xQueueGenericCreateStatic),
#endif
DEFINE_MODULE_SYMBOL(xQueueCreateMutex),
DEFINE_MODULE_SYMBOL(xQueueCreateSet),
DEFINE_MODULE_SYMBOL(xQueueGetMutexHolder),
DEFINE_MODULE_SYMBOL(xQueueGetMutexHolderFromISR),
DEFINE_MODULE_SYMBOL(xQueueGiveMutexRecursive),
DEFINE_MODULE_SYMBOL(xQueueTakeMutexRecursive),
DEFINE_MODULE_SYMBOL(xQueueGenericCreate),
DEFINE_MODULE_SYMBOL(xQueueGenericReset),
DEFINE_MODULE_SYMBOL(xQueueGenericSend),
DEFINE_MODULE_SYMBOL(xQueueGenericSendFromISR),
DEFINE_MODULE_SYMBOL(xQueueSemaphoreTake),
DEFINE_MODULE_SYMBOL(xQueueReceive),
// Timer
DEFINE_MODULE_SYMBOL(pvTimerGetTimerID),
DEFINE_MODULE_SYMBOL(xTimerCreate),
#if configSUPPORT_STATIC_ALLOCATION == 1
DEFINE_MODULE_SYMBOL(xTimerCreateStatic),
#endif
DEFINE_MODULE_SYMBOL(xTimerGenericCommand),
DEFINE_MODULE_SYMBOL(xTimerIsTimerActive),
DEFINE_MODULE_SYMBOL(xTimerGetExpiryTime),
DEFINE_MODULE_SYMBOL(xTimerPendFunctionCall),
DEFINE_MODULE_SYMBOL(xTimerPendFunctionCallFromISR),
DEFINE_MODULE_SYMBOL(xTimerGetPeriod),
DEFINE_MODULE_SYMBOL(uxTimerGetReloadMode),
DEFINE_MODULE_SYMBOL(uxTimerGetTimerNumber),
DEFINE_MODULE_SYMBOL(vTimerSetReloadMode),
DEFINE_MODULE_SYMBOL(vTimerSetTimerID),
DEFINE_MODULE_SYMBOL(vTimerSetTimerNumber),
// portmacro.h
DEFINE_MODULE_SYMBOL(vPortYield),
DEFINE_MODULE_SYMBOL(vPortEnterCritical),
DEFINE_MODULE_SYMBOL(vPortExitCritical),
#if defined(CONFIG_IDF_TARGET_ESP32P4) || defined(CONFIG_IDF_TARGET_ESP32S3)
DEFINE_MODULE_SYMBOL(xPortEnterCriticalTimeout),
#endif
#if (configNUM_CORES > 1)
DEFINE_MODULE_SYMBOL(vPortExitCriticalCompliance),
#endif
#ifdef CONFIG_IDF_TARGET_ESP32P4
DEFINE_MODULE_SYMBOL(vPortExitCriticalMultiCore),
#endif
#ifdef ESP_PLATFORM
// freertos_tasks_c_additions.h - Xtensa_ESP32 port / ESP-IDF newlib integration only.
DEFINE_MODULE_SYMBOL(xPortInIsrContext),
DEFINE_MODULE_SYMBOL(xPortCanYield),
DEFINE_MODULE_SYMBOL(xPortGetCoreID),
DEFINE_MODULE_SYMBOL(xPortGetTickRateHz),
DEFINE_MODULE_SYMBOL(xPortInterruptedFromISRContext),
DEFINE_MODULE_SYMBOL(__getreent),
#endif
MODULE_SYMBOL_TERMINATOR,
};
Module freertos_module = {
.name = "freertos",
.start = nullptr,
.stop = nullptr,
.drivers = nullptr,
.symbols = SYMBOLS,
.internal = nullptr,
};
}