Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid
[simgrid.git] / src / msg / msg_io.c
index a9809ac..c8b64de 100644 (file)
@@ -5,6 +5,10 @@
  * under the terms of the license (GNU LGPL) which comes with this package.              */
 
 #include "msg_private.h"
+#include "xbt/log.h"
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_io, simix,
+                                "Logging specific to MSG (io)");
 
 /** @addtogroup m_file_management
  *     \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="File" --> \endhtmlonly
@@ -27,7 +31,7 @@
  */
 size_t MSG_file_read(const char* storage, void* ptr, size_t size, size_t nmemb,  msg_file_t stream)
 {
-  return simcall_file_read(storage, ptr, size, nmemb, (smx_file_t)stream);
+  return simcall_file_read(storage, ptr, size, nmemb, stream->simdata->smx_file);
 }
 
 /** \ingroup m_file_management
@@ -42,7 +46,7 @@ size_t MSG_file_read(const char* storage, void* ptr, size_t size, size_t nmemb,
  */
 size_t MSG_file_write(const char* storage, const void* ptr, size_t size, size_t nmemb, msg_file_t stream)
 {
-  return simcall_file_write(storage, ptr, size, nmemb, (smx_file_t)stream);
+  return simcall_file_write(storage, ptr, size, nmemb, stream->simdata->smx_file);
 }
 
 /** \ingroup m_file_management
@@ -64,7 +68,11 @@ size_t MSG_file_write(const char* storage, const void* ptr, size_t size, size_t
  */
 msg_file_t MSG_file_open(const char* storage, const char* path, const char* mode)
 {
-  return (msg_file_t) simcall_file_open(storage, path, mode);
+  msg_file_t file = xbt_new(s_msg_file_t,1);
+  file->name = strdup(path);
+  file->simdata = xbt_new0(s_simdata_file_t,1);
+  file->simdata->smx_file = simcall_file_open(storage, path, mode);
+  return file;
 }
 
 /** \ingroup m_file_management
@@ -76,18 +84,20 @@ msg_file_t MSG_file_open(const char* storage, const char* path, const char* mode
  */
 int MSG_file_close(const char* storage, msg_file_t fp)
 {
-  return simcall_file_close(storage, (smx_file_t)fp);
+  return simcall_file_close(storage, fp->simdata->smx_file);
 }
 
 /** \ingroup m_file_management
  * \brief Stats the file pointed by fd
  *
  * \param storage is the name where find the stream
- * \param fd is the file descriptor
+ * \param fd is the file descriptor (#msg_file_t)
  * \param buf is the return structure with informations
  * \return 0 on success or 1 on error
  */
-int MSG_file_stat(const char* storage, int fd, void* buf)
+int MSG_file_stat(const char* storage, msg_file_t fd, s_msg_stat_t *buf)
 {
-  return simcall_file_stat(storage, fd, buf);
+  int res;
+  res = simcall_file_stat(storage, fd->simdata->smx_file, buf);
+  return res;
 }