/demos/trunk/loader/shark/func.h |
---|
2,10 → 2,18 |
#define __FUNC_H__ |
#include "kernel/kern.h" |
#include "fsf_contract.h" |
#include "fsf_server.h" |
#include "shark.h" |
#define OS_SHARK |
typedef struct { |
fsf_shared_object_t object; |
fsf_shared_operation_t operation; |
} mutex_object; |
#define get_current_exec_task() exec_shadow |
/* Return the PID/pthread_t of calling task */ |
84,15 → 92,15 |
/* Mutex */ |
extern __inline__ void generic_lock_mutex(int res) { |
extern mutex_t mutex_table[MAX_MUTEX]; |
extern mutex_object mutex_table[MAX_MUTEX]; |
mutex_lock(&mutex_table[res]); |
fsf_lock_object(&mutex_table[res].operation); |
} |
extern __inline__ void generic_unlock_mutex(int res) { |
extern mutex_t mutex_table[MAX_MUTEX]; |
extern mutex_object mutex_table[MAX_MUTEX]; |
mutex_unlock(&mutex_table[res]); |
fsf_unlock_object(&mutex_table[res].operation); |
} |
/* TASK RUNTIME FUNCTIONS */ |
/demos/trunk/loader/shark/fsfinit.c |
---|
1,6 → 1,6 |
#include "kernel/kern.h" |
#include "fsf_contract.h" |
#include "fsf_server.h" |
#include "fsf_contract.h" |
#include "func.h" |
extern struct loader_contract loader_contract_list[]; |
/demos/trunk/loader/shark/shark.c |
---|
12,7 → 12,7 |
extern int total_loader_task; |
extern int total_loader_contract; |
mutex_t mutex_table[MAX_MUTEX]; |
mutex_object mutex_table[MAX_MUTEX]; |
int main_chunk; |
/* Runtime Calibration */ |
169,14 → 169,12 |
/* Set the zero_time and post the first activation event */ |
void start_simulation() { |
int i; |
int i, object; |
struct loader_task *l = loader_task_list; |
struct timespec end_time; |
PI_mutexattr_t a; |
PI_mutexattr_default(a); |
i = 0; |
object = 0; |
#ifdef __NEW_TRACER__ |
195,7 → 193,13 |
while (i < total_loader_task) { |
if (l->muxstatus == 1) { |
mutex_init(&mutex_table[l->resource],&a); |
fsf_init_shared_object(&(mutex_table[l->resource]).object,object); |
mutex_table[l->resource].operation.op_id=1; |
mutex_table[l->resource].operation.wcet.tv_sec=l->block[i].tv_sec; |
mutex_table[l->resource].operation.wcet.tv_nsec=l->block[i].tv_nsec; |
fsf_declare_shared_object_operation(&mutex_table[l->resource].object, |
&mutex_table[l->resource].object); |
l->muxstatus = 2; |
} |