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.
This commit is contained in:
committed by
GitHub
parent
d3556fb536
commit
19b11eb9a8
@@ -0,0 +1,108 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
#include <pthread/module.h>
|
||||
|
||||
#include <pthread.h>
|
||||
#include <semaphore.h>
|
||||
#include <unistd.h>
|
||||
|
||||
// pthread_mutex_timedlock / pthread_rwlock_timed{rd,wr}lock / sem_timedwait belong to POSIX's
|
||||
// optional "Timeouts" feature (_POSIX_TIMEOUTS, from <unistd.h>) - Apple's libc never implements
|
||||
// it, so this is the portable, spec-sanctioned test rather than an OS-name check.
|
||||
#if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0
|
||||
#define TT_PTHREAD_HAS_TIMEOUTS 1
|
||||
#else
|
||||
#define TT_PTHREAD_HAS_TIMEOUTS 0
|
||||
#endif
|
||||
|
||||
#if !defined(ESP_PLATFORM) && defined(__GLIBC_PREREQ)
|
||||
#if __GLIBC_PREREQ(2, 30)
|
||||
#define TT_PTHREAD_HAS_CLOCKWAIT 1
|
||||
#else
|
||||
#define TT_PTHREAD_HAS_CLOCKWAIT 0
|
||||
#endif
|
||||
#else
|
||||
#define TT_PTHREAD_HAS_CLOCKWAIT 0
|
||||
#endif
|
||||
|
||||
extern "C" {
|
||||
|
||||
static const ModuleSymbol SYMBOLS[] = {
|
||||
// pthread
|
||||
DEFINE_MODULE_SYMBOL(pthread_attr_init),
|
||||
DEFINE_MODULE_SYMBOL(pthread_attr_setstacksize),
|
||||
DEFINE_MODULE_SYMBOL(pthread_create),
|
||||
DEFINE_MODULE_SYMBOL(pthread_detach),
|
||||
DEFINE_MODULE_SYMBOL(pthread_exit),
|
||||
DEFINE_MODULE_SYMBOL(pthread_join),
|
||||
// pthread_cond
|
||||
DEFINE_MODULE_SYMBOL(pthread_cond_init),
|
||||
DEFINE_MODULE_SYMBOL(pthread_cond_broadcast),
|
||||
#if TT_PTHREAD_HAS_CLOCKWAIT
|
||||
DEFINE_MODULE_SYMBOL(pthread_cond_clockwait),
|
||||
#endif
|
||||
DEFINE_MODULE_SYMBOL(pthread_cond_destroy),
|
||||
DEFINE_MODULE_SYMBOL(pthread_cond_signal),
|
||||
DEFINE_MODULE_SYMBOL(pthread_cond_timedwait),
|
||||
// pthread_mutex
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutex_destroy),
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutex_init),
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutex_lock),
|
||||
#if TT_PTHREAD_HAS_TIMEOUTS
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutex_timedlock),
|
||||
#endif
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutex_trylock),
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutex_unlock),
|
||||
// pthread_mutexattr
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutexattr_destroy),
|
||||
#ifndef ESP_PLATFORM
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutexattr_getpshared),
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutexattr_setpshared),
|
||||
#endif
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutexattr_gettype),
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutexattr_init),
|
||||
DEFINE_MODULE_SYMBOL(pthread_mutexattr_settype),
|
||||
// sem
|
||||
DEFINE_MODULE_SYMBOL(sem_destroy),
|
||||
DEFINE_MODULE_SYMBOL(sem_getvalue),
|
||||
DEFINE_MODULE_SYMBOL(sem_init),
|
||||
DEFINE_MODULE_SYMBOL(sem_post),
|
||||
#if TT_PTHREAD_HAS_TIMEOUTS
|
||||
DEFINE_MODULE_SYMBOL(sem_timedwait),
|
||||
#endif
|
||||
DEFINE_MODULE_SYMBOL(sem_trywait),
|
||||
DEFINE_MODULE_SYMBOL(sem_wait),
|
||||
// pthread_rwlock
|
||||
#if TT_PTHREAD_HAS_CLOCKWAIT
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_clockrdlock),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_clockwrlock),
|
||||
#endif
|
||||
#if TT_PTHREAD_HAS_TIMEOUTS
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_timedrdlock),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_timedwrlock),
|
||||
#endif
|
||||
#ifndef ESP_PLATFORM
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlockattr_destroy),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlockattr_getpshared),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlockattr_init),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlockattr_setpshared),
|
||||
#endif
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_destroy),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_init),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_rdlock),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_tryrdlock),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_trywrlock),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_unlock),
|
||||
DEFINE_MODULE_SYMBOL(pthread_rwlock_wrlock),
|
||||
MODULE_SYMBOL_TERMINATOR,
|
||||
};
|
||||
|
||||
Module pthread_module = {
|
||||
.name = "pthread",
|
||||
.start = nullptr,
|
||||
.stop = nullptr,
|
||||
.drivers = nullptr,
|
||||
.symbols = SYMBOLS,
|
||||
.internal = nullptr,
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user