1 // -----------------------------------------------------------------------
2 // Copyright (C) 2006 - 2008 FRESCOR consortium partners:
4 // Universidad de Cantabria, SPAIN
5 // University of York, UK
6 // Scuola Superiore Sant'Anna, ITALY
7 // Kaiserslautern University, GERMANY
8 // Univ. Politécnica Valencia, SPAIN
9 // Czech Technical University in Prague, CZECH REPUBLIC
11 // Thales Communication S.A. FRANCE
12 // Visual Tools S.A. SPAIN
13 // Rapita Systems Ltd UK
16 // See http://www.frescor.org for a link to partners' websites
18 // FRESCOR project (FP6/2005/IST/5-034026) is funded
19 // in part by the European Union Sixth Framework Programme
20 // The European Union is not liable of any use that may be
24 // based on previous work (FSF) done in the FIRST project
26 // Copyright (C) 2005 Mälardalen University, SWEDEN
27 // Scuola Superiore S.Anna, ITALY
28 // Universidad de Cantabria, SPAIN
29 // University of York, UK
31 // FSF API web pages: http://marte.unican.es/fsf/docs
32 // http://shark.sssup.it/contrib/first/docs/
34 // This file is part of FRSH (FRescor ScHeduler)
36 // FRSH is free software; you can redistribute it and/or modify it
37 // under terms of the GNU General Public License as published by the
38 // Free Software Foundation; either version 2, or (at your option) any
39 // later version. FRSH is distributed in the hope that it will be
40 // useful, but WITHOUT ANY WARRANTY; without even the implied warranty
41 // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
42 // General Public License for more details. You should have received a
43 // copy of the GNU General Public License along with FRSH; see file
44 // COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
45 // Cambridge, MA 02139, USA.
47 // As a special exception, including FRSH header files in a file,
48 // instantiating FRSH generics or templates, or linking other files
49 // with FRSH objects to produce an executable application, does not
50 // by itself cause the resulting executable application to be covered
51 // by the GNU General Public License. This exception does not
52 // however invalidate any other reasons why the executable file might be
53 // covered by the GNU Public License.
54 // -----------------------------------------------------------------------
55 //frsh_memory_management.h
57 //==============================================
58 // ******** ******* ******** ** **
59 // **///// /**////** **////// /** /**
60 // ** /** /** /** /** /**
61 // ******* /******* /********* /**********
62 // **//// /**///** ////////** /**//////**
63 // ** /** //** /** /** /**
64 // ** /** //** ******** /** /**
65 // // // // //////// // //
67 // FRSH(FRescor ScHeduler), pronounced "fresh"
68 //==============================================
70 #ifndef _FRSH_MEMORY_MANAGEMENT_H_
71 #define _FRSH_MEMORY_MANAGEMENT_H_
73 #include "frsh_core_types.h"
76 #define FRSH_MEMORY_MANAGEMENT_SUPPORTED 1
81 * @file frsh_memory_management.h
85 * @defgroup memmanagement Memory Management
87 * This module provides the types and the functions to add memory
88 * management support to FRSH contracts.
95 * frsh_contract_set_min_memory()
97 * This function specifies in the contract the minimum
98 * memory needed by the application.
100 * @param[in] min_memory Minimum needed memory in bytes.
101 * @param[in] max_memory Maximum needed memory in bytes.
102 * @param contract Contract, in-out argument.
104 * @return 0 if no error \n
105 * FRSH_ERR_BAD_ARGUMENT if min_memory <0
108 int frsh_contract_set_min_memory(size_t min_memory,
109 frsh_contract_t *contract);
112 * frsh_contract_get_min_memory()
114 * This function gets the minimum memory parameter from the contract.
116 * @param[in] contract Contract object
117 * @param[out] min_memory Placeholder for the minimum required
120 * @return 0 if no error \n
121 * FRSH_ERR_BAD_ARGUMENT if one of the pointers is NULL
123 int frsh_contract_get_min_memory(const frsh_contract_t *contract,
126 // frsh_contract_set_max_memory() is new
127 // frsh_contract_get_max_memory() is new
130 * frsh_contract_set_max_memory()
132 * This function specifies in the contract the minimum
133 * memory needed by the application.
135 * @param[in] max_memory Maximum needed memory in bytes.
136 * @param contract Contract, in-out argument.
138 * FRSH_ERR_BAD_ARGUMENT if min_memory > max_memory
141 int frsh_contract_set_max_memory(size_t max_memory,
142 frsh_contract_t *contract);
146 * frsh_contract_get_max_memory()
148 * This function gets the maximum memory parameter from the contract.
150 * @param[in] contract Contract object
151 * @param[out] max_memory Placeholder for the maximum required
154 * @return 0 if no error \n
155 * FRSH_ERR_BAD_ARGUMENT if one of the pointers is NULL
157 int frsh_contract_get_max_memory(const frsh_contract_t *contract,
162 * frsh_vres_get_memory_info()
164 * This function gives us the runtime info of memory usage and
167 * @param[in] vres_id Identifier of vres
168 * @param[out] mem_allocated Memory currently allocated to the vres
169 * @param[out] mem_budget Total pool of memory reserved for the vres
170 * (until next renegotiation).
172 * @return 0 if no error \n
173 * FRSH_ERR_BAD_ARGUMENT if one of the pointers is NULL
175 int frsh_vres_get_memory_info(frsh_vres_id_t vres_id,
176 size_t *mem_allocated,
181 * frsh_vres_memalloc()
183 * This function reserves some memory from the memory to this virtual
186 * @param[in] vres_id Identifier of vres.
187 * @param[in] Number of bytes
188 * @param[out] Valid pointer for the allocation
190 * @return 0 if no error \n
191 * FRSH_ERR_BAD_ARGUMENT if the area pointer is NULL
192 * FRSH_ERR_OUT_OF_BUDGET if no budget is available
194 int frsh_vres_malloc(frsh_vres_id_t vres_id,
199 * frsh_vres_memfree()
201 * This function returns the previously allocated memory area for this
202 * virtual_resource to the main memory.
204 * @param[in] vres_id Identifier of vres.
205 * @param[in] area Memory area to return
207 * @return 0 if no error \n
208 * FRSH_ERR_BAD_ARGUMENT if the area pointer is NULL
210 int frsh_vres_memfree(frsh_vres_id_t vres_id,
220 #endif /* !FRSH_MEMORY_MANAGEMENT_H_ */