From: Arnaud Giersch Date: Fri, 23 Nov 2012 14:15:45 +0000 (+0100) Subject: Eradicate gras further. X-Git-Tag: v3_9_rc1~91^2~43 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/b5101cdb8dddc91bb762085d97803f51360e4768 Eradicate gras further. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index ad5b8da83c..2ed2fea4f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,7 +56,6 @@ else() set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}.${SIMGRID_VERSION_PATCH}") endif() set(libsimgrid_version "${release_version}") -set(libgras_version "${release_version}") set(libsmpi_version "${release_version}") set(GCC_NEED_VERSION "4.0") set(APPLE_NEED_GCC_VERSION "4.6") diff --git a/README.IEEE b/README.IEEE deleted file mode 100644 index b0141b0f49..0000000000 --- a/README.IEEE +++ /dev/null @@ -1,29 +0,0 @@ - -Snippet of http://www.math.utah.edu/pub/zsh/README.NONSTOP-FP: - ->>>>> -Although IEEE 754 was not adopted until mid-1985, published drafts -were available several years earlier. The first implementation was -the Intel 8087 on which the original IBM PC was based in 1981. Since -then, Intel IA-32 (formerly x86), i860, i960 and IA-64, Convex, -HP/Compaq/DEC Alpha, HP PA-RISC, IBM Power and PowerPC, Motorola 68K -and 88K, SGI MIPS, Sun SPARC, and most other CPUs (even on embedded -systems) with floating-point point support adhere to at least part of -the IEEE 754 specification. All Cray supercomputers manufactured -since the early 1990s have used IEEE 754 arithmetic. The only -non-IEEE-754 desktop (and larger) CPUs built since the mid-1980s have -been the Compaq/DEC VAX (now obsolete), and the venerable IBM S/360 -architecture first introduced in 1964. However, in 1998, IBM added -the G5 processor boards on System/390 (Z series) with full IEEE 754 -support (including 128-bit quadruple precision in hardware), and -GNU/Linux on that system uses only IEEE 754 arithmetic (even though -the S/360 arithmetic is available, the GNU/Linux compilers and library -don't support it). - -In addition to CPUs, the Java Virtual Machine specification mandates a -subset of IEEE 754 arithmetic. -<<<<< - -In conclusion, GRAS don't bother testing whether the architecture is IEEE -compliant. It may change when I encounter such a beast, but I'm not sure it -will ever happen. diff --git a/README.coding b/README.coding index 791d365839..481dfe9338 100644 --- a/README.coding +++ b/README.coding @@ -3,18 +3,13 @@ ** ****************************************************** -There is at least 5 sub-projects in the tree: +There is at least 4 sub-projects in the tree: - XBT: eXtended Bundle of Tools (low-level toolbox: logging, datatypes). - SURF: a SimUlation aRtiFact. This is the simulation kernel. - MSG: originally MetaSimGrid, MSG is a simple distributed application simulator. - - GRAS: Grid Reality And Simulation (message passing API with two - implementations allowing to compile programs on top of the - simulator or for the real life without code modification) - - AMOK: Advanced Metacomputing Overlay Kit (high level toolbox; Grid - application elements such as distributed database, topology - discovery service, and so on) + - SMPI: Simulated MPI, to run MPI application using emulation technics. They are all in the same tree because they are complementary tools and having all of them in the same package makes the installation easier @@ -24,24 +19,6 @@ eases the development. The tree is not splited on projects, but on file finality: include/ -> all *public* headers include/xbt/*.h -> one file per module - include/gras.h -> file including all modules headers - (same for xbt instead of gras) - - src/Makefile.am -> main makefile. All projects should fit in only one - library (I mean 2, RL+SG), which is compiled here. - - Since all object.o files are placed here, you should - choose the name of c files carfully to avoid - conflict. - - src/gras/DataDesc -> typical project module - src/gras/DataDesc/datadesc_interface.h -> visible to any GRAS modules; - masked to the user and GROS/AMOK/SURF - src/gras/DataDesc/datadesc_private.h -> visible only from this module - - So, the modules have 3 levels of publicity for their interface. - Private, internal to GRAS, public. Of course, I try to keep as much stuff - private as possible. src/include -> another location for protected headers. Used by SURF, and other should be converted, since this is the Right Thing. @@ -50,10 +27,7 @@ The tree is not splited on projects, but on file finality: Same organization than src/ and include/ Tests are allowed to load some headers of the module they test. All tests should be listed in run_test.in so that they get - run on 'make check'. - They are not listed directly in the check_PROGRAMS part of - the makefile because run_test knows about the gras logging - features and relaunch with full details the failed tests. + run on 'make check'. examples/ -> Supposed to be copy/pastable by the user, so keep it clear and avoid any kind of trick. In particular, do only include the @@ -78,7 +52,7 @@ FIXME: this list of arguments is still to be discussed, maybe ***************************************************** It may sound strange, but the type naming convention was source of intense -discution between da GRAS posse members. The convention we came to may not +discution between da SimGrid posse members. The convention we came to may not be the best solution, but it has the merit to exist and leave everyone work. So please stick to it. @@ -128,7 +102,7 @@ PRINTF pointer difference The global structure of the documentation is in doc/modules.doc -The structure of each module (xbt, gras, etc) is in doc/module-.doc +The structure of each module (xbt, msg, etc) is in doc/module-.doc The structure of a module is in its public header. This way, you're sure to see all the public interface (and only it). The different parts of the @@ -144,7 +118,7 @@ The documentation of each function must be in the C file were it lives. Any public element (function, type and macro) must have a @brief part. ** -** XBT virtualization mecanism +** XBT virtualization mecanism (FIXME:this section is deprecated) ** **************************************************** diff --git a/SPEC b/SPEC deleted file mode 100644 index 8e01652089..0000000000 --- a/SPEC +++ /dev/null @@ -1,34 +0,0 @@ -Here are some elements of specification of the GRAS protocol. It is not -supposed to have several implementations, but once version 1 will be out, -all versions of GRAS are supposed to be able to communicate with previous -ones. - -All messages have an header and a payload. Here is the header format, -considering it as an array of chars. - -HEADER: Transport layer -msg[0...3]: the string 'GRAS' -msg[4]: protocol version (currently '0') - -HEADER: Messaging layer - -msg[5]: discriminent = Archi & msg type & Flags - D & 248 << 3 : archi (datasize, alignment, endianess) of message emitter - (32 possibles; 5 known so far) - D & 7 : Type of message: - 0: one-way message - 1: method call (answer expected) - - 2: successful return (usual datatype attached as payload) - 3: error return (payload = remoterr) - - 4..7: idem, with group communication (ask for forward) - list of receivers (and path for answer) placed before the - payload - -msg[6..8]: message serial (for answers; omitted for one-ways) - short in binary encoding (loop every 65536) -msg[9..]: message name (string in the binary encoding) - -PAYLOAD: in the binary encoding - diff --git a/TODO b/TODO index 9176059a3f..84ce366150 100644 --- a/TODO +++ b/TODO @@ -14,17 +14,12 @@ ### Ongoing stuff ### -Document the fact that gras processes display the backtrace on sigusr and sigint Document host module /* FIXME: better place? */ int vasprintf (char **ptr, const char *fmt, va_list ap); char *bprintf(const char*fmt, ...) _XBT_GNUC_PRINTF(1,2); - -gras_socket_close should be blocking until all the data sent have been -received by the other side (implemented with an ACK mechanism). - ### ### Planned ### @@ -66,92 +61,3 @@ received by the other side (implemented with an ACK mechanism). * Some of the datacontainer modules seem to overlap. Kill some of them? - replace fifo with dynars - replace set with SWAG - -* -* GRAS -****** - -[doc] - * implement the P2P protocols that macedon does. They constitute great - examples, too - -[transport] - * use poll(2) instead of select(2) when available. (first need to check - the advantage of doing so ;) - - Another idea we spoke about was to simulate this feature with a bunch of - threads blocked in a read(1) on each incoming socket. The latency is - reduced by the cost of a syscall, but the more I think about it, the - less I find the idea adapted to our context. - - * timeout the send/recv too (hard to do in RL) - * Adaptative timeout - * multiplex on incoming SOAP over HTTP (once datadesc can deal with it) - - * The module syntax/API is too complex. - - Everybody opens a server socket (or almost), and nobody open two of - them. This should be done automatically without user intervention. - - I'd like to offer the possibility to speak to someone, not to speak on - a socket. Users shouldn't care about such technical details. - - the idea of host_cookie in NWS seem to match my needs, but we still - need a proper name ;) - - this would allow to exchange a "socket" between peer :) - - the creation needs to identify the peer actor within the process - - * when a send failed because the socket was closed on the other side, - try to reopen it seamlessly. Needs exceptions or another way to - differentiate between the several system_error. - * cache accepted sockets and close the old ones after a while. - Depends on the previous item; difficult to achieve with firewalls - -[datadesc] - * Add a XML wire protocol alongside to the binary one (for SOAP/HTTP) - * cbps: - - Error handling - - Regression tests - * Inter-arch conversions - - Port to ARM - - Convert in the same buffer when size increase - - Exchange (on net) structures in one shoot when possible. - * datadesc_set_cste: give the value by default when receiving. - - It's not transfered anymore, which is good for functions pointer. - * Parsing macro - - Cleanup the code (bison?) - - Factorize code in union/struct field adding - - Handle typedefs (gras_datatype_copy can be usefull, but only if - main type is already defined) - - Handle unions with annotate - - Handle enum - - Handle long long and long double - - Forbid "char", allow "signed char" and "unsigned char", or user code won't be - portable to ARM, at least. - - Handle struct/union/enum embeeded within another container - (needs modifications in DataDesc, too) - - - Check short a, b; - - Check short *** - - Check struct { struct { int a } b; } - -[Messaging] - * Other message types than oneway & RPC are possible: - - forwarding request, group communication - * Message priority - * Message forwarding - * Group communication - * Message declarations in a tree manner (such as log channels)? - -[Other, more general issues] - * watchdog in RL (ie, while (1) { fork; exec the child, wait in father }) - * Allow [homogeneous] dico to be sent - * Make GRAS thread safe by mutexing what needs to be - -* -* AMOK -****** - -[bandwidth] - * add a version guessing the appropriate datasizes automatically -[other modules] - * log control, management, dynamic token ring - * a way using SSH to ask a remote host to open a socket back on me - diff --git a/include/xbt/misc.h b/include/xbt/misc.h index 529bfc6365..a3062a15be 100644 --- a/include/xbt/misc.h +++ b/include/xbt/misc.h @@ -1,4 +1,4 @@ -/* xbt.h - Public interface to the xbt (gras's toolbox) */ +/* xbt.h - Public interface to the xbt (simgrid's toolbox) */ /* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team. * All rights reserved. */ diff --git a/src/xbt/ex_interface.h b/src/xbt/ex_interface.h index f1ebf47e87..ca34f34360 100644 --- a/src/xbt/ex_interface.h +++ b/src/xbt/ex_interface.h @@ -1,6 +1,6 @@ /* ex -- exception handling */ /* This file is to loaded in any location defining exception handlers */ -/* (such as context.c) or in gras transport layer, to exchange them. */ +/* (such as context.c), to exchange them. */ /* Copyright (c) 2006, 2007, 2009, 2010. The SimGrid Team. * All rights reserved. */ diff --git a/src/xbt/log.c b/src/xbt/log.c index 161c1cdcc5..4afd337a69 100644 --- a/src/xbt/log.c +++ b/src/xbt/log.c @@ -281,7 +281,7 @@ int main() { Although rarely done, it is possible to configure the logs during program initialization by invoking the xbt_log_control_set() method manually. A more conventional way is to use the --log command line -argument. xbt_init() (called by MSG_init(), gras_init() and friends) +argument. xbt_init() (called by MSG_init() and friends) checks and deals properly with such arguments. \subsection log_use_conf_thres 3.1.1 Threshold configuration