int fosa_adsactions_add_activate(fosa_ads_actions_t *sched_actions,
frsh_thread_id_t thread,
fosa_ads_urgency_t urgency){
- RTL_PRIO(&thread)=set_urgency(urgency, (&thread));
- return posix_appsched_actions_addactivate(sched_actions, thread);
+ RTL_PRIO(thread)=set_urgency(thread, urgency);
+ return posix_appsched_actions_addactivate(sched_actions, thread);
}
int fosa_adsactions_add_suspend(fosa_ads_actions_t *sched_actions,
return posix_appsched_actions_addsuspend (sched_actions, thread);
}
-
+extern timer_t fosa_timeout_timer; // defined in rtl_fosa.c
int fosa_adsactions_add_timeout(fosa_ads_actions_t *sched_actions,
fosa_clock_id_t clock_id,
const struct timespec *at_time){
struct sigevent signal;
+ struct itimerspec at_itimer= (struct itimerspec)
+ {.it_interval=(struct timespec){0,0},
+ .it_value=*at_time};
+
if (fosa_timeout_timer)
return EINVAL;
signal.sigev_signo=0;
signal.sigev_notify=SIGEV_NONE;
- timer_create(clock_id, signal, &fosa_timeout_timer);
- timer_settime(fosa_timeout_timer, int flags, at_time, 0);
+ timer_create(clock_id, &signal, &fosa_timeout_timer);
+ timer_settime(fosa_timeout_timer, 0, &at_itimer, 0);
+ return 0;
}
fosa_clock_id_t clock_id,
const struct timespec *at_time){
struct sigevent signal;
+ struct itimerspec at_itimer= (struct itimerspec)
+ {.it_interval=(struct timespec){0,0},
+ .it_value=*at_time};
+
if (fosa_timeout_timer)
return EINVAL;
signal.sigev_signo=(int)thread;
signal.sigev_notify=SIGEV_NONE;
- timer_create(clock_id, signal, &fosa_timeout_timer);
- timer_settime(fosa_timeout_timer, int flags, at_time, 0);
+ timer_create(clock_id, &signal, &fosa_timeout_timer);
+ timer_settime(fosa_timeout_timer, 0, &at_itimer, 0);
+ return 0;
}
+extern rtl_sigset_t fosa_scheduler_signal_bitmap; // as declared in rtl_fosa.c
int fosa_ads_set_handled_signal_set(frsh_signal_t set[], int size){
int x;
rtl_sigemptyset(&fosa_scheduler_signal_bitmap);
for (x=0; x<size; x++)
- rtl_sigaddset(&fosa_scheduler_signal_bitmap, set[x]);
+ rtl_sigaddset(&fosa_scheduler_signal_bitmap, set[x]);
+ return 0;
}
int fosa_ads_invoke_withdata (const void *msg, size_t msg_size,
void *reply, size_t *reply_size){
- posix_appsched_invoke_withdata(msg, msg_size, reply, reply_size);
+ return posix_appsched_invoke_withdata((void *)msg, msg_size, reply, reply_size);
}