2 * \brief Implementace pomocnych funkci.
5 * \author Martin Prudek
7 * Implementace pomocnych funkci.
8 * Vetsinou pro komunikaci mezi vlakny, jejich sychronizaci a predavani priorit.
13 #include <signal.h> /*signal handler*/
15 #include <stdio.h> /*printf*/
26 void appl_sig_handler(int sig){
32 * \brief Setup initial environment.
34 void setup_environment(){
35 /*struktura pro signal handler*/
36 struct sigaction sighnd;
40 /*nastaveni signalu pro vypnuti pomoci Ctrl+C*/
41 sighnd.sa_handler=appl_sig_handler;
42 sigaction(SIGINT, &sighnd, NULL );
49 int create_rt_task(pthread_t *thread, int prio, void *(*start_routine) (void *), void *arg){
53 struct sched_param schparam;
55 /*inicializace implicitnich atributu*/
56 if (pthread_attr_init(&attr) != 0) {
57 fprintf(stderr, "pthread_attr_init failed\n");
61 /*nastavi dedeni planovace z attr*/
62 if (pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED) != 0) {
63 fprintf(stderr, "pthread_attr_setinheritsched failed\n");
67 /*nastaveni planovace*/
68 if (pthread_attr_setschedpolicy(&attr, SCHED_FIFO) != 0) {
69 fprintf(stderr, "pthread_attr_setschedpolicy SCHED_FIFO failed\n");
73 schparam.sched_priority = prio;
75 /*nastavit atribut attr podle hodnoty schparam*/
76 if (pthread_attr_setschedparam(&attr, &schparam) != 0) {
77 fprintf(stderr, "pthread_attr_setschedparam failed\n");
82 ret = pthread_create(thread, &attr, start_routine, arg);
84 /*uvolni strukturu, nema vliv na vlakna jiz vytvorena*/
85 pthread_attr_destroy(&attr);