我正在尝试从 POSIX 中的 ExpressLogic 移植实时 Thread_Metric,以便为我的论文对 Linux、Xenomai 和 RTAI 的 PREEMPT_RT 补丁进行基准测试。它们提供了具有以下功能的 C 源文件,您必须实现这些功能才能使基准测试工作:
void tm_initialize(void (*test_initialization_function)(void));
int tm_thread_create(int thread_id, int priority, void (*entry_function)(void));
int tm_thread_resume(int thread_id);
int tm_thread_suspend(int thread_id);
void tm_thread_relinquish(void);
void tm_thread_sleep(int seconds);
int tm_queue_create(int queue_id);
int tm_queue_send(int queue_id, unsigned long *message_ptr);
int tm_queue_receive(int queue_id, unsigned long *message_ptr);
int tm_semaphore_create(int semaphore_id);
int tm_semaphore_get(int semaphore_id);
int tm_semaphore_put(int semaphore_id);
int tm_memory_pool_create(int pool_id);
int tm_memory_pool_allocate(int pool_id, unsigned char **memory_ptr);
int tm_memory_pool_deallocate(int pool_id, unsigned char *memory_ptr);
现在我正在尝试实现 tm_thread_suspend 和 tm_thread_resume 函数,它们将 pthread 作为输入。我知道您可以使用 pthread_mutex_lock 和 pthread_cond_wait 例程挂起 pthread,但是您必须从线程 start_function 调用它们。我是这种东西的新手,而且我已经过头了。任何帮助表示赞赏。