Programy real-time pisze się jako moduły kernela, kompiluje i ładuje przy pomocy standardowych narzędzi do tego służących.
Każdy program real-time zawiera funkcje init_module() i cleanup_module().
RTLinux zapewnia programiście API zgodne ze standardem POSIX. Można używać wątków w procesach jądra, podobnie jak zapewnia to biblioteka LinuxThreads w przestrzeni użytkownika.
Aby stworzyć wątek real-time wykorzystujemy funkcję pthread_create(), zaś żeby go zakończyć pthread_cancel().
Przy pomocy funkcji: pthread_attr_init() , pthread_attr_setschedparam() i pthread_attr_getschedparam() możemy zmienić właściwości tworzonego wątku.
Funkcje clock_gettime() i clock_gethrtime() zwracają aktualny czas.
Jednakże to co nas naprawdę interesuje to wywołania regulujące szeregowanie wątków.
pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param) - ustawia właściwości istniejącego wątku,
pthread_make_periodic_np(pthread_t thread, const struct itimerspec *its) - powoduje, że wątek będzie uruchamiany co pewien czas.
#include <rtl.h>
#include <time.h>
#include <pthread.h>
pthread_t thread;
void * start_routine(void *arg) {
struct sched_param p;
p . sched_priority = 1;
pthread_setschedparam (pthread_self(), SCHED_FIFO, &p);
pthread_make_periodic_np (pthread_self(), gethrtime(),
500000000);
while (1) {
pthread_wait_np();
rtl_printf("Jestem programem czasu rzeczywistego\n");
}
return 0;
}
int init_module(void) {
return pthread_create (&thread, NULL, start_routine, 0);
}
void cleanup_module(void) {
pthread_cancel (thread);
pthread_join (thread, NULL);
}
Ten program będzie wyświetlał dwa razy na sekundę napis "Jestem programem czesu rzeczywistego".
Przykładowe moduły pokazujące możliwości RTLinuksa znajdują się w katalogu examples/.
Poprzednia - Tworzenie programów real-time - Następna