Linux、Xenomai、および RTAI の PREEMPT_RT パッチのベンチマークを論文で行うために、ExpressLogic からリアルタイムの Thread_Metric を POSIX に移植しようとしています。これらは、ベンチマークが機能するために実装する必要がある次の関数を含む 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);
現在、pthread を入力として受け取る tm_thread_suspend および tm_thread_resume 関数を実装しようとしています。pthread_mutex_lock および pthread_cond_wait ルーチンを使用して pthread を一時停止できることは知っていますが、これらはスレッドの start_function から呼び出す必要があります。私はこの種のものに不慣れで、頭を悩ませています。どんな助けでも大歓迎です。