]> rtime.felk.cvut.cz Git - frescor/frsh-include.git/blobdiff - frsh_configuration_parameters.h
Uploading protected shared objects functionality
[frescor/frsh-include.git] / frsh_configuration_parameters.h
index 4506b4c2e6f00df817b2530d865a27b5295081c4..3348397fa042211e8b3955c754bd19cce5efe885 100644 (file)
@@ -1,10 +1,34 @@
 // -----------------------------------------------------------------------
+//  Copyright (C) 2006 - 2007 FRESCOR consortium partners:
+//
+//    Universidad de Cantabria,              SPAIN
+//    University of York,                    UK
+//    Scuola Superiore Sant'Anna,            ITALY
+//    Kaiserslautern University,             GERMANY
+//    Univ. Politécnica  Valencia,           SPAIN
+//    Czech Technical University in Prague,  CZECH REPUBLIC
+//    ENEA                                   SWEDEN
+//    Thales Communication S.A.              FRANCE
+//    Visual Tools S.A.                      SPAIN
+//    Rapita Systems Ltd                     UK
+//    Evidence                               ITALY
+//
+//    See http://www.frescor.org for a link to partners' websites
+//
+//           FRESCOR project (FP6/2005/IST/5-034026) is funded
+//        in part by the European Union Sixth Framework Programme
+//        The European Union is not liable of any use that may be
+//        made of this code.
+//
+//
+//  based on previous work (FSF) done in the FIRST project
+//
 //   Copyright (C) 2005  Mälardalen University, SWEDEN
 //                       Scuola Superiore S.Anna, ITALY
 //                       Universidad de Cantabria, SPAIN
 //                       University of York, UK
 //
-//   FRSH API web pages: http://marte.unican.es/frsh/docs/
+//   FSF API web pages: http://marte.unican.es/fsf/docs
 //                      http://shark.sssup.it/contrib/first/docs/
 //
 //  This file is part of FRSH API
 // -----------------------------------------------------------------------
 //frsh_configuration_parameters.h
 //==============================================
-//  ******** *******    ******** **      **
-//  **///// /**////**  **////// /**     /**
-//  **      /**   /** /**       /**     /**
-//  ******* /*******  /*********/**********
-//  **////  /**///**  ////////**/**//////**
-//  **      /**  //**        /**/**     /**
-//  **      /**   //** ******** /**     /**
-//  //       //     // ////////  //      // 
+//  ******** *******    ********  **      **
+//  **///// /**////**  **//////  /**     /**
+//  **      /**   /** /**        /**     /**
+//  ******* /*******  /********* /**********
+//  **////  /**///**  ////////** /**//////**
+//  **      /**  //**        /** /**     /**
+//  **      /**   //** ********  /**     /**
+//  //       //     // ////////   //      //
 //
 // FRSH(FRescor ScHeduler), pronounced "fresh"
 //==============================================
 
 #include <unistd.h>
 
+/**
+ * @file frsh_configuration_parameters.h
+ *
+ * This file contains parameters that govern the capabilities of the
+ * FRescor ScHeduler.  They must be in concordance with the respective
+ * OS configuration.
+ **/
+
+
 /**
  * @defgroup config Configuration Parameters
  *
  **/
 #define FRSH_ADMISSION_TEST_IS_ENABLED        true
 
+/**
+ * This symbol specifies whether the service thread will try to
+ * assign automatically the priorities of each vres
+ **/
+#define FRSH_AUTOMATIC_PRIO_ASSIGN_ENABLE true
+
+#define FRSH_DISTRIBUTED_MODULE_SUPPORTED false
+
+
+/** This defines 1 resource_id value for systems that have only one
+    resource of a kind. **/
+#define FRSH_RESOURCE_ID_DEFAULT 0
+#define FRSH_CPU_ID_DEFAULT 1
+#define FRSH_NETWORK_ID_DEFAULT 0
 
 /**
- * @defgroup internal lists size for memory optimization
+ * @defgroup internal Array size for memory optimization
  * @ingroup config
  *
  * Tune these values for optimizing the amount of memory used by the
  * @{
  **/
 
-/** Maximum number of accepted contracts (servers) **/
-#define FRSH_MAX_N_SERVERS                    125 
+/** Maximum number of accepted contracts (vres) **/
+#define FRSH_MAX_N_VRES                    125
 
 
 /** Maximum number of threads that may be scheduled by the framework **/
  **/
 #define FRSH_MAX_N_CRITICAL_SECTIONS          25
 
+/**
+ * Maximum number of memory areas that can be specified for a
+ * wite operation in a critical section
+ **/
+#define FRSH_MAX_N_MEMORY_AREAS               4
 
 /**
  * Maximum number of utilization values (pairs of budget and period)
 /** Maximum number of shared objects **/
 #define FRSH_MAX_N_SHARED_OBJECTS             100
 
+/** Maximum number of send and receive endpoints in a single node **/
+#define FRSH_MAX_N_ENDPOINTS 10
+
 /*@}*/
 
 /**
  * operates under the rules of the FIRST scheduling framework.
  *
  * In this implementation there are two special threads:
- *   - The application scheduler thread, that 
+ *   - The application scheduler thread, that
  *     implements the scheduler
  *
- *   - The service thread, that is in charge of 
- *     negotiating and renegotiating contracts 
+ *   - The service thread, that is in charge of
+ *     negotiating and renegotiating contracts
  *     concurrently with the application
  *
  * The following symbols are necessary to adapt the application to the
  * thread, and it should be at least 1 level below the maximum of the
  *  system
  **/
-#define FRSH_SCHEDULER_PRIORITY               29   //104 
+#define FRSH_SCHEDULER_PRIORITY       (fosa_get_priority_max() -  FOSA_ADS_SCHEDULER_PRIO_DIFF)
 
 /**
  * Real-time signal number reserved for the application scheduler to
  * manage its timers.
  **/
-#define FRSH_SCHEDULER_SIGNAL                 SIGRTMIN
+#define FRSH_SCHEDULER_SIGNAL                 FRSH_SIGNAL_MIN
+
 
 
 /**
  * it should be defined as one level less than the
  * FRSH_SCHEDULER_PRIORITY
  **/
-#define FRSH_HIGHEST_THREAD_PRIORITY  FRSH_SCHEDULER_PRIORITY-1
+#define FRSH_HIGHEST_THREAD_PRIORITY  (FRSH_SCHEDULER_PRIORITY-1)
 
 
 /**
  * The lowest priority that can be assigned to an application thread,
  * it should be at least 1 level above the minimum of the system
  **/
-#define FRSH_LOWEST_THREAD_PRIORITY           3
+#define FRSH_LOWEST_THREAD_PRIORITY    ( fosa_get_priority_min() + 4)
 
 /**
  * Each call to the functions that negotiate or renegotiate a contract
  * following symbol represents the maximum number of requests that can
  * be simultaneously queued.
  **/
-#define FRSH_MAX_N_SERVICE_JOBS  FRSH_MAX_N_SERVERS * 2
+#define FRSH_MAX_N_SERVICE_JOBS  (FRSH_MAX_N_VRES * 2)
 
 
 /**
  **/
 
 /** Initial period of the service thread (timespec) **/
-#define FRSH_SERVICE_THREAD_PERIOD  {0,10000000}  //    0.01 seg   
-                                // {0,100000000}  //0.1 seg  
-                                // {0,10000000}   //3.1 0.01
+#define FRSH_SERVICE_THREAD_PERIOD  {5,0}
 
 /** Initial budget of the service thread (timespec) **/
-#define FRSH_SERVICE_THREAD_BUDGET  {0,1000000}   //     0.001 seg 
-                                // {0,10000000}   //0.01 seg 
-                                // {0,1000000}    //3.1 0.001 
-
+#define FRSH_SERVICE_THREAD_BUDGET  {0,1000000}
 
 /**
  * Initial priority of the service thread, it has to be lower than the
  * expected response times for reconfiguration or tunning of the
  * system.
  **/
-#define FRSH_SERVICE_THREAD_PRIORITY          FRSH_LOWEST_THREAD_PRIORITY+1 //3 3    //3 1
+#define FRSH_SERVICE_THREAD_PRIORITY          (FRSH_LOWEST_THREAD_PRIORITY+1) //3 3    //3 1
 
 
 /*@}*/
  **/
 
 /**
- * Maximum number of servers that can be simultaneusly waiting for
+ * Maximum number of vres that can be simultaneusly waiting for
  * being signaled in a synchronization object
  **/
-#define FRSH_MAX_N_SERVERS_IN_SYNCH_OBJECT    4
+#define FRSH_MAX_N_VRES_IN_SYNCH_OBJECT    4
 
 
 /**
  * Maximum number of events that can be pending to be signaled in a
  * synchronization object
  **/
-#define FRSH_MAX_N_EVENTS_IN_SYNCH_OBJECT    100  
+#define FRSH_MAX_N_EVENTS_IN_SYNCH_OBJECT    100
 
 /**
  * Maximum number of pending replenishments in each sporadic server
 #define FRSH_MAX_N_TARGET_WINDOWS             100
 
 /**
- * The cpu time given by the round robin scheduler 
+ * The cpu time given by the round robin scheduler
  * to the threads in the background (timespec)
  **/
 #define FRSH_RR_SLICE_CPU_TIME               {0,100000000}  //3  0.1 sec
 
 /**
  * This function must be supplied by the user to map the preemption
- * level values given in the contracts for the servers, to priority
+ * level values given in the contracts for the vres, to priority
  * values in the range that is allowed by the present implementation
  * for application threads. The value returned by the function must
  * fit in the interval defined by the constants:
@@ -255,19 +306,19 @@ int frsh_priority_map (unsigned long plevel);
 /**
  * This symbol specifies the maximum number of chars that are stored
  * of a given shared_object_id, so this is the maximum length used
- * in comparissons
+ * in comparisons
  **/
-#define FRSH_MAX_SIZE_SHARED_OBJ_ID           65
+#define FRSH_MAX_SIZE_SHARED_OBJ_LABEL           15
 
 
 /** Maximum number of networks accesible from a node **/
 #define FRSH_MAX_N_NETWORK_IDS                1
 
 /**
- * Maximum number of servers that can be given in a servers list
+ * Maximum number of vres that can be given in a vres list
  * to the group negotiation/cancellation primitive
  **/
-#define FRSH_MAX_N_SERVER_VALUES              10
+#define FRSH_MAX_N_VRES_VALUES              10
 
 /**
  * Maximum number of contracts that can be given in a contracts list
@@ -275,9 +326,30 @@ int frsh_priority_map (unsigned long plevel);
  **/
 #define FRSH_MAX_N_CONTRACT_VALUES              10
 
-/*@}*/ 
+/**
+ * Default overheads of shared object protection mechanisms
+ * These values should be calibrated on each specific execution platform
+ */
+
+// fixed overhead for saving the environment and subsequently
+// aborting a critical section; units in nanoseconds
+
+#define FRSH_SO_FIXED_ABORT_OVHD        0
+
+
+// fixed overhead for copying a memory area, in nanoseconds
 
-/*@}*/ 
+#define FRSH_SO_FIXED_AREA_OVHD         0
+
+
+// variable overhead for copying a memory area; units in nanoseconds per kbyte
+
+#define FRSH_SO_NANOS_PER_KB            0
+
+
+/*@}*/
+
+/*@}*/
 
 #endif /* _FRSH_CONFIGURATION_PARAMETERS_H_ */