// FOSA(Frescor Operating System Adaptation layer)
//================================================
-
-// MISSED: HEADERS
+#include <fosa.h>
+#include <rtl.h>
+//#include <rtl_sched.h>
+#include <rtl_malloc.h>
/********************************
* Application-defined scheduling
size_t scheduler_data_size,
void * init_args,
size_t init_args_size){
-
+ struct sched_param sched_param;
pthread_attr_t attr;
int ret;
int fosa_thread_attr_set_appsched_params (frsh_thread_attr_t *attr,
const void *param,
- int paramsize){
- return pthread_attr_setappschedparam(attr, param, paramsize);
+ size_t paramsize){
+ return pthread_attr_setappschedparam(attr, (void *)param, paramsize);
}
int fosa_thread_attr_get_appsched_params (const frsh_thread_attr_t *attr,
void *param,
size_t *paramsize){
- return pthread_attr_getappschedparam(attr, param, paramsize);
+ return pthread_attr_getappschedparam((frsh_thread_attr_t *)attr, param, paramsize);
}
int fosa_ads_set_appscheduled (frsh_thread_id_t thread,
int fosa_ads_set_appschedparam (frsh_thread_id_t thread,
const void *param,
size_t paramsize){
- return (!pthread_setappschedparam(thread, param, paramsize))?0:EINVAL;
+ return (!pthread_setappschedparam(thread, (void *)param, paramsize))?0:EINVAL;
}
int fosa_ads_get_appsched_params (frsh_thread_id_t thread,
- void *param,
- int *paramsize){
+ void *param,
+ size_t *paramsize){
return (!pthread_getappschedparam(thread, param, paramsize))?0:EINVAL;
}
int fosa_adsactions_add_reject(fosa_ads_actions_t *sched_actions,
frsh_thread_id_t thread){
- return posix_appsched_actions_addreject(sched_actions, thread);
+ return posix_appsched_actions_addreject(sched_actions, thread);
}
int fosa_adsactions_add_activate(fosa_ads_actions_t *sched_actions,
return EINVAL;
}
-int fosa_thread_attr_get_prio (const frsh_thread_attr_t *attr, size_t *prio){
+int fosa_thread_attr_get_prio (const frsh_thread_attr_t *attr, int *prio){
*prio = attr->sched_param.sched_priority;
return 0;
}
frsh_thread_id_t receiver){
union sigval value;
- value.sival_ptr=info.area;
- return sigqueue(receiver, signal, value);
+ value.sival_ptr=info.sival_ptr;
+ return sigqueue(0, signal, value);
}
int fosa_signal_queue_scheduler(frsh_signal_t signal, frsh_signal_info_t info) {
union posix_appsched_eventinfo eventinfo;
eventinfo.sig.signo=signal;
- eventinfo.sig.siginfo=info;
+ eventinfo.sig.siginfo= (siginfo_t){info.sival_int};
generate_event(pthread_self(), fosa_scheduler_thread,
POSIX_APPSCHED_SIGNAL, &eventinfo,
sizeof(union posix_appsched_eventinfo));
+ return 0;
}
int fosa_signal_wait (frsh_signal_t set[], int size, frsh_signal_t *signal_received,