Я пытаюсь перенести реальное время Thread_Metric из ExpressLogic в POSIX, чтобы сравнить PREEMPT_RT исправления для Linux, Xenomai и RTAI для моей диссертации. Они обеспечивают исходный C-файл со следующими функциями, которые вы должны реализовать для того, чтобы в тесте на работу:Функция, которая принимает pthread как входной сигнал и приостанавливает его
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 с помощью pthread_mutex_lock и pthread_cond_wait, но вы должны вызывать их из потока start_function. Я новичок в таких вещах, и я нахожусь в моей голове. Любая помощь приветствуется.
'pthread_suspend' не является функцией pthread, это некоторое расширение поставщика. –
'pthread_suspend() и pthread_continue() были разработаны X/Open.' – bmargulies
И все же не включены в стандарт. Вероятно, вы можете прочесть обоснованные документы и найти достаточно вескую причину. –