// -----------------------------------------------------------------------
-// Copyright (C) 2006 - 2007 FRESCOR consortium partners:
+// Copyright (C) 2006 - 2008 FRESCOR consortium partners:
//
// Universidad de Cantabria, SPAIN
// University of York, UK
// 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
//
//
// 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
// 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 API is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2, or (at your option)
-// any later version.
+// This file is part of FRSH (FRescor ScHeduler)
//
-// FRSH API is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
+// FRSH is free software; you can redistribute it and/or modify it
+// under terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option) any
+// later version. FRSH is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details. You should have received a
+// copy of the GNU General Public License along with FRSH; see file
+// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
+// Cambridge, MA 02139, USA.
//
-// You should have received a copy of the GNU General Public License
-// distributed with FRSH API; see file COPYING. If not, write to the
-// Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-// 02111-1307, USA.
-//
-// As a special exception, if you include this header file into source
-// files to be compiled, this header file does not by itself cause
-// the resulting executable to be covered by the GNU General Public
-// License. This exception does not however invalidate any other
-// reasons why the executable file might be covered by the GNU General
-// Public License.
+// As a special exception, including FRSH header files in a file,
+// instantiating FRSH generics or templates, or linking other files
+// with FRSH objects to produce an executable application, does not
+// by itself cause the resulting executable application to be covered
+// by the GNU General Public License. This exception does not
+// however invalidate any other reasons why the executable file might be
+// covered by the GNU Public License.
// -----------------------------------------------------------------------
//frsh_implementation_specific.h
//==============================================
-// ******** ******* ******** ** **
-// **///// /**////** **////// /** /**
-// ** /** /** /** /** /**
-// ******* /******* /*********/**********
-// **//// /**///** ////////**/**//////**
-// ** /** //** /**/** /**
-// ** /** //** ******** /** /**
-// // // // //////// // //
+// ******** ******* ******** ** **
+// **///// /**////** **////// /** /**
+// ** /** /** /** /** /**
+// ******* /******* /********* /**********
+// **//// /**///** ////////** /**//////**
+// ** /** //** /** /** /**
+// ** /** //** ******** /** /**
+// // // // //////// // //
//
// FRSH(FRescor ScHeduler), pronounced "fresh"
//==============================================
#define FRSH_IMPLEMENTATION_SPECIFIC_MODULE_SUPPORTED 1
+FRSH_CPP_BEGIN_DECLS
+
/**
* @file frsh_implementation_specific.h
*
/**
* @defgroup implementationspec Implementation Specific module
*
- * The operations defined in this module are of optional use. They
- * only work in the fixed priority implementation, and they may be
- * used to enhance the behavior of the applications running under the
- * frsh scheduler.
+ * The operations defined in this module are of optional use. The
+ * intention is to provide better tunning options taking advantage of
+ * specific characteristics of the underlaying OS.
+ *
+ *
+ * e.g. being able to manually assign priorities assuming that the OS
+ * uses a fixed priority paradigm).
*
* @{
**/
/**
- * frsh_set_contract_preemption_level()
+ * frsh_contract_set_preemption_level()
*
* The operation updates the specified contract parameters object by
* setting its preemption level to the specified input parameter.
* and probably wrong.
*
**/
-int frsh_set_contract_preemption_level
- (frsh_contract_parameters_t *contract,
+int frsh_contract_set_preemption_level
+ (frsh_contract_t *contract,
frsh_preemption_level_t preemption_level);
/**
- * frsh_get_contract_preemption_level()
+ * frsh_contract_get_preemption_level()
*
* The operation obtains from the specified contract parameters object
* its preemption level and copies it to the place pointed to by the
* specified input parameter.
**/
-int frsh_get_contract_preemption_level
- (const frsh_contract_parameters_t *contract,
+int frsh_contract_get_preemption_level
+ (const frsh_contract_t *contract,
frsh_preemption_level_t *preemption_level);
/**
- * frsh_set_service_thread_preemption_level()
+ * frsh_service_thread_set_preemption_level()
*
* This function sets the preemption level of the service thread to
* the specified value. The initial preemption level is a configurable
* parameter. This value is stored in a temporary variable and it is
* used the next time the service thread data is updated with the
- * frsh_set_service_thread_data() function.
+ * frsh_service_thread_set_data() function.
**/
-int frsh_set_service_thread_preemption_level
+int frsh_service_thread_set_preemption_level
(frsh_preemption_level_t preemption_level);
/**
- * frsh_get_service_thread_preemption_level()
+ * frsh_service_thread_get_preemption_level()
*
* This function stores the current preemption level of the service
* thread in the variable pointed to by preemption_level
**/
-int frsh_get_service_thread_preemption_level
+int frsh_service_thread_get_preemption_level
(frsh_preemption_level_t *preemption_level);
*
* This operation shall terminate the calling thread, make the value
* value_ptr available to any successful join with the terminating
- * thread, and unbind the thread from its associated server. After
+ * thread, and unbind the thread from its associated vres. After
* cleaning up the thread management data, it is unbound and the
* scheduling policy is changed to fixed priority before the posix
* pthread_exit() function is called.
- *
+ *
* There is a limitation in the current version of the
* MaRTE implementation that causes the information of a terminated
* thread to continue to be stored in the frsh scheduler, and the thread
* application scheduler, after cleaning up the thread management
* data, it is unbound and the scheduling policy changed to fixed
* priority before calling the posix pthread_exit() function.
+ *
+ * NOTE: This function, together with the internal function
+ * frsh_internal_remove_thread() has been removed from FRSH
+ * because it shouldn't be necessary.
+ *
+ * If there are some problems with MaRTE in thread termination
+ * it should be fixed in the OS and not here.
+ *
+ * The function does not do anything special that is not done in the
+ * terminate callback of the FRSH scheduler.
+ *
+ * If you want to be curious about what the function did, look at the
+ * SVN repository (revision 273) or one of the past branches.
**/
void frsh_thread_exit (void *value_ptr);
/**
- * frsh_set_shared_obj_preemption_level()
+ * frsh_sharedobj_set_preemption_level()
*
* The operation updates the specified shared object by setting its
* preemption level to the specified input parameter.
* particularly the acceptance tests correctness are not garantee
* and probably wrong.
**/
-int frsh_set_shared_obj_preemption_level(frsh_shared_obj_handle_t obj_handle,
+int frsh_sharedobj_set_preemption_level(frsh_sharedobj_handle_t obj_handle,
frsh_preemption_level_t preemption_level);
/**
- * frsh_get_shared_obj_preemption_level()
+ * frsh_sharedobj_get_preemption_level()
*
* The operation obtains from the specified shared object its
* preemption level and copies it to the place pointed to by the
* specified input parameter.
**/
-int frsh_get_shared_obj_preemption_level(frsh_shared_obj_handle_t obj_handle,
+int frsh_sharedobj_get_preemption_level(frsh_sharedobj_handle_t obj_handle,
frsh_preemption_level_t *preemption_level);
/*@}*/
+FRSH_CPP_END_DECLS
#endif // _FRSH_IMPLEMENTATION_SPECIFIC_H_