X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cdf30f059dbd4871e2ef4fddb30c1f0f1ad6e34e..c2f3f26a7e99acb812c6f6983953a04d9d10f025:/examples/msg/io/remote.c?ds=sidebyside diff --git a/examples/msg/io/remote.c b/examples/msg/io/remote.c new file mode 100644 index 0000000000..3a3efbcbed --- /dev/null +++ b/examples/msg/io/remote.c @@ -0,0 +1,139 @@ +/* Copyright (c) 2014. The SimGrid Team. + * All rights reserved. */ + +/* 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. */ + +/** @addtogroup MSG_examples + * + * @subsection MSG_ex_resources Other resource kinds + * + * This section contains some sparse examples of how to use the other + * kind of resources, such as disk or GPU. These resources are quite + * experimental for now, but here we go anyway. + * + * - io/remote.c Example of delegated I/O operations + */ + +#include +#include +#include "msg/msg.h" +#include "surf/surf_private.h" + +int host(int argc, char *argv[]); + +XBT_LOG_NEW_DEFAULT_CATEGORY(remote_io, + "Messages specific for this io example"); + + +int host(int argc, char *argv[]){ + msg_file_t file = NULL; + const char* filename; +// msg_storage_t st; + sg_size_t read;//,write; + + file = MSG_file_open(argv[1], NULL); + filename = MSG_file_get_name(file); + XBT_INFO("Opened file '%s'",filename); + MSG_file_dump(file); + + // st = MSG_storage_get_by_name(st_name); + + XBT_INFO("Try to read %llu from '%s'",MSG_file_get_size(file),filename); + read = MSG_file_read(file, MSG_file_get_size(file)); + XBT_INFO("Have read %llu from '%s'",read,filename); + + MSG_file_close(file); + return 0; +} + +//int host(int argc, char *argv[]) +//{ +// msg_file_t file = NULL; +// sg_size_t read,write; +// msg_storage_t st; +// const char* st_name; +// +// if(!strcmp(MSG_process_get_name(MSG_process_self()),"0")){ +// file = MSG_file_open(FILENAME1, NULL); +// MSG_file_dump(file); +// st_name = "Disk4"; +// } else if(!strcmp(MSG_process_get_name(MSG_process_self()),"1")) { +// file = MSG_file_open(FILENAME2, NULL); +// st_name = "Disk2"; +// } else if(!strcmp(MSG_process_get_name(MSG_process_self()),"2")){ +// file = MSG_file_open(FILENAME3, NULL); +// st_name = "Disk3"; +// } else if(!strcmp(MSG_process_get_name(MSG_process_self()),"3")){ +// file = MSG_file_open(FILENAME4, NULL); +// st_name = "Disk1"; +// } +// else xbt_die("FILENAME NOT DEFINED %s",MSG_process_get_name(MSG_process_self())); +// +// const char* filename = MSG_file_get_name(file); +// XBT_INFO("\tOpen file '%s'",filename); +// st = MSG_storage_get_by_name(st_name); +// +// XBT_INFO("\tCapacity of the storage element '%s' is stored on: %llu / %llu", +// filename, MSG_storage_get_used_size(st), MSG_storage_get_size(st)); +// +// /* Try to read for 10MB */ +// read = MSG_file_read(file, 10000000); +// XBT_INFO("\tHave read %llu from '%s'",read,filename); +// +// /* Write 100KB in file from the current position, i.e, end of file or 10MB */ +// write = MSG_file_write(file, 100000); +// XBT_INFO("\tHave written %llu in '%s'. Size now is: %llu",write,filename, +// MSG_file_get_size(file)); +// +// +// XBT_INFO("\tCapacity of the storage element '%s' is stored on: %llu / %llu", +// filename, MSG_storage_get_used_size(st), MSG_storage_get_size(st)); +// +// /* rewind to the beginning of the file */ +// XBT_INFO("\tComing back to the beginning of the stream for file '%s'", +// filename); +// MSG_file_seek(file, 0, SEEK_SET); +// +// /* Try to read 110KB */ +// read = MSG_file_read(file, 110000); +// XBT_INFO("\tHave read %llu from '%s' (of size %llu)",read,filename, +// MSG_file_get_size(file)); +// +// /* rewind once again to the beginning of the file */ +// XBT_INFO("\tComing back to the beginning of the stream for file '%s'", +// filename); +// MSG_file_seek(file, 0, SEEK_SET); +// +// /* Write 110KB in file from the current position, i.e, end of file or 10MB */ +// write = MSG_file_write(file, 110000); +// XBT_INFO("\tHave written %llu in '%s'. Size now is: %llu", write,filename, +// MSG_file_get_size(file)); +// +// XBT_INFO("\tCapacity of the storage element '%s' is stored on: %llu / %llu", +// filename, MSG_storage_get_used_size(st), MSG_storage_get_size(st)); +// +// XBT_INFO("\tClose file '%s'",filename); +// MSG_file_close(file); +// +// +// return 0; +//} + +int main(int argc, char **argv) +{ + int res; + + MSG_init(&argc, argv); + MSG_create_environment(argv[1]); + MSG_function_register("host", host); + MSG_launch_application(argv[2]); + + res = MSG_main(); + + XBT_INFO("Simulation time %g", MSG_get_clock()); + if (res == MSG_OK) + return 0; + else + return 1; +}