#include "xbt/dict.h"
#include "xbt/graph.h"
#include "xbt/misc.h"
-#include "xbt/file_stat.h"
#include "portable.h"
#include "xbt/config.h"
#include "surf/datatypes.h"
char *category; /**< tracing category for categorized resource utilization monitoring */
#endif
surf_file_t file; /**< surf_file_t for storage model */
- s_file_stat_t stat; /**< surf_file_t for storage model */
xbt_dict_t ls_dict;
} s_surf_action_t;
surf_action_t(*execute) (void *cpu, double size);
surf_action_t(*sleep) (void *cpu, double duration);
e_surf_resource_state_t(*get_state) (void *cpu);
+ void(*set_state) (void *cpu, e_surf_resource_state_t state);
+
+ int (*get_core) (void *cpu);
double (*get_speed) (void *cpu, double load);
double (*get_available_speed) (void *cpu);
void (*add_traces) (void);
*/
typedef struct surf_storage_model_extension_public {
- surf_action_t(*open) (void *storage, const char* mount, const char* path, const char* mode);
- surf_action_t(*close) (void *storage, surf_file_t fp);
- surf_action_t(*read) (void *storage, void* ptr, double size, size_t nmemb, surf_file_t stream);
- surf_action_t(*write) (void *storage, const void* ptr, size_t size, size_t nmemb, surf_file_t stream);
- surf_action_t(*stat) (void *storage, surf_file_t stream);
- surf_action_t(*unlink) (void *storage, surf_file_t stream);
+ surf_action_t(*open) (void *storage, const char* mount, const char* path);
+ surf_action_t(*close) (void *storage, surf_file_t fd);
+ surf_action_t(*read) (void *storage, void* ptr, size_t size,
+ surf_file_t fd);
+ surf_action_t(*write) (void *storage, const void* ptr, size_t size,
+ surf_file_t fd);
+ surf_action_t(*stat) (void *storage, surf_file_t fd);
surf_action_t(*ls) (void *storage, const char *path);
} s_surf_model_extension_storage_t;
and create the corresponding action */
surf_action_t(*sleep) (void *workstation, double duration); /**< Make a workstation sleep during a given duration */
e_surf_resource_state_t(*get_state) (void *workstation); /**< Return the CPU state of a workstation */
+ void(*set_state) (void *workstation, e_surf_resource_state_t state);
+ int (*get_core) (void *workstation);
double (*get_speed) (void *workstation, double load); /**< Return the speed of a workstation */
double (*get_available_speed) (void *workstation); /**< Return tha available speed of a workstation */
surf_action_t(*communicate) (void *workstation_src, /**< Execute a communication amount between two workstations */
double rate);
double (*get_link_bandwidth) (const void *link); /**< Return the current bandwidth of a network link */
double (*get_link_latency) (const void *link); /**< Return the current latency of a network link */
- surf_action_t(*open) (void *workstation, const char* storage, const char* path, const char* mode);
- surf_action_t(*close) (void *workstation, surf_file_t fp);
- surf_action_t(*read) (void *workstation, void* ptr, size_t size, size_t nmemb, surf_file_t stream);
- surf_action_t(*write) (void *workstation, const void* ptr, size_t size, size_t nmemb, surf_file_t stream);
- surf_action_t(*stat) (void *workstation, surf_file_t stream);
- surf_action_t(*unlink) (void *workstation, surf_file_t stream);
+ surf_action_t(*open) (void *workstation, const char* storage,
+ const char* path);
+ surf_action_t(*close) (void *workstation, surf_file_t fd);
+ surf_action_t(*read) (void *workstation, void* ptr, size_t size,
+ surf_file_t fd);
+ surf_action_t(*write) (void *workstation, const void* ptr, size_t size,
+ surf_file_t fd);
+ surf_action_t(*stat) (void *workstation, surf_file_t fd);
+ int(*unlink) (void *workstation, surf_file_t fd);
surf_action_t(*ls) (void *workstation, const char* mount, const char *path);
+ size_t (*get_size) (void *workstation, surf_file_t fd);
int (*link_shared) (const void *link);
xbt_dict_t(*get_properties) (const void *resource);
void * (*get_pm) (void *ind_vm_ws); // will be vm_ws_get_pm()
void (*set_vm_bound) (void *ind_vm_ws, double bound); // will be vm_ws_set_vm_bound()
+ void (*set_vm_affinity) (void *ind_vm_ws, void *ind_pm_ws, unsigned long mask); // will be vm_ws_set_vm_affinity()
} s_surf_model_extension_vm_workstation_t;
void (*set_max_duration) (surf_action_t action, double duration); /**< Set the max duration of an action*/
void (*set_priority) (surf_action_t action, double priority); /**< Set the priority of an action */
void (*set_bound) (surf_action_t action, double bound); /**< Set the bound (the maximum CPU utilization) of an action */
+
+ /* Note (hypervisor): set_affinity() may be used only in CPU models. It might
+ * be better to move this member to the extension field.
+ **/
+ void (*set_affinity) (surf_action_t action, void *workstation, unsigned long mask); /**< Set the CPU affinity of an action */
+
#ifdef HAVE_TRACING
void (*set_category) (surf_action_t action, const char *category); /**< Set the category of an action */
#endif