// Module initializer. Won't survive the conversion to C++. Hopefully.
XBT_PUBLIC(void) sg_host_init(void);
+// =========== user-level functions ===============
+XBT_PUBLIC(double) sg_host_get_speed(sg_host_t host);
+XBT_PUBLIC(double) sg_host_get_available_speed(sg_host_t host);
+
+
SG_END_DECL()
#endif /* SIMGRID_HOST_H_ */
XBT_PUBLIC(void) simcall_host_off(sg_host_t host);
XBT_PUBLIC(int) simcall_host_get_core(sg_host_t host);
XBT_PUBLIC(xbt_swag_t) simcall_host_get_process_list(sg_host_t host);
-XBT_PUBLIC(double) simcall_host_get_speed(sg_host_t host);
-XBT_PUBLIC(double) simcall_host_get_available_speed(sg_host_t host);
/* Two possible states, 1 - CPU ON and 0 CPU OFF */
XBT_PUBLIC(int) simcall_host_get_state(sg_host_t host);
XBT_PUBLIC(void *) simcall_host_get_data(sg_host_t host);
{
xbt_assert((h != NULL), "Invalid parameters");
- return (simcall_host_get_speed(h));
+ return (sg_host_get_speed(h));
}
}
-
-/*
-host::host() {
- // TODO Auto-generated constructor stub
-
+// =========== user-level functions ===============
+// ================================================
+double sg_host_get_speed(sg_host_t host){
+ return surf_host_get_speed(host, 1.0);
}
-host::~host() {
- // TODO Auto-generated destructor stub
-}*/
-
+double sg_host_get_available_speed(sg_host_t host){
+ return surf_host_get_available_speed(host);
+}
return simcall_BODY_asr_get_properties(name);
}
-
-/**
- * \ingroup simix_host_management
- * \brief Returns the speed of the processor.
- *
- * The speed returned does not take into account the current load on the machine.
- * \param host A SIMIX host
- * \return The speed of this host (in Mflop/s)
- */
-double simcall_host_get_speed(sg_host_t host)
-{
- return simcall_BODY_host_get_speed(host);
-}
-
/**
* \ingroup simix_host_management
* \brief Returns the number of core of the processor.
return simcall_BODY_host_get_process_list(host);
}
-
-/**
- * \ingroup simix_host_management
- * \brief Returns the available speed of the processor.
- *
- * \return Speed currently available (in Mflop/s)
- */
-double simcall_host_get_available_speed(sg_host_t host)
-{
- return simcall_BODY_host_get_available_speed(host);
-}
-
/**
* \ingroup simix_host_management
* \brief Returns the state of a host.
simcall->result.dp = result;
}
-static inline sg_host_t simcall_host_get_speed__get__host(smx_simcall_t simcall) {
- return (sg_host_t) simcall->args[0].dp;
-}
-static inline void simcall_host_get_speed__set__host(smx_simcall_t simcall, void* arg) {
- simcall->args[0].dp = arg;
-}
-static inline double simcall_host_get_speed__get__result(smx_simcall_t simcall){
- return simcall->result.d;
-}
-static inline void simcall_host_get_speed__set__result(smx_simcall_t simcall, double result){
- simcall->result.d = result;
-}
-
-static inline sg_host_t simcall_host_get_available_speed__get__host(smx_simcall_t simcall) {
- return (sg_host_t) simcall->args[0].dp;
-}
-static inline void simcall_host_get_available_speed__set__host(smx_simcall_t simcall, void* arg) {
- simcall->args[0].dp = arg;
-}
-static inline double simcall_host_get_available_speed__get__result(smx_simcall_t simcall){
- return simcall->result.d;
-}
-static inline void simcall_host_get_available_speed__set__result(smx_simcall_t simcall, double result){
- simcall->result.d = result;
-}
-
static inline sg_host_t simcall_host_get_state__get__host(smx_simcall_t simcall) {
return (sg_host_t) simcall->args[0].dp;
}
return self->simcall.result.dp;
}
-inline static double simcall_BODY_host_get_speed(sg_host_t host) {
- smx_process_t self = SIMIX_process_self();
-
- /* Go to that function to follow the code flow through the simcall barrier */
- if (0) SIMIX_host_get_speed(host);
- /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
-
- self->simcall.call = SIMCALL_HOST_GET_SPEED;
- memset(&self->simcall.result, 0, sizeof(self->simcall.result));
- memset(self->simcall.args, 0, sizeof(self->simcall.args));
- self->simcall.args[0].dp = (void*) host;
- if (self != simix_global->maestro_process) {
- XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
- SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
- SIMIX_process_yield(self);
- } else {
- SIMIX_simcall_handle(&self->simcall, 0);
- }
- return self->simcall.result.d;
- }
-
-inline static double simcall_BODY_host_get_available_speed(sg_host_t host) {
- smx_process_t self = SIMIX_process_self();
-
- /* Go to that function to follow the code flow through the simcall barrier */
- if (0) SIMIX_host_get_available_speed(host);
- /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
-
- self->simcall.call = SIMCALL_HOST_GET_AVAILABLE_SPEED;
- memset(&self->simcall.result, 0, sizeof(self->simcall.result));
- memset(self->simcall.args, 0, sizeof(self->simcall.args));
- self->simcall.args[0].dp = (void*) host;
- if (self != simix_global->maestro_process) {
- XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
- SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
- SIMIX_process_yield(self);
- } else {
- SIMIX_simcall_handle(&self->simcall, 0);
- }
- return self->simcall.result.d;
- }
-
inline static int simcall_BODY_host_get_state(sg_host_t host) {
smx_process_t self = SIMIX_process_self();
SIMCALL_HOST_GET_PROPERTIES,
SIMCALL_HOST_GET_CORE,
SIMCALL_HOST_GET_PROCESS_LIST,
- SIMCALL_HOST_GET_SPEED,
- SIMCALL_HOST_GET_AVAILABLE_SPEED,
SIMCALL_HOST_GET_STATE,
SIMCALL_HOST_GET_CURRENT_POWER_PEAK,
SIMCALL_HOST_GET_POWER_PEAK_AT,
[SIMCALL_HOST_GET_PROPERTIES] = "SIMCALL_HOST_GET_PROPERTIES",
[SIMCALL_HOST_GET_CORE] = "SIMCALL_HOST_GET_CORE",
[SIMCALL_HOST_GET_PROCESS_LIST] = "SIMCALL_HOST_GET_PROCESS_LIST",
- [SIMCALL_HOST_GET_SPEED] = "SIMCALL_HOST_GET_SPEED",
- [SIMCALL_HOST_GET_AVAILABLE_SPEED] = "SIMCALL_HOST_GET_AVAILABLE_SPEED",
[SIMCALL_HOST_GET_STATE] = "SIMCALL_HOST_GET_STATE",
[SIMCALL_HOST_GET_CURRENT_POWER_PEAK] = "SIMCALL_HOST_GET_CURRENT_POWER_PEAK",
[SIMCALL_HOST_GET_POWER_PEAK_AT] = "SIMCALL_HOST_GET_POWER_PEAK_AT",
SIMIX_simcall_answer(simcall);
break;
-case SIMCALL_HOST_GET_SPEED:
- simcall->result.d = SIMIX_host_get_speed((sg_host_t) simcall->args[0].dp);
- SIMIX_simcall_answer(simcall);
- break;
-
-case SIMCALL_HOST_GET_AVAILABLE_SPEED:
- simcall->result.d = SIMIX_host_get_available_speed((sg_host_t) simcall->args[0].dp);
- SIMIX_simcall_answer(simcall);
- break;
-
case SIMCALL_HOST_GET_STATE:
simcall->result.i = SIMIX_host_get_state((sg_host_t) simcall->args[0].dp);
SIMIX_simcall_answer(simcall);
Func - host_get_properties (void*, xbt_dict_t) (host, void*, sg_host_t)
Func - host_get_core (int) (host, void*, sg_host_t)
Func - host_get_process_list (void*, xbt_swag_t) (host, void*, sg_host_t)
-Func - host_get_speed (double) (host, void*, sg_host_t)
-Func - host_get_available_speed (double) (host, void*, sg_host_t)
Func - host_get_state (int) (host, void*, sg_host_t)
Func - host_get_current_power_peak (double) (host, void*, sg_host_t)
Func - host_get_power_peak_at (double) (host, void*, sg_host_t) (pstate_index, int)
return surf_host_get_properties(surf_host_resource_priv(host));
}
-double SIMIX_host_get_speed(sg_host_t host){
- return surf_host_get_speed(host, 1.0);
-}
int SIMIX_host_get_core(sg_host_t host){
return surf_host_get_core(host);
}
-double SIMIX_host_get_available_speed(sg_host_t host){
- return surf_host_get_available_speed(host);
-}
-
double SIMIX_host_get_current_power_peak(sg_host_t host) {
return surf_host_get_current_power_peak(host);
}
* surf layer should not be zero (i.e., unlimited). It should be the
* capacity of a CPU core. */
if (bound == 0)
- surf_cpu_action_set_bound(synchro->execution.surf_exec, SIMIX_host_get_speed(issuer->host));
+ surf_cpu_action_set_bound(synchro->execution.surf_exec, sg_host_get_speed(issuer->host));
else
surf_cpu_action_set_bound(synchro->execution.surf_exec, bound);
XBT_PRIVATE xbt_dict_t SIMIX_host_get_properties(sg_host_t host);
XBT_PRIVATE int SIMIX_host_get_core(sg_host_t host);
XBT_PRIVATE xbt_swag_t SIMIX_host_get_process_list(sg_host_t host);
-XBT_PRIVATE double SIMIX_host_get_speed(sg_host_t host);
-XBT_PRIVATE double SIMIX_host_get_available_speed(sg_host_t host);
XBT_PRIVATE int SIMIX_host_get_state(sg_host_t host);
XBT_PRIVATE double SIMIX_host_get_current_power_peak(sg_host_t host);
XBT_PRIVATE double SIMIX_host_get_power_peak_at(sg_host_t host, int pstate_index);