]> rtime.felk.cvut.cz Git - frescor/fosa.git/blobdiff - src_marte/tests/test_fosa_ads/test_fosa_ads.c
Migrating FOSA trunk to d-ac2v2. Phase 1 moving FRSH-FOSA to FOSA
[frescor/fosa.git] / src_marte / tests / test_fosa_ads / test_fosa_ads.c
index 3e32461b95990a757f121b72cbf64d1e0cb5a06e..486d7f0bf563a1fc0661e3d85b6e553aff71d520 100644 (file)
 // covered by the GNU Public License.
 // -----------------------------------------------------------------------
 
-#include "fosa_app_def_sched.h"
-#include "fosa_threads_and_signals.h"
-#include "fosa_mutexes_and_condvars.h"
-#include "fosa_clocks_and_timers.h"
 #include <stdio.h>  // for printf
 #include <string.h> // for strlen, strncpy
 #include <unistd.h> // for sleep
 #include <time.h> // for nanosleep
-#include <misc/load.h> // for adjust, eat
+
 
 // TODO: use #include <assert.h> when it works for all architectures
 #include <stdlib.h> // for exit in assert
 
+#include "fosa.h"
+
 static void inline assert(expression)
 {
     if (!expression) {
@@ -77,42 +75,42 @@ static void inline assert(expression)
 
 static void *thread_code(void *arg);
 
-static void frsh_callback_init
+static void fosa_callback_init
                 (void *sched_data, void *arg);
 
-static void frsh_callback_new_thread
+static void fosa_callback_new_thread
                 (void *sched_data,
-                 frsh_thread_id_t thread,
+                 fosa_thread_id_t thread,
                  fosa_ads_actions_t *actions,
                  struct timespec *current_time);
 
-static void frsh_callback_thread_terminate
+static void fosa_callback_thread_terminate
                 (void *sched_data,
-                 frsh_thread_id_t thread,
+                 fosa_thread_id_t thread,
                  fosa_ads_actions_t *actions,
                  struct timespec *current_time);
 
-static void frsh_callback_thread_ready
+static void fosa_callback_thread_ready
                 (void *sched_data,
-                 frsh_thread_id_t thread,
+                 fosa_thread_id_t thread,
                  fosa_ads_actions_t *actions,
                  struct timespec *current_time);
 
-static void frsh_callback_thread_block
+static void fosa_callback_thread_block
                 (void *sched_data,
-                 frsh_thread_id_t thread,
+                 fosa_thread_id_t thread,
                  fosa_ads_actions_t *actions,
                  struct timespec *current_time);
 
-static void frsh_callback_change_sched_param_thread
+static void fosa_callback_change_sched_param_thread
                 (void *sched_data,
-                 frsh_thread_id_t thread,
+                 fosa_thread_id_t thread,
                  fosa_ads_actions_t *actions,
                  struct timespec *current_time);
 
-static void frsh_callback_explicit_call_with_data
+static void fosa_callback_explicit_call_with_data
                 (void *sched_data,
-                 frsh_thread_id_t thread,
+                 fosa_thread_id_t thread,
                  const void * msg,
                  size_t msg_size,
                  void *reply,
@@ -120,28 +118,28 @@ static void frsh_callback_explicit_call_with_data
                  fosa_ads_actions_t *actions,
                  struct timespec *current_time);
 
-static void frsh_callback_notification_for_thread
+static void fosa_callback_notification_for_thread
                 (void *sched_data,
-                 frsh_thread_id_t thread,
+                 fosa_thread_id_t thread,
                  fosa_clock_id_t clock,
                  fosa_ads_actions_t *actions,
                  struct timespec *current_time);
 
-static void frsh_callback_timeout
+static void fosa_callback_timeout
                 (void *sched_data,
                  fosa_ads_actions_t *actions,
                  struct timespec *current_time);
 
-static void frsh_callback_signal
+static void fosa_callback_signal
                 (void *sched_data,
-                 frsh_signal_t signal,
-                 frsh_signal_info_t siginfo,
+                 fosa_signal_t signal,
+                 fosa_signal_info_t siginfo,
                  fosa_ads_actions_t *actions,
                  struct timespec *current_time);
 
-static void frsh_callback_appsched_error
+static void fosa_callback_appsched_error
                 (void *sched_data,
-                 frsh_thread_id_t thread,
+                 fosa_thread_id_t thread,
                  fosa_ads_error_cause_t cause,
                  fosa_ads_actions_t *actions);
 
@@ -150,20 +148,20 @@ static void frsh_callback_appsched_error
 ///////////////////////////////////////////////////////
 
 static fosa_ads_scheduler_ops_t scheduler_ops = {
-    .init = frsh_callback_init,
-    .new_thread = frsh_callback_new_thread,
-    .thread_terminate = frsh_callback_thread_terminate,
-    .thread_ready = frsh_callback_thread_ready,
-    .thread_block = frsh_callback_thread_block,
-    .change_sched_param_thread = frsh_callback_change_sched_param_thread,
-    .explicit_call_with_data = frsh_callback_explicit_call_with_data,
-    .notification_for_thread = frsh_callback_notification_for_thread,
-    .timeout = frsh_callback_timeout,
-    .signal = frsh_callback_signal,
-    .appsched_error = frsh_callback_appsched_error,
+    .init = fosa_callback_init,
+    .new_thread = fosa_callback_new_thread,
+    .thread_terminate = fosa_callback_thread_terminate,
+    .thread_ready = fosa_callback_thread_ready,
+    .thread_block = fosa_callback_thread_block,
+    .change_sched_param_thread = fosa_callback_change_sched_param_thread,
+    .explicit_call_with_data = fosa_callback_explicit_call_with_data,
+    .notification_for_thread = fosa_callback_notification_for_thread,
+    .timeout = fosa_callback_timeout,
+    .signal = fosa_callback_signal,
+    .appsched_error = fosa_callback_appsched_error,
 };
 
-static frsh_mutex_t lock;
+static fosa_mutex_t lock;
 
 const unsigned int MX_INIT_ARGS_STRING = 30;
 const unsigned int MX_PRIO = 20;
@@ -173,7 +171,7 @@ const unsigned int MX_PRIO = 20;
 typedef struct {
     fosa_ads_urgency_t array_prio[MX_THREADS];
     int array_status[MX_THREADS];
-} frsh_sched_data_t;
+} fosa_sched_data_t;
 
 typedef struct {
     fosa_ads_urgency_t prio;
@@ -186,7 +184,7 @@ typedef enum {
 } command_t;
 
 typedef struct {
-    frsh_thread_id_t thread_id;
+    fosa_thread_id_t thread_id;
     command_t command;
 } signal_action_t;
 
@@ -198,16 +196,15 @@ int main () {
 
     int err;
     char init_args_string[MX_INIT_ARGS_STRING + 1];
-    frsh_thread_id_t tid1, tid2, tid3;
-    frsh_thread_attr_t th_attr;
+    fosa_thread_id_t tid1, tid2, tid3;
+    fosa_thread_attr_t th_attr;
     bool is_appsched;
     appsched_params_t params;
-    frsh_signal_info_t timer_info;
+    fosa_signal_info_t timer_info;
     fosa_timer_id_t timerid;
     struct timespec timerval;
     signal_action_t signal_action;
 
-    adjust(); // for function eat
 
     err = fosa_thread_set_prio (fosa_thread_self(), MX_PRIO + 1);
     printf("set main to highest priority, err=%d\n", err);
@@ -229,7 +226,7 @@ int main () {
 
     err = fosa_ads_scheduler_create
             (&scheduler_ops,
-             sizeof(frsh_sched_data_t),
+             sizeof(fosa_sched_data_t),
              init_args_string, // INIT IS CALLED INMEDIATELY??!!!
              strlen(init_args_string) + 1);
     printf("scheduler created, err=%d\n", err);
@@ -242,11 +239,11 @@ int main () {
     printf("--------------------------------------------------\n");
     printf("2b) Create two application scheduled threads\n");
 
-    err = frsh_thread_attr_init(&th_attr);
+    err = fosa_thread_attr_init(&th_attr);
     printf("thread attributes object initialized, err=%d\n", err);
     assert(err == 0);
 
-    err = frsh_thread_attr_set_stacksize(&th_attr,40000);
+    err = fosa_thread_attr_set_stacksize(&th_attr,40000);
     printf("thread attr set stack size to 40000, err=%d\n", err);
     assert(err == 0);
 
@@ -289,7 +286,7 @@ int main () {
     printf("created thread 3 (rejected=%d), err=%d\n",
             (err == FOSA_EREJECT), err);
 
-    err = frsh_thread_attr_destroy(&th_attr);
+    err = fosa_thread_attr_destroy(&th_attr);
     printf("thread attributes object destroyed, err=%d\n",err);
     assert(err == 0);
 
@@ -393,6 +390,7 @@ static void *thread_code (void * arg)
     char whoami[] = "who am i?";
     int reply;
     size_t reply_size;
+    struct timespec one_second = {1, 0};
 
     printf("THREAD %d - starts\n", (int)arg);
     for (i=1;i<50;i++) {
@@ -402,7 +400,7 @@ static void *thread_code (void * arg)
         err=fosa_mutex_lock(&lock);
         assert(err == 0);
 
-        eat (1.0);
+        fosa_eat (&one_second);
 
         printf("THREAD %d - unlocking mutex\n", (int)arg);
         err=fosa_mutex_unlock(&lock);
@@ -425,12 +423,12 @@ static void *thread_code (void * arg)
 ///////////////////////////////////////////////////////
 // 4) Implementation of Application Defined Callbacks
 ///////////////////////////////////////////////////////
-static void frsh_callback_init
+static void fosa_callback_init
         (void *sched_data, void *arg)
 {
-    frsh_sched_data_t *frsh = (frsh_sched_data_t *)sched_data;
+    fosa_sched_data_t *frsh = (fosa_sched_data_t *)sched_data;
     int i, err;
-    frsh_signal_t sched_signal = FOSA_SIGNAL_MAX; // HOW TO PUT SIGNALS IF IS OPAQUE??
+    fosa_signal_t sched_signal = FOSA_SIGNAL_MAX; // HOW TO PUT SIGNALS IF IS OPAQUE??
 
     printf ("BEGIN CALLBACK: %s \n", __func__);
     printf ("init args string received: %s \n", (char *)arg);
@@ -446,15 +444,15 @@ static void frsh_callback_init
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_new_thread
+static void fosa_callback_new_thread
         (void *sched_data,
-         frsh_thread_id_t thread,
+         fosa_thread_id_t thread,
          fosa_ads_actions_t *actions,
          struct timespec *current_time)
 {
     int err;
     unsigned int i, index;
-    frsh_sched_data_t *frsh = (frsh_sched_data_t *)sched_data;
+    fosa_sched_data_t *frsh = (fosa_sched_data_t *)sched_data;
     appsched_params_t params;
     size_t size;
 
@@ -483,9 +481,9 @@ static void frsh_callback_new_thread
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_thread_terminate
+static void fosa_callback_thread_terminate
         (void *sched_data,
-         frsh_thread_id_t thread,
+         fosa_thread_id_t thread,
          fosa_ads_actions_t *actions,
          struct timespec *current_time)
 {
@@ -504,9 +502,9 @@ static void frsh_callback_thread_terminate
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_thread_ready
+static void fosa_callback_thread_ready
         (void *sched_data,
-         frsh_thread_id_t thread,
+         fosa_thread_id_t thread,
          fosa_ads_actions_t *actions,
          struct timespec *current_time)
 {
@@ -514,9 +512,9 @@ static void frsh_callback_thread_ready
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_thread_block
+static void fosa_callback_thread_block
         (void *sched_data,
-         frsh_thread_id_t thread,
+         fosa_thread_id_t thread,
          fosa_ads_actions_t *actions,
          struct timespec *current_time)
 {
@@ -535,9 +533,9 @@ static void frsh_callback_thread_block
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_change_sched_param_thread
+static void fosa_callback_change_sched_param_thread
         (void *sched_data,
-         frsh_thread_id_t thread,
+         fosa_thread_id_t thread,
          fosa_ads_actions_t *actions,
          struct timespec *current_time)
 {
@@ -546,9 +544,9 @@ static void frsh_callback_change_sched_param_thread
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_explicit_call_with_data
+static void fosa_callback_explicit_call_with_data
         (void *sched_data,
-         frsh_thread_id_t thread,
+         fosa_thread_id_t thread,
          const void * msg,
          size_t msg_size,
          void *reply,
@@ -563,9 +561,9 @@ static void frsh_callback_explicit_call_with_data
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_notification_for_thread
+static void fosa_callback_notification_for_thread
         (void *sched_data,
-         frsh_thread_id_t thread,
+         fosa_thread_id_t thread,
          fosa_clock_id_t clock,
          fosa_ads_actions_t *actions,
          struct timespec *current_time)
@@ -574,7 +572,7 @@ static void frsh_callback_notification_for_thread
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_timeout // WHY NOT WATCHDOG????
+static void fosa_callback_timeout // WHY NOT WATCHDOG????
         (void *sched_data,
          fosa_ads_actions_t *actions,
          struct timespec *current_time) // WHY IS IN OUT and not IN???
@@ -585,16 +583,16 @@ static void frsh_callback_timeout // WHY NOT WATCHDOG????
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_signal
+static void fosa_callback_signal
         (void *sched_data,
-         frsh_signal_t signal,
-         frsh_signal_info_t siginfo, // HOW DO I KNOW THE ORIGIN (see signal_info type)
+         fosa_signal_t signal,
+         fosa_signal_info_t siginfo, // HOW DO I KNOW THE ORIGIN (see signal_info type)
          fosa_ads_actions_t *actions,
          struct timespec *current_time)
 {
     int err;
     signal_action_t *signal_action = (signal_action_t *)siginfo.sival_ptr;
-    frsh_sched_data_t *frsh = (frsh_sched_data_t *)sched_data;
+    fosa_sched_data_t *frsh = (fosa_sched_data_t *)sched_data;
 
     printf ("BEGIN CALLBACK: %s \n", __func__);
 
@@ -613,15 +611,16 @@ static void frsh_callback_signal
         case CAUSE_ERROR:
             // cause an error by overwriting actions with 666 ;D
             *(int *)actions = 666;
+            err = 666;
             printf("causing an error, err=%d\n", err);
             break;
     }
     printf ("END CALLBACK: %s \n", __func__);
 }
 
-static void frsh_callback_appsched_error
+static void fosa_callback_appsched_error
         (void *sched_data,
-         frsh_thread_id_t thread,
+         fosa_thread_id_t thread,
          fosa_ads_error_cause_t cause,
          fosa_ads_actions_t *actions)
 {