Rev 899 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/**
@file distributed spare capacity
*/
//fsf_distributed_spare_capacity.h
//=====================================================================
// FFFFFFIII RRRRR SSTTTTTTT
// FF IIR RR SS
// FF IR SS
// FFFFFF RRRR SSSSST
// FF FI RRR SS
// FF II RRR SS
// FF IIIIIR RS
//
// FSF(FIRST Scheduling Framework)
// distributed spare capacity functionality
//=====================================================================
#include "fsf_core.h"
#include "fsf_distributed.h"
#ifndef _FSF_DISTRIBUTED_SPARE_CAPACITY_H_
#define _FSF_DISTRIBUTED_SPARE_CAPACITY_H_
#define FSF_DISTRIBUTED_SPARE_CAPACITY_MODULE_SUPPORTED 1
/**
\ingroup distsparemodule
This operation sets the granted capacity flag in the contract
parameters object pointed to by contract to the boolean specified
in granted_capacity_flag. This flag indicates to the scheduler that
once the negotiation of the respective contract is finished, the
first values for the budget and period given to the corresponding
server must not be changed due to the negotiation or renegotiation
of any other contract in the system. The period can change, though,
if a renegotiation or a change of quality and importance is
requested for the corresponding server It fails with
FSF_ERR_BAD_ARGUMENT if contract is NULL. */
int
fsf_set_contract_granted_capacity_flag
(fsf_contract_parameters_t *contract,
bool granted_capacity_flag);
/**
\ingroup distsparemodule
This operation returns in the place pointed to by
granted_capacity_flag the value of the corresponding flag in the
contract parameters object pointed to by contract. It fails with
FSF_ERR_BAD_ARGUMENT if any of the pointers is NULL */
int
fsf_get_contract_granted_capacity_flag
(fsf_contract_parameters_t *contract,
bool *granted_capacity_flag);
/**
\ingroup distsparemodule
This operation is used to return spare capacity that was assigned
to a server but that cannot be used due to restrictions in other
servers of a distributed transaction. This operation changes the
cycle period and budget of the given server to the values given in
new_period and new_budget, respectively. It fails with
FSF_ERR_BAD_ARGUMENT if the server does not have the
granted_capacity flag set, if the new period is less than the
current one, or if the new budget is larger than the current
one. It also fails with the same error number if the new period is
greater than the maximum period currently specified in the contract
associated to the server or, similarly, if the new budget is
smaller than the minimum budget in the contract. It also fails
with the same number if the granularity is discrete and the new
period and budget do not match any of the period-budget pairs in
the utilization set of the server */
int
fsf_set_server_capacity
(fsf_server_id_t server,
const struct timespec *new_period,
const struct timespec *new_budget);
#endif // _FSF_DISTRIBUTED_SPARE_CAPACITY_H_