// FIXME: this header file should die
-XBT_PUBLIC_DATA(int) SIMIX_STORAGE_LEVEL; //Simix storage level
-
XBT_PUBLIC_DATA(xbt_lib_t) storage_lib;
XBT_PUBLIC_DATA(int) ROUTING_STORAGE_LEVEL; //Routing storage level
XBT_PUBLIC_DATA(int) SURF_STORAGE_LEVEL; // Surf storage level
/* Initialize MSG storages */
xbt_lib_foreach(storage_lib, cursor, name, data) {
- if(data[SIMIX_STORAGE_LEVEL])
- __MSG_storage_create(xbt_dict_cursor_get_elm(cursor));
+ __MSG_storage_create(xbt_dict_cursor_get_elm(cursor));
}
}
// TODO, create sg_storage_by_name
sg_storage_t s = xbt_lib_get_elm_or_null(storage_lib, name);
xbt_assert(s != nullptr, "Storage not found for name %s", name);
-
- SIMIX_storage_create(name, s, nullptr);
});
-
- SIMIX_STORAGE_LEVEL = xbt_lib_add_level(storage_lib, SIMIX_storage_destroy);
}
if (!simix_timers)
simix_timers = xbt_heap_new(8, [](void* p) {
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_io, simix, "Logging specific to SIMIX (io)");
-/**
- * \brief Internal function to create a SIMIX storage.
- * \param name name of the storage to create
- * \param storage the SURF storage to encapsulate
- * \param data some user data (may be nullptr)
- */
-smx_storage_t SIMIX_storage_create(const char *name, void *storage, void *data)
-{
- smx_storage_priv_t smx_storage = xbt_new0(s_smx_storage_priv_t, 1);
-
- smx_storage->data = data;
-
- /* Update global variables */
- xbt_lib_set(storage_lib,name,SIMIX_STORAGE_LEVEL,smx_storage);
- return xbt_lib_get_elm_or_null(storage_lib, name);
-}
-
-/**
- * \brief Internal function to destroy a SIMIX storage.
- *
- * \param s the host to destroy (a smx_storage_t)
- */
-void SIMIX_storage_destroy(void *s)
-{
- smx_storage_priv_t storage = static_cast<smx_storage_priv_t>(s);
-
- xbt_assert((storage != nullptr), "Invalid parameters");
- if (storage->data)
- free(storage->data);
-
- /* Clean storage structure */
- free(storage);
-}
-
//SIMIX FILE READ
void simcall_HANDLER_file_read(smx_simcall_t simcall, smx_file_t fd, sg_size_t size, sg_host_t host)
{
#include "simgrid/simix.h"
#include "popping_private.h"
-/** @brief Storage datatype */
-typedef struct s_smx_storage_priv {
- void *data; /**< @brief user data */
-} s_smx_storage_priv_t;
-
-
-static inline smx_storage_priv_t SIMIX_storage_priv(smx_storage_t storage){
- return (smx_storage_priv_t) xbt_lib_get_level(storage, SIMIX_STORAGE_LEVEL);
-}
-
-XBT_PRIVATE smx_storage_t SIMIX_storage_create(const char *name, void *storage, void *data);
-XBT_PRIVATE void SIMIX_storage_destroy(void *s);
XBT_PRIVATE smx_activity_t SIMIX_file_read(smx_file_t fd, sg_size_t size, sg_host_t host);
XBT_PRIVATE smx_activity_t SIMIX_file_write(smx_file_t fd, sg_size_t size, sg_host_t host);
XBT_PRIVATE smx_activity_t SIMIX_file_open(const char* fullpath, sg_host_t host);
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_storage, surf, "Logging specific to the SURF storage module");
xbt_lib_t storage_lib;
-int SIMIX_STORAGE_LEVEL = -1; // Simix storage level
int MSG_STORAGE_LEVEL = -1; // Msg storage level
int ROUTING_STORAGE_LEVEL = -1; // Routing for storage level
int SURF_STORAGE_LEVEL = -1;