X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1bfdc9a38c22af6a9becf133be154a2fa2bc6589..50b3bf96c456bd2f0ce5d7c96eeb99e68359c6f4:/src/surf/workstation_interface.cpp diff --git a/src/surf/workstation_interface.cpp b/src/surf/workstation_interface.cpp index 70f949c12b..53cf191503 100644 --- a/src/surf/workstation_interface.cpp +++ b/src/surf/workstation_interface.cpp @@ -4,6 +4,7 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ +#include "simix/smx_private.h" #include "workstation_interface.hpp" #include "vm_workstation_interface.hpp" #include "cpu_cas01.hpp" @@ -25,6 +26,15 @@ surf_callback(void, WorkstationPtr) workstationDestructedCallbacks; surf_callback(void, WorkstationPtr, e_surf_resource_state_t, e_surf_resource_state_t) workstationStateChangedCallbacks; surf_callback(void, WorkstationActionPtr, e_surf_action_state_t, e_surf_action_state_t) workstationActionStateChangedCallbacks; +void workstation_parse_init(sg_platf_host_cbarg_t host) +{ + surf_workstation_model->createWorkstation(host->id); +} + +void workstation_add_traces(){ + surf_workstation_model->addTraces(); +} + /********* * Model * *********/ @@ -197,7 +207,7 @@ xbt_dynar_t Workstation::getAttachedStorageList() if(xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL) != NULL) { StoragePtr storage = static_cast(xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL)); if(!strcmp((const char*)storage->p_attach,this->getName())){ - xbt_dynar_push_as(result, void *,(void *)static_cast(storage)->getName()); + xbt_dynar_push_as(result, void *, (void*)storage->getName()); } } } @@ -241,6 +251,7 @@ ActionPtr Workstation::open(const char* fullpath) { else xbt_die("Can't find mount point for '%s' on '%s'", fullpath, getName()); + XBT_DEBUG("OPEN %s on disk '%s'",fullpath, st->getName()); ActionPtr action = st->open((const char*)mount_name, (const char*)path); free((char*)path); free((char*)mount_name); @@ -249,19 +260,19 @@ ActionPtr Workstation::open(const char* fullpath) { ActionPtr Workstation::close(surf_file_t fd) { StoragePtr st = findStorageOnMountList(fd->mount); - XBT_DEBUG("CLOSE on disk '%s'",st->getName()); + XBT_DEBUG("CLOSE %s on disk '%s'",fd->name, st->getName()); return st->close(fd); } ActionPtr Workstation::read(surf_file_t fd, sg_size_t size) { StoragePtr st = findStorageOnMountList(fd->mount); - XBT_DEBUG("READ on disk '%s'",st->getName()); + XBT_DEBUG("READ %s on disk '%s'",fd->name, st->getName()); return st->read(fd, size); } ActionPtr Workstation::write(surf_file_t fd, sg_size_t size) { StoragePtr st = findStorageOnMountList(fd->mount); - XBT_DEBUG("WRITE on disk '%s'",st->getName()); + XBT_DEBUG("WRITE %s on disk '%s'",fd->name, st->getName()); return st->write(fd, size); } @@ -278,7 +289,7 @@ int Workstation::unlink(surf_file_t fd) { st->getName()); return -1; } else { - XBT_DEBUG("UNLINK on disk '%s'",st->getName()); + XBT_DEBUG("UNLINK %s on disk '%s'",fd->name, st->getName()); st->m_usedSize -= fd->size; // Remove the file from storage @@ -315,7 +326,7 @@ sg_size_t Workstation::fileTell(surf_file_t fd){ return fd->current_position; } -int Workstation::fileSeek(surf_file_t fd, sg_size_t offset, int origin){ +int Workstation::fileSeek(surf_file_t fd, sg_offset_t offset, int origin){ switch (origin) { case SEEK_SET: @@ -343,7 +354,7 @@ int Workstation::fileMove(surf_file_t fd, const char* fullpath){ *new_psize = *psize; if (psize){// src file exists xbt_dict_remove(findStorageOnMountList(fd->mount)->p_content, fd->name); - char *path = (char *) xbt_malloc ((strlen(fullpath)-strlen(fd->mount)+1));; + char *path = (char *) xbt_malloc ((strlen(fullpath)-strlen(fd->mount)+1)); strncpy(path, fullpath+strlen(fd->mount), strlen(fullpath)-strlen(fd->mount)+1); xbt_dict_set(findStorageOnMountList(fd->mount)->p_content, path,