Poprzednia - Następna

Tworzenie programów real-time

Pisanie programów real-time

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.

Krótki opis API

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.

Przykłady

Przykładowy program

#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".

Inne przykłady

Przykładowe moduły pokazujące możliwości RTLinuksa znajdują się w katalogu examples/.


Poprzednia - Tworzenie programów real-time - Następna