#ifndef _FRSH_OPAQUE_TYPES_H_
#define _FRSH_OPAQUE_TYPES_H_
-#include <signal.h>
+
+/**
+ * @file frsh_opaque_types.h
+ **/
/**
* @defgroup opaque Opaque types
**/
/** frsh_contract_parameters_t **/
-#define FRSH_CONTRACT_PARAMETERS_T_OPAQUE struct { \
+#define FRSH_CONTRACT_T_OPAQUE struct { \
\
/** Processor Id or Network Id **/ \
- int resource_id; \
+ frsh_resource_id_t resource_id; \
\
/** Whether processor or network **/ \
- frsh_contract_resource_type resource_type; \
+ frsh_resource_type_t resource_type; \
\
/** Printable name for the contract
Unique within the local node **/ \
- frsh_contract_id_t contract_id; \
+ frsh_contract_label_t contract_label; \
\
- /** Minimum budget needed to perform a job **/ \
+ /** Minimum budget needed to perform a job. With the energy
+ module this will be an array **/ \
struct timespec budget_min; \
\
/** Maximum period that the system system can sustain **/ \
struct timespec period_max; \
\
- /** Maximum budget that the server can use
- (and would be happy to have) **/ \
+ /** Maximum budget that the vres can use
+ (and would be happy to have). With the energy module
+ this will be an array **/ \
struct timespec budget_max; \
\
/** Minimum period for that
the system can use (and would be happy to have) **/ \
struct timespec period_min; \
+\
+ /** Set of discrete values for budget and period. With the
+ energy module this will be an array **/ \
+ frsh_utilization_set_t utilization_set; \
\
/** Workload_type: bounded, indeterminate, overhead **/ \
frsh_workload_t workload; \
/** Deadline (will be ignored if d_equals_t is TRUE **/ \
struct timespec deadline; \
\
- /** POSIX signal parameters for the case of
+ /** Signal parameters for the case of
attempting to use too much budget **/ \
- int budget_overrun_sig_notify; \
- union sigval budget_overrun_sig_value; \
+ frsh_signal_t budget_overrun_signal; \
+ frsh_signal_info_t budget_overrun_siginfo; \
\
- /** POSIX signal parameters for the case a deadline
+ /** Signal parameters for the case a deadline
is missed **/ \
- int deadline_miss_sig_notify; \
- union sigval deadline_miss_sig_value; \
+ frsh_signal_t deadline_miss_signal; \
+ frsh_signal_info_t deadline_miss_siginfo; \
\
/** Wether the range of period and budget is specified
in a continuous way (max-min) or as a set of
discrete values **/ \
frsh_granularity_t granularity; \
-\
- /** Set of discrete values for budget and period **/ \
- frsh_utilization_set_t utilization_set; \
\
/** Non-cooperative parameter for fair capacity
distribution **/ \
the allocated budget and capacity will be
maintained across negotiations and will
not be affected for dynamic spare capacity **/ \
- struct timespec remaining_stability_time; \
+ struct timespec stability_time; \
\
/** Low level parameter related with the elegibility
preempt other threads **/ \
frsh_preemption_level_t preemption_level; \
\
- /** Set of critical sections that the server executes
+ /** Set of critical sections that the vres executes
besides the normal budget **/ \
- frsh_critical_sections_t critical_sections; \
+ frsh_csects_group_t critical_sections; \
\
- /** Internal scheduling policy within the server for
+ /** Internal scheduling policy within the vres for
hierarchical scheduling systems **/ \
frsh_sched_policy_t policy; \
+\
+ /** Protocol info for distributed systems. We store it
+ as a pointer+size. It's internal meaning is imple-
+ mentation dependent. **/ \
+ frsh_protocol_info_t protocol_info; \
+ frsh_endpoint_queueing_info_t queueing_info; \
+\
+ /** Maximum loss rate
+ Percentage of packet loss in the network that is
+ tolerated by the application **/ \
+int max_loss_rate; \
+\
+ /** Minimum memory size to be reserved **/ \
+size_t minimum_memory; \
+\
+/** Maximum memory size to be reserved **/ \
+size_t maximum_memory; \
}
-#define FRSH_SYNCH_OBJ_HANDLE_T_OPAQUE int
+typedef int FRSH_SYNCHOBJ_HANDLE_T_OPAQUE;
+
+typedef int FRSH_SHAREDOBJ_HANDLE_T_OPAQUE;
-#define FRSH_SHARED_OBJ_HANDLE_T_OPAQUE int
+/**
+ * Critical section data
+ * - comon parameters
+ * op_kind; // kind of operation (READ or WRITE)
+ * obj_handle; // handle to shared object
+ * wcet; // Execution time
+ * blocking; // Blocking time (execution time + protection overheads)
+ * - attributes used only for protected shared objects
+ * op; // pointer to the operation
+ * - attributes used only for protected write operations
+ * areas; // memory areas to be protected
+ *
+ **/
+#define FRSH_CSECT_T_OPAQUE struct { \
+ frsh_csect_op_kind_t op_kind; \
+ frsh_sharedobj_handle_t obj_handle; \
+ struct timespec wcet; \
+ struct timespec blocking; \
+ frsh_csect_op_t op; \
+ frsh_memory_areas_t areas; \
+ frsh_memory_areas_t storage; \
+}
//opaque types for frsh endpoints
-#define FRSH_SEND_ENDPOINT_T_OPAQUE int
+typedef int FRSH_SEND_ENDPOINT_T_OPAQUE;
-#define FRSH_RECEIVE_ENDPOINT_T_OPAQUE int
+typedef int FRSH_RECEIVE_ENDPOINT_T_OPAQUE;
/*@}*/