scc_signals.c~ 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #include "scc_signals.h"
  2. extern RCCE_FLAG flag_signals_enabled,flag_data_written;
  3. extern int *sig_array, *data_array, NUES;
  4. extern int node_id, num_apps_terminated;
  5. extern FILE *log_file;
  6. int scc_kill(int target_ID, int sig) {
  7. int sig_array_local[LINE_SIZE], error, str_len, i;
  8. RCCE_FLAG_STATUS receiver_status;
  9. char error_str[64];
  10. fprintf(log_file,"I enter here with target_ID %d and sig %d\n",target_ID,sig);
  11. fflush(log_file);
  12. for (i=0; i<LINE_SIZE; i++)
  13. sig_array_local[i] = sig;
  14. RCCE_flag_read(flag_signals_enabled, &receiver_status, target_ID);
  15. //if (receiver_status == RCCE_FLAG_UNSET) printf("I am %d kai signals of 0 are disabled\n",ME);
  16. while (receiver_status == RCCE_FLAG_UNSET)
  17. RCCE_flag_read(flag_signals_enabled, &receiver_status, target_ID);
  18. error = RCCE_put((t_vcharp)(&sig_array[node_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), target_ID);
  19. if (error != RCCE_SUCCESS) {
  20. RCCE_error_string(error, error_str, &str_len);
  21. printf("I am %d and i got an error in put with descr %s\n",node_id,error_str);
  22. }
  23. fprintf(log_file,"I leave\n");
  24. fflush(log_file);
  25. return error;
  26. }
  27. void scc_signals_check(void) {
  28. int sig_read_ar[LINE_SIZE], sig_array_local[LINE_SIZE], error, str_len, sender_id, i, sig;
  29. RCCE_FLAG_STATUS receiver_status;
  30. char error_str[64];
  31. for (i=0; i<LINE_SIZE; i++) sig_array_local[i] = NO_SIG;
  32. //disable signals here
  33. //RCCE_flag_write(&flag_signals_enabled, RCCE_FLAG_UNSET, node_id);
  34. for (sender_id=0; sender_id<NUES; sender_id++) {
  35. if (sender_id == node_id) continue;
  36. RCCE_flag_write(&flag_signals_enabled, RCCE_FLAG_UNSET, node_id);
  37. error = RCCE_get((t_vcharp)(&sig_read_ar[0]), (t_vcharp)(&sig_array[sender_id*LINE_SIZE]), LINE_SIZE * sizeof(int), node_id);
  38. RCCE_flag_write(&flag_signals_enabled, RCCE_FLAG_SET, node_id);
  39. if (error != RCCE_SUCCESS) {
  40. RCCE_error_string(error, error_str, &str_len);
  41. printf("I am %d and i got an error in get from %d with descr %s\n",node_id,sender_id,error_str);
  42. } else {
  43. if (sig_read_ar[0] == SIG_INIT) {
  44. sig_INIT_handler(sender_id);
  45. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  46. } else if (sig_read_ar[0] == SIG_ACK) {
  47. sig_ACK_handler(sender_id);
  48. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  49. } else if (sig_read_ar[0] == SIG_TERMINATE) {
  50. sig_TERMINATE_handler(sender_id);
  51. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  52. } else if (sig_read_ar[0] == SIG_INIT_APP) {
  53. sig_INIT_APP_handler(sender_id);
  54. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  55. } else if (sig_read_ar[0] == SIG_IDAG_FIND_IDAGS) {
  56. sig_IDAG_FIND_IDAGS_handler(sender_id);
  57. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  58. } else if (sig_read_ar[0] == SIG_REQ_DDS) {
  59. sig_REQ_DDS_handler(sender_id);
  60. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  61. } else if (sig_read_ar[0] == SIG_REQ_CORES) {
  62. sig_REQ_CORES_handler(sender_id);
  63. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  64. } else if (sig_read_ar[0] == SIG_REP_OFFERS) {
  65. sig_REP_OFFERS_handler(sender_id);
  66. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  67. } else if (sig_read_ar[0] == SIG_INIT_AGENT) {
  68. sig_INIT_AGENT_handler(sender_id);
  69. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  70. } else if (sig_read_ar[0] == SIG_ADD_CORES_DDS) {
  71. sig_ADD_CORES_DDS_handler(sender_id);
  72. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  73. } else if (sig_read_ar[0] == SIG_REM_CORES_DDS) {
  74. sig_REM_CORES_DDS_handler(sender_id);
  75. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  76. } else if (sig_read_ar[0] == SIG_APPOINT_WORK) {
  77. sig_APPOINT_WORK_handler(sender_id);
  78. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  79. } else if (sig_read_ar[0] == SIG_CHECK_REM_TIME) {
  80. sig_CHECK_REM_TIME_handler(sender_id);
  81. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  82. } else if (sig_read_ar[0] == SIG_FINISH) {
  83. sig_FINISH_handler(sender_id);
  84. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  85. } else if (sig_read_ar[0] == SIG_REJECT) {
  86. sig_REJECT_handler(sender_id);
  87. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  88. } else if (sig_read_ar[0] == SIG_APP_TERMINATED) {
  89. num_apps_terminated++;
  90. fprintf(log_file,"app_terminated = %d sender_id = %d\n",num_apps_terminated,sender_id);
  91. fflush(log_file);
  92. //error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  93. } else if (sig_read_ar[0] != NO_SIG) {
  94. fprintf(log_file,"I read smth different than no_sig which is %d from %d\n",sig_read_ar[0],sender_id);
  95. fflush(log_file);
  96. }
  97. if (sig_read_ar[0] != NO_SIG) {
  98. sig = sig_read_ar[0];
  99. RCCE_flag_write(&flag_signals_enabled, RCCE_FLAG_UNSET, node_id);
  100. error = RCCE_put((t_vcharp)(&sig_array[sender_id*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), node_id);
  101. RCCE_flag_write(&flag_signals_enabled, RCCE_FLAG_SET, node_id);
  102. }
  103. }
  104. }
  105. RCCE_flag_write(&flag_signals_enabled, RCCE_FLAG_SET, node_id);
  106. }