X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4233134b16caf9ccba18a6b08e79d24d443ece75..8751ce2fc793fff5b7b5f492add834d9f77ec0e3:/src/include/surf/surf.h diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 0ce4624690..d0c6714081 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -12,7 +12,6 @@ #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" @@ -124,7 +123,6 @@ typedef struct surf_action { 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; @@ -208,6 +206,9 @@ typedef struct surf_cpu_model_extension_public { 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); @@ -240,12 +241,13 @@ typedef struct surf_network_model_extension_public { */ 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; @@ -262,6 +264,8 @@ typedef struct surf_workstation_model_extension_public { 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 */ @@ -277,13 +281,17 @@ typedef struct surf_workstation_model_extension_public { 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); @@ -324,6 +332,7 @@ typedef struct surf_vm_workstation_model_extension_public { 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; @@ -374,6 +383,12 @@ typedef struct surf_model { 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