#include "simgrid/s4u/File.hpp"
#include "simgrid/s4u/Host.hpp"
#include "simgrid/s4u/Storage.hpp"
+#include "simgrid/simix.hpp"
+#include "src/surf/FileImpl.hpp"
#include "src/surf/HostImpl.hpp"
XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_file,"S4U files");
sg_size_t File::size()
{
- return simcall_file_get_size(pimpl_);
+ return simgrid::simix::kernelImmediate([this] { return pimpl_->size(); });
}
void File::seek(sg_size_t pos)
{
- simcall_file_seek(pimpl_,pos,SEEK_SET);
+ simgrid::simix::kernelImmediate([this, pos] { pimpl_->seek(pos, SEEK_SET); });
}
sg_size_t File::tell()
{
- return simcall_file_tell(pimpl_);
+ return simgrid::simix::kernelImmediate([this] { return pimpl_->tell(); });
}
void File::move(const char* fullpath)
return simcall_BODY_file_unlink(fd, host);
}
-/**
- * \ingroup simix_file_management
- *
- */
-sg_size_t simcall_file_get_size(surf_file_t fd)
-{
- return simcall_BODY_file_get_size(fd);
-}
-
-/**
- * \ingroup simix_file_management
- *
- */
-sg_size_t simcall_file_tell(surf_file_t fd)
-{
- return simcall_BODY_file_tell(fd);
-}
-
-/**
- * \ingroup simix_file_management
- *
- */
-int simcall_file_seek(surf_file_t fd, sg_offset_t offset, int origin)
-{
- return simcall_BODY_file_seek(fd, offset, origin);
-}
/**
* \ingroup simix_file_management
simgrid::simix::marshal<int>(simcall->result, result);
}
-static inline surf_file_t simcall_file_get_size__get__fd(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal<surf_file_t>(simcall->args[0]);
-}
-static inline surf_file_t simcall_file_get_size__getraw__fd(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal_raw<surf_file_t>(simcall->args[0]);
-}
-static inline void simcall_file_get_size__set__fd(smx_simcall_t simcall, surf_file_t arg)
-{
- simgrid::simix::marshal<surf_file_t>(simcall->args[0], arg);
-}
-static inline sg_size_t simcall_file_get_size__get__result(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal<sg_size_t>(simcall->result);
-}
-static inline sg_size_t simcall_file_get_size__getraw__result(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal_raw<sg_size_t>(simcall->result);
-}
-static inline void simcall_file_get_size__set__result(smx_simcall_t simcall, sg_size_t result){
- simgrid::simix::marshal<sg_size_t>(simcall->result, result);
-}
-
-static inline surf_file_t simcall_file_tell__get__fd(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal<surf_file_t>(simcall->args[0]);
-}
-static inline surf_file_t simcall_file_tell__getraw__fd(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal_raw<surf_file_t>(simcall->args[0]);
-}
-static inline void simcall_file_tell__set__fd(smx_simcall_t simcall, surf_file_t arg)
-{
- simgrid::simix::marshal<surf_file_t>(simcall->args[0], arg);
-}
-static inline sg_size_t simcall_file_tell__get__result(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal<sg_size_t>(simcall->result);
-}
-static inline sg_size_t simcall_file_tell__getraw__result(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal_raw<sg_size_t>(simcall->result);
-}
-static inline void simcall_file_tell__set__result(smx_simcall_t simcall, sg_size_t result){
- simgrid::simix::marshal<sg_size_t>(simcall->result, result);
-}
-
-static inline surf_file_t simcall_file_seek__get__fd(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal<surf_file_t>(simcall->args[0]);
-}
-static inline surf_file_t simcall_file_seek__getraw__fd(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal_raw<surf_file_t>(simcall->args[0]);
-}
-static inline void simcall_file_seek__set__fd(smx_simcall_t simcall, surf_file_t arg)
-{
- simgrid::simix::marshal<surf_file_t>(simcall->args[0], arg);
-}
-static inline sg_offset_t simcall_file_seek__get__offset(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal<sg_offset_t>(simcall->args[1]);
-}
-static inline sg_offset_t simcall_file_seek__getraw__offset(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal_raw<sg_offset_t>(simcall->args[1]);
-}
-static inline void simcall_file_seek__set__offset(smx_simcall_t simcall, sg_offset_t arg)
-{
- simgrid::simix::marshal<sg_offset_t>(simcall->args[1], arg);
-}
-static inline int simcall_file_seek__get__origin(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal<int>(simcall->args[2]);
-}
-static inline int simcall_file_seek__getraw__origin(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal_raw<int>(simcall->args[2]);
-}
-static inline void simcall_file_seek__set__origin(smx_simcall_t simcall, int arg)
-{
- simgrid::simix::marshal<int>(simcall->args[2], arg);
-}
-static inline int simcall_file_seek__get__result(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal<int>(simcall->result);
-}
-static inline int simcall_file_seek__getraw__result(smx_simcall_t simcall)
-{
- return simgrid::simix::unmarshal_raw<int>(simcall->result);
-}
-static inline void simcall_file_seek__set__result(smx_simcall_t simcall, int result){
- simgrid::simix::marshal<int>(simcall->result, result);
-}
-
static inline surf_file_t simcall_file_move__get__fd(smx_simcall_t simcall)
{
return simgrid::simix::unmarshal<surf_file_t>(simcall->args[0]);
return simcall<int, surf_file_t, sg_host_t>(SIMCALL_FILE_UNLINK, fd, host);
}
- inline static sg_size_t simcall_BODY_file_get_size(surf_file_t fd)
- {
- /* Go to that function to follow the code flow through the simcall barrier */
- if (0)
- SIMIX_file_get_size(fd);
- return simcall<sg_size_t, surf_file_t>(SIMCALL_FILE_GET_SIZE, fd);
- }
-
- inline static sg_size_t simcall_BODY_file_tell(surf_file_t fd)
- {
- /* Go to that function to follow the code flow through the simcall barrier */
- if (0)
- SIMIX_file_tell(fd);
- return simcall<sg_size_t, surf_file_t>(SIMCALL_FILE_TELL, fd);
- }
-
- inline static int simcall_BODY_file_seek(surf_file_t fd, sg_offset_t offset, int origin)
- {
- /* Go to that function to follow the code flow through the simcall barrier */
- if (0)
- SIMIX_file_seek(fd, offset, origin);
- return simcall<int, surf_file_t, sg_offset_t, int>(SIMCALL_FILE_SEEK, fd, offset, origin);
- }
-
inline static int simcall_BODY_file_move(surf_file_t fd, const char* fullpath)
{
/* Go to that function to follow the code flow through the simcall barrier */
SIMCALL_FILE_OPEN,
SIMCALL_FILE_CLOSE,
SIMCALL_FILE_UNLINK,
- SIMCALL_FILE_GET_SIZE,
- SIMCALL_FILE_TELL,
- SIMCALL_FILE_SEEK,
SIMCALL_FILE_MOVE,
SIMCALL_MC_RANDOM,
SIMCALL_SET_CATEGORY,
"SIMCALL_FILE_OPEN",
"SIMCALL_FILE_CLOSE",
"SIMCALL_FILE_UNLINK",
- "SIMCALL_FILE_GET_SIZE",
- "SIMCALL_FILE_TELL",
- "SIMCALL_FILE_SEEK",
"SIMCALL_FILE_MOVE",
"SIMCALL_MC_RANDOM",
"SIMCALL_SET_CATEGORY",
SIMIX_simcall_answer(simcall);
break;
-case SIMCALL_FILE_GET_SIZE:
- simgrid::simix::marshal<sg_size_t>(simcall->result,
- SIMIX_file_get_size(simgrid::simix::unmarshal<surf_file_t>(simcall->args[0])));
- SIMIX_simcall_answer(simcall);
- break;
-
-case SIMCALL_FILE_TELL:
- simgrid::simix::marshal<sg_size_t>(simcall->result,
- SIMIX_file_tell(simgrid::simix::unmarshal<surf_file_t>(simcall->args[0])));
- SIMIX_simcall_answer(simcall);
- break;
-
-case SIMCALL_FILE_SEEK:
- simgrid::simix::marshal<int>(simcall->result,
- SIMIX_file_seek(simgrid::simix::unmarshal<surf_file_t>(simcall->args[0]),
- simgrid::simix::unmarshal<sg_offset_t>(simcall->args[1]),
- simgrid::simix::unmarshal<int>(simcall->args[2])));
- SIMIX_simcall_answer(simcall);
- break;
-
case SIMCALL_FILE_MOVE:
simgrid::simix::marshal<int>(
simcall->result, simcall_HANDLER_file_move(simcall, simgrid::simix::unmarshal<surf_file_t>(simcall->args[0]),
surf_file_t file_open(const char* mount, const char* path, sg_storage_t st) [[block]];
int file_close(surf_file_t fd, sg_host_t host) [[block]];
int file_unlink(surf_file_t fd, sg_host_t host) [[nohandler]];
-sg_size_t file_get_size(surf_file_t fd) [[nohandler]];
-sg_size_t file_tell(surf_file_t fd) [[nohandler]];
-int file_seek(surf_file_t fd, sg_offset_t offset, int origin) [[nohandler]];
int file_move(surf_file_t fd, const char* fullpath);
int mc_random(int min, int max);
return surf_host_unlink(host, file);
}
-sg_size_t SIMIX_file_get_size(surf_file_t fd)
-{
- return fd->size();
-}
-
-sg_size_t SIMIX_file_tell(surf_file_t fd)
-{
- return fd->tell();
-}
-
-int SIMIX_file_seek(surf_file_t fd, sg_offset_t offset, int origin)
-{
- return fd->seek(offset, origin);
-}
-
int simcall_HANDLER_file_move(smx_simcall_t simcall, surf_file_t file, const char* fullpath)
{
return SIMIX_file_move(simcall->issuer, file, fullpath);
XBT_PRIVATE smx_activity_t SIMIX_file_open(const char* mount, const char* path, sg_storage_t st);
XBT_PRIVATE smx_activity_t SIMIX_file_close(surf_file_t fd, sg_host_t host);
XBT_PRIVATE int SIMIX_file_unlink(surf_file_t fd, sg_host_t host);
-XBT_PRIVATE sg_size_t SIMIX_file_get_size(surf_file_t fd);
-XBT_PRIVATE sg_size_t SIMIX_file_tell(surf_file_t fd);
-XBT_PRIVATE int SIMIX_file_seek(surf_file_t fd, sg_offset_t offset, int origin);
XBT_PRIVATE int SIMIX_file_move(smx_actor_t process, surf_file_t fd, const char* fullpath);
XBT_PRIVATE void SIMIX_io_destroy(smx_activity_t synchro);