#ifndef SMPI_H
#define SMPI_H
+#include <unistd.h>
#include <stddef.h>
#include <sys/time.h>
#include <xbt/misc.h>
XBT_PUBLIC(void) smpi_set_host_power_peak_at(int pstate_index);
XBT_PUBLIC(double) smpi_get_host_consumed_energy(void);
+XBT_PUBLIC(int) smpi_usleep(useconds_t usecs);
XBT_PUBLIC(unsigned int) smpi_sleep(unsigned int secs);
XBT_PUBLIC(int) smpi_gettimeofday(struct timeval *tv, void* tz);
XBT_PUBLIC(unsigned long long) smpi_rastro_resolution (void);
return secs;
}
+int smpi_usleep(useconds_t usecs)
+{
+ smx_action_t action;
+
+ smpi_bench_end();
+
+ double flops = (double) (usecs/1000000.0)*simcall_host_get_speed(SIMIX_host_self());
+ XBT_DEBUG("Sleep for: %f flops", flops);
+ action = simcall_host_execute("computation", SIMIX_host_self(), flops, 1, 0, 0);
+ #ifdef HAVE_TRACING
+ simcall_set_category (action, TRACE_internal_smpi_get_category());
+ #endif
+ simcall_host_execution_wait(action);
+
+ smpi_bench_begin();
+ return 0;
+}
+
+
int smpi_gettimeofday(struct timeval *tv, void* tz)
{
double now;