#define CONFIGURE_INIT #include #include #include #include #include #include #include #include #include "system.h" #include "returncode.h" #include "monano.h" #include "monano_data.h" #include "measure.h" #include "time_conversion.h" #include "task_parameter.h" #include "nthread.h" struct pthread_monano_t my_monano; pthread_monano_id_t my_monano_id[NTHREAD]; struct pthread_monano_attr_t tparam[CONFIGURE_MAXIMUM_MONANO_THREAD_NUMBER]; void* my_callback(int anomaly_number, pthread_monano_id_t id) { printf("Type anomaly : %d Anomaly is detected of thread number %d\n", anomaly_number, id); return 0; } void* periodic_activation(void* arg){ int ego = *(int*)arg, status; status=pthread_monano_signal_departure_time(&my_monano, my_monano_id[ego]); if(status<0) returncode("pthread_monano_signal_departure_time",status); status=pthread_monano_thread_execution(&my_monano, my_monano_id[ego]); if(status<0) returncode("pthread_monano_thread_execution",status); status=pthread_monano_signal_end_time(&my_monano, my_monano_id[ego]); if(status<0) returncode("pthread_monano_signal_end_time",status); return 0; } void* POSIX_Init(void *argument) { int status, i; int thread_number; int* ego; struct pthread_monano_attr_t* task_param; //struct timespec period={10,0}; //struct timespec wcet={2,0}; /* Monano init and register */ pthread_monano_init(&my_monano); for(i=0; ipriority; tparam[i].period=task_param->period; tparam[i].wcet=task_param->wcet; tparam[i].deadline=task_param->deadline; /* create a monano periodic thread */ ego=(int*)malloc(sizeof(int)); *ego=i; status=pthread_monano_periodic_thread_create (&my_monano, tparam[i], periodic_activation, &my_monano_id[i], ego); if(status<0){ returncode("pthread_monano_pthread_create",status); } task_param++; } nanosleep(&stop,NULL); pthread_monano_stop(&my_monano); exit(0); return NULL; }