X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/02f267e2895f3985fe73344a8b96ac05363b8b62..9692d43fa911bdc2d6d0263a3cb3e22d5e3167fe:/src/mc/mc_protocol.h diff --git a/src/mc/mc_protocol.h b/src/mc/mc_protocol.h index 70fcbbf3ae..3e1da82718 100644 --- a/src/mc/mc_protocol.h +++ b/src/mc/mc_protocol.h @@ -4,10 +4,12 @@ /* 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. */ -#ifndef MC_PROTOCOL_H -#define MC_PROTOCOL_H +#ifndef SIMGRID_MC_PROTOCOL_H +#define SIMGRID_MC_PROTOCOL_H -#include +#include + +#include #include "mc/datatypes.h" @@ -18,30 +20,28 @@ SG_BEGIN_DECL() /** Environment variable name set by `simgrid-mc` to enable MC support in the * children MC processes */ -#define MC_ENV_VARIABLE "SIMGRIC_MC" +#define MC_ENV_VARIABLE "SIMGRID_MC" /** Environment variable name used to pass the communication socket */ #define MC_ENV_SOCKET_FD "SIMGRID_MC_SOCKET_FD" -// ***** MC mode - -typedef enum { - MC_MODE_NONE = 0, - MC_MODE_STANDALONE, - MC_MODE_CLIENT, - MC_MODE_SERVER -} e_mc_mode_t; - -extern e_mc_mode_t mc_mode; - // ***** Messages typedef enum { - MC_MESSAGE_NONE = 0, - MC_MESSAGE_HELLO = 1, - MC_MESSAGE_CONTINUE = 2, - MC_MESSAGE_IGNORE_REGION = 3, - MC_MESSAGE_IGNORE_MEMORY = 4, + MC_MESSAGE_NONE, + MC_MESSAGE_CONTINUE, + MC_MESSAGE_IGNORE_HEAP, + MC_MESSAGE_UNIGNORE_HEAP, + MC_MESSAGE_IGNORE_MEMORY, + MC_MESSAGE_STACK_REGION, + MC_MESSAGE_REGISTER_SYMBOL, + MC_MESSAGE_DEADLOCK_CHECK, + MC_MESSAGE_DEADLOCK_CHECK_REPLY, + MC_MESSAGE_WAITING, + MC_MESSAGE_SIMCALL_HANDLE, + MC_MESSAGE_ASSERTION_FAILED, + // MCer request to finish the restoration: + MC_MESSAGE_RESTORE, } e_mc_message_type; #define MC_MESSAGE_LENGTH 512 @@ -58,24 +58,69 @@ typedef enum { * This is the basic structure shared by all messages: all message start with a message * type. */ -typedef struct s_mc_message { +struct s_mc_message { + e_mc_message_type type; +}; +typedef struct s_mc_message s_mc_message_t; +typedef struct s_mc_message* mc_message_t; + +struct s_mc_int_message { e_mc_message_type type; -} s_mc_message_t, *mc_message_t; + uint64_t value; +}; +typedef struct s_mc_int_message s_mc_int_message_t; +typedef struct s_mc_int_message* mc_int_message_t; -typedef struct s_mc_ignore_region_message { +struct s_mc_ignore_heap_message { e_mc_message_type type; - s_mc_heap_ignore_region_t region; -} s_mc_ignore_region_message_t, *mc_ignore_region_message_t; + int block; + int fragment; + void *address; + size_t size; +}; +typedef struct s_mc_ignore_heap_message s_mc_ignore_heap_message_t; +typedef struct s_mc_ignore_heap_message* mc_ignore_heap_message_t; -typedef struct s_mc_ignore_memory_message { +struct s_mc_ignore_memory_message { e_mc_message_type type; - void *addr; + uint64_t addr; size_t size; -} s_mc_ignore_memory_message_t, *mc_ignore_memory_message_t; +}; +typedef struct s_mc_ignore_memory_message s_mc_ignore_memory_message_t; +typedef struct s_mc_ignore_memory_message* mc_ignore_memory_message_t; + +struct s_mc_stack_region_message { + e_mc_message_type type; + s_stack_region_t stack_region; +}; +typedef struct s_mc_stack_region_message s_mc_stack_region_message_t; +typedef struct s_mc_stack_region_message* mc_stack_region_message_t; + +struct s_mc_simcall_handle_message { + e_mc_message_type type; + unsigned long pid; + int value; +}; +typedef struct s_mc_simcall_handle_message s_mc_simcall_handle_message_t; +typedef struct s_mc_simcall_handle_message* mc_simcall_handle_message; + +struct s_mc_register_symbol_message { + e_mc_message_type type; + char name[128]; + int (*callback)(void*); + void* data; +}; +typedef struct s_mc_register_symbol_message s_mc_register_symbol_message_t; +typedef struct s_mc_register_symbol_message* mc_register_symbol_message_t; + +struct s_mc_restore_message { + e_mc_message_type type; + int index; +}; +typedef struct s_mc_restore_message s_mc_restore_message_t; +typedef struct s_mc_restore_message* mc_restore_message_t; -int MC_protocol_send(int socket, void* message, size_t size); -int MC_protocol_send_simple_message(int socket, int type); -int MC_protocol_hello(int socket); +XBT_PRIVATE const char* MC_message_type_name(e_mc_message_type type); SG_END_DECL()