Subversion Repositories shark

Rev

Rev 221 | Blame | Compare with Previous | Last modification | View Log | RSS feed

//=======================================================================
//       FFFFFFIII   RRRRR      SSTTTTTTT
//      FF         IIR   RR    SS
//     FF           IR        SS
//    FFFFFF         RRRR    SSSSST      
//   FF       FI       RRR  SS
//  FF         II     RRR  SS
// FF           IIIIIR    RS
//
// Basic FSF(FIRST Scheduling Framework) contract management opaque types
// S.Ha.R.K. Implementation
//=======================================================================
// Implementation dependent definitions

#ifndef _FSF_OPAQUE_TYPES_H_
#define _FSF_OPAQUE_TYPES_H_

#include <kernel/iqueue.h>

#define FSF_CONTRACT_PARAMETERS_T_OPAQUE struct {     \
                                                      \
  struct timespec         budget_min;                 \
  struct timespec         period_max;                 \
  struct timespec         budget_max;                 \
  struct timespec         period_min;                 \
  fsf_workload_t          workload;                   \
                                                      \
  fsf_scheduler_id_t      local_scheduler_id;         \
                                                      \
  bool                    d_equals_t;                 \
  struct timespec         deadline;                   \
  int                     budget_overrun_sig_notify;  \
  union sigval            budget_overrun_sig_value;   \
  int                     deadline_miss_sig_notify;   \
  union sigval            deadline_miss_sig_value;    \
                                                      \
  fsf_granularity_t       granularity;                \
  fsf_utilization_set_t   utilization_set;            \
  int                     quality;                    \
  int                     importance;                 \
                                                      \
  fsf_preemption_level_t  preemption_level;           \
  fsf_critical_sections_t critical_sections;          \
  fsf_shared_operations_t shared_operations;          \
                                                      \
}                                                    


//Default values for fsf_contract_parameters_t:
//  budget_min                  => {0,0};                              
//  period_max                  => {0,0};                              
//  budget_max                  => {0,0};                              
//  period_min                  => {0,0};                              
//  workload                    => DEFAULT_WORKLOAD;                  
                                                         
//  d_equals_t                  => DEFAULT_D_EQUALS_T; (false or true)
//  deadline                    => DEFAULT_DEADLINE;                    
//  budget_overrun_sig_notify   => 0;                  (signal number)
//  budget_overrun_sig_value    => {0, NULL};
//  deadline_miss_sig_notify    => 0;                  (signal number)
//  deadline_miss_sig_value     => {0, NULL};
//                                                        
//  granularity                 => DEFAULT_GRANULARITY;              
//  utilization_set;            => size = 0                        
//  quality                     => DEFAULT_QUALITY;     (range 0..100)
//  importance                  => DEFAULT_IMPORTANCE;    (range 1..5)
//                                                        
//  preemption_level            => 0;               (range 1..2**32-1)
//  critical_sections;          => size = 0                        


#define FSF_SYNCH_OBJECT_HANDLE_T_OPAQUE struct { \
  IQUEUE             threads;                     \
  int                events;                      \
}                                                


#endif // _FSF_OPAQUE_TYPES_H_