variables.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. #ifndef __VARIABLES_H__
  2. #define __VARIABLES_H__
  3. #include <semaphore.h>
  4. #include <signal.h>
  5. #include <errno.h>
  6. #include <unistd.h>
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <fcntl.h>
  11. #include <math.h>
  12. #ifdef PLAT_SCC
  13. #include "RCCE.h"
  14. #define X_max 6
  15. #define Y_max 8
  16. #define MAX_SIGNAL_LIST_LEN 128
  17. #endif
  18. #include "structs.h"
  19. /* Printing Material */
  20. #define KNRM "\x1B[0m"
  21. #define KBLK "\x1B[30m"
  22. #define KRED "\x1B[31m"
  23. #define KGRN "\x1B[32m"
  24. #define KYEL "\x1B[33m"
  25. #define KBLU "\x1B[34m"
  26. #define KMAG "\x1B[35m"
  27. #define KCYN "\x1B[36m"
  28. #define KWHT "\x1B[37m"
  29. /*********************/
  30. /* Static Variables */
  31. #define MS 1000000
  32. #define INIT_NODE_INTERVAL 1000
  33. #define LINE_SIZE 8
  34. #define SIG_BASE_NUM 42
  35. #define NUM_OF_MATRICES 3
  36. #define MAX_WORKERS_COUNT 8 //FIXME
  37. #define MAX_ARRAY_SIZE 4096
  38. #define MAX_DATA_LIST_LEN 3
  39. #define LEAST_SELF_OPT_INTERVAL_MS 500
  40. #define MAX_SELF_OPT_INTERVAL_MS 12800
  41. #define MAX_STR_NAME_SIZE 256
  42. #define SCEN_NUM_SIZE MAX_STR_NAME_SIZE
  43. #define SCEN_DIR_SIZE MAX_STR_NAME_SIZE
  44. #define PAXOS_SCEN_SIZE 32
  45. /**************************/
  46. /* Signals */
  47. #define NO_SIG 0
  48. #define SIG_ACK SIG_BASE_NUM
  49. #define SIG_INIT SIG_BASE_NUM+1
  50. #define SIG_TERMINATE SIG_BASE_NUM+2
  51. #define SIG_INIT_APP SIG_BASE_NUM+3
  52. #define SIG_IDAG_FIND_IDAGS SIG_BASE_NUM+4
  53. #define SIG_REQ_DDS SIG_BASE_NUM+5
  54. #define SIG_REQ_CORES SIG_BASE_NUM+6
  55. #define SIG_REP_OFFERS SIG_BASE_NUM+7
  56. #define SIG_INIT_AGENT SIG_BASE_NUM+8
  57. #define SIG_ADD_CORES_DDS SIG_BASE_NUM+9
  58. #define SIG_REM_CORES_DDS SIG_BASE_NUM+10
  59. #define SIG_APPOINT_WORK SIG_BASE_NUM+11
  60. #define SIG_FINISH SIG_BASE_NUM+12
  61. #define SIG_REJECT SIG_BASE_NUM+13
  62. #define SIG_APP_TERMINATED SIG_BASE_NUM+14
  63. //PAXOS_SIGNALS
  64. #define SIG_PREPARE_REQUEST SIG_BASE_NUM+15
  65. #define SIG_PREPARE_ACCEPT_NO_PREVIOUS SIG_BASE_NUM+16
  66. #define SIG_PREPARE_ACCEPT SIG_BASE_NUM+17
  67. #define SIG_ACCEPT_REQUEST SIG_BASE_NUM+18
  68. #define SIG_ACCEPTED SIG_BASE_NUM+19
  69. #define SIG_LEARN SIG_BASE_NUM+20
  70. #define SIG_LEARN_ACK SIG_BASE_NUM+21
  71. #define SIG_LEARN_ACK_CONTR SIG_BASE_NUM+22
  72. #define SIG_REINIT_APP SIG_BASE_NUM+23
  73. #define SIG_CONTR_TO SIG_BASE_NUM+24
  74. #define SIG_REMOVE_FROM_DDS SIG_BASE_NUM+25
  75. #define SIG_ADD_TO_DDS SIG_BASE_NUM+26
  76. #define SIG_HEARTBEAT_REQ SIG_BASE_NUM+27
  77. #define SIG_HEARTBEAT_REP SIG_BASE_NUM+28
  78. #define SIG_FAIL SIG_BASE_NUM+29
  79. #define SIG_PAXOS_STATS_REQ SIG_BASE_NUM+30
  80. #define SIG_PAXOS_STATS_REP SIG_BASE_NUM+31
  81. #define SIG_RECOVER SIG_BASE_NUM+32
  82. #define SIG_TIMER SIGRTMIN
  83. #define SIG_CTIMER SIGRTMIN+1
  84. #define SIG_EPFD_TIMER SIGRTMIN+2
  85. #define SIG_ITIMER SIGRTMIN+3
  86. #define SIG_PFD_TIMER SIGRTMIN+4
  87. /*****************************************/
  88. #ifdef SCC
  89. extern int idag_mask[X_max*Y_max];
  90. extern int low_voltage_core[X_max*Y_max];
  91. extern int timer_schedule[X_max*Y_max];
  92. extern volatile int *manager_result_out;
  93. extern volatile int *index_bottom;
  94. extern RCCE_FLAG flag_data_written;
  95. extern RCCE_FLAG proposal_number_lock;
  96. extern int num_idags_x;
  97. #else
  98. extern int X_max, Y_max;
  99. extern int *pid_num;
  100. extern int *idag_mask;
  101. extern int *low_voltage_core;
  102. extern int *timer_schedule;
  103. extern int *manager_result_out;
  104. extern int *index_bottom;
  105. extern int num_idags_x;
  106. extern sem_t *flag_data_written, *scc_lock, *proposal_number_lock;
  107. #endif
  108. extern int node_id;
  109. extern int my_idag;
  110. extern int num_idags;
  111. extern int DDS_count;
  112. extern int my_cores_count;
  113. extern int nodes_ended_cnt;
  114. extern int nodes_initialised;
  115. extern int stats_replied;
  116. extern int paxos_stats_replied;
  117. extern int num_apps_terminated;
  118. extern int num_apps;
  119. extern int idags_replied;
  120. extern int index_top;
  121. extern int last_index_bottom;
  122. extern int NUES;
  123. extern int selfopt_interval;
  124. extern int init_DDS_replies;
  125. extern int init_DDS_idags;
  126. extern int selfopt_DDS_replies;
  127. extern int selfopt_DDS_idags;
  128. extern int base_offset;
  129. extern int old_cores_cnt;
  130. extern int active_working_cores;
  131. extern int delay;
  132. extern int R;
  133. extern int *sig_array;
  134. extern int *data_array;
  135. extern int *idag_id_arr;
  136. extern int *proposal_number_global;
  137. extern int sig_read_ar[2 * LINE_SIZE];
  138. extern long int selfopt_time_rem;
  139. extern metrics my_stats;
  140. extern metrics total_stats;
  141. extern metrics paxos_node_stats;
  142. extern metrics paxos_total_stats;
  143. extern FILE *log_file;
  144. extern FILE *init_ack_file;
  145. extern FILE *app_log_file;
  146. extern float old_Speedup;
  147. extern float my_Speedup;
  148. /* SVM */
  149. extern agent_info cur_agent;
  150. extern agent_info pending_agent;
  151. extern core_states state;
  152. extern core_states pending_state;
  153. extern application_states app_state;
  154. extern inter_list **core_inter_head;
  155. extern inter_list **core_inter_tail;
  156. extern inter_list *init_pending_head;
  157. extern inter_list *init_pending_tail;
  158. extern DDS_list *DDS;
  159. extern DDS_list *DDS_tail;
  160. extern core_list *my_cores;
  161. extern core_list *my_cores_tail;
  162. extern offer_list *init_man_offers;
  163. extern offer_list *selfopt_man_offers;
  164. extern target_list *init_targets_head;
  165. extern target_list *init_targets_tail;
  166. extern target_list *selfopt_targets_head;
  167. extern target_list *selfopt_targets_tail;
  168. extern app my_app;
  169. extern app init_app;
  170. extern time_t cur_time;
  171. extern timer_t timerid, inter_timer;
  172. extern struct tm *cur_t;
  173. extern struct sigevent sev;
  174. extern struct itimerspec its, chk_timer;
  175. extern struct timeval time_val;
  176. extern char scen_num[SCEN_NUM_SIZE];
  177. extern char scen_directory[SCEN_DIR_SIZE];
  178. extern my_time_stamp init_app_times[2];
  179. extern my_time_stamp my_app_times[2];
  180. extern app_exec executed_app;
  181. /* PAXOS */
  182. extern int first_time;
  183. extern int worker_app_id;
  184. extern int worker_flag;
  185. extern int manager_to_fail;
  186. extern int faulty_core;
  187. extern int fail_flag;
  188. extern int pending_workload[2];
  189. extern int *alive;
  190. extern int *suspected;
  191. extern core_states paxos_state;
  192. extern acceptor_var acceptor_vars;
  193. extern proposer_var proposer_vars;
  194. extern coworkers_list *coworkers;
  195. extern timer_t controller_timer;
  196. extern timer_t epfd_timer;
  197. extern timer_t pfd_timer;
  198. extern struct timeval fail_time_val;
  199. #endif