DMTCP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Classes | Macros | Typedefs | Enumerations | Functions
dmtcp-test.h File Reference
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <dlfcn.h>

Go to the source code of this file.

Classes

union  _DmtcpEventData_t
 
struct  DmtcpUniqueProcessId
 

Macros

#define __USE_GNU_NOT_SET
 
#define __USE_GNU
 
#define EXTERNC
 
#define VOID   void
 
#define LIB_PRIVATE   __attribute__ ((visibility ("hidden")))
 
#define dmtcp_is_enabled()   (dmtcp_is_enabled ? dmtcp_is_enabled() : 0)
 
#define dmtcp_checkpoint()   (dmtcp_checkpoint ? dmtcp_checkpoint() : DMTCP_NOT_PRESENT)
 
#define dmtcp_disable_ckpt()   (dmtcp_disable_ckpt ? dmtcp_disable_ckpt() : DMTCP_NOT_PRESENT)
 
#define dmtcp_enable_ckpt()   (dmtcp_enable_ckpt ? dmtcp_enable_ckpt() : DMTCP_NOT_PRESENT)
 
#define dmtcp_get_coordinator_status(p, r)
 
#define dmtcp_get_local_status(c, r)   (dmtcp_get_local_status ? dmtcp_get_local_status(c,r) : DMTCP_NOT_PRESENT)
 
#define dmtcp_process_event(e, d)   __REPLACE_dmtcp_process_event_WITH_dmtcp_event_hook()__
 
#define DMTCP_PLUGIN_DISABLE_CKPT()   int __dmtcp_plugin_ckpt_disabled = dmtcp_plugin_disable_ckpt()
 
#define DMTCP_PLUGIN_ENABLE_CKPT()   if (__dmtcp_plugin_ckpt_disabled) dmtcp_plugin_enable_ckpt()
 
#define NEXT_FNC(func)
 
#define DMTCP_AFTER_CHECKPOINT   1
 
#define DMTCP_AFTER_RESTART   2
 
#define DMTCP_NOT_PRESENT   3
 
#define dmtcp_get_ckpt_filename()   (dmtcp_get_ckpt_filename ? dmtcp_get_ckpt_filename() : NULL)
 
#define dmtcp_get_uniquepid_str()   (dmtcp_get_uniquepid_str ? dmtcp_get_uniquepid_str() : NULL)
 

Typedefs

typedef enum eDmtcpEvent DmtcpEvent_t
 
typedef union _DmtcpEventData_t DmtcpEventData_t
 
typedef struct DmtcpUniqueProcessId DmtcpUniqueProcessId
 
typedef void(* dmtcp_fnptr_t )(void)
 Pointer to a "void foo();" function. More...
 

Enumerations

enum  eDmtcpEvent {
  DMTCP_EVENT_INIT, DMTCP_EVENT_EXIT, DMTCP_EVENT_PRE_EXEC, DMTCP_EVENT_POST_EXEC,
  DMTCP_EVENT_ATFORK_PREPARE, DMTCP_EVENT_ATFORK_PARENT, DMTCP_EVENT_ATFORK_CHILD, DMTCP_EVENT_WAIT_FOR_SUSPEND_MSG,
  DMTCP_EVENT_THREADS_SUSPEND, DMTCP_EVENT_LEADER_ELECTION, DMTCP_EVENT_DRAIN, DMTCP_EVENT_WRITE_CKPT,
  DMTCP_EVENT_RESTART, DMTCP_EVENT_RESUME, DMTCP_EVENT_REGISTER_NAME_SERVICE_DATA, DMTCP_EVENT_SEND_QUERIES,
  DMTCP_EVENT_REFILL, DMTCP_EVENT_THREADS_RESUME, DMTCP_EVENT_PRE_SUSPEND_USER_THREAD, DMTCP_EVENT_RESUME_USER_THREAD,
  DMTCP_EVENT_THREAD_START, DMTCP_EVENT_THREAD_CREATED, DMTCP_EVENT_PTHREAD_START, DMTCP_EVENT_PTHREAD_EXIT,
  DMTCP_EVENT_PTHREAD_RETURN, nDmtcpEvents
}
 

Functions

EXTERNC int dmtcp_unique_pids_equal (DmtcpUniqueProcessId a, DmtcpUniqueProcessId b)
 
EXTERNC int dmtcp_is_enabled (VOID) __attribute((weak))
 
EXTERNC int dmtcp_checkpoint (VOID) __attribute__((weak))
 
EXTERNC int dmtcp_disable_ckpt (VOID) __attribute__((weak))
 
EXTERNC int dmtcp_enable_ckpt (VOID) __attribute__((weak))
 
EXTERNC void dmtcp_event_hook (DmtcpEvent_t event, DmtcpEventData_t *data) __attribute((weak))
 
EXTERNC int dmtcp_send_key_val_pair_to_coordinator (const char *id, const void *key, uint32_t key_len, const void *val, uint32_t val_len)
 
EXTERNC int dmtcp_send_key_val_pair_to_coordinator_sync (const char *id, const void *key, uint32_t key_len, const void *val, uint32_t val_len)
 
EXTERNC int dmtcp_send_query_to_coordinator (const char *id, const void *key, uint32_t key_len, void *val, uint32_t *val_len)
 
EXTERNC void dmtcp_get_local_ip_addr (struct in_addr *in)
 
EXTERNC const char * dmtcp_get_tmpdir (void)
 
EXTERNC const char * dmtcp_get_ckpt_dir (void)
 
EXTERNC void dmtcp_set_ckpt_dir (const char *)
 
EXTERNC const char * dmtcp_get_coord_ckpt_dir (void)
 
EXTERNC void dmtcp_set_coord_ckpt_dir (const char *dir)
 
EXTERNC const char * dmtcp_get_ckpt_files_subdir (void)
 
EXTERNC int dmtcp_should_ckpt_open_files (void)
 
EXTERNC int dmtcp_get_ckpt_signal (void)
 
EXTERNC const char * dmtcp_get_computation_id_str (void)
 
EXTERNC uint64_t dmtcp_get_coordinator_timestamp (void)
 
EXTERNC uint32_t dmtcp_get_generation (void) __attribute__((weak))
 
EXTERNC int checkpoint_is_pending (void) __attribute__((weak))
 
EXTERNC int dmtcp_get_coordinator_status (int *numPeers, int *isRunning) __attribute__((weak))
 
EXTERNC int dmtcp_get_local_status (int *numCheckpoints, int *numRestarts) __attribute__((weak))
 
EXTERNC int dmtcp_is_running_state (void)
 
EXTERNC int dmtcp_get_restart_env (const char *name, char *value, size_t maxvaluelen)
 
EXTERNC const char * dmtcp_get_executable_path ()
 
EXTERNC int dmtcp_no_coordinator (void)
 
EXTERNC int dmtcp_is_initializing_wrappers (void)
 
EXTERNC void dmtcp_prepare_wrappers (void) __attribute((weak))
 
EXTERNC int dmtcp_is_protected_fd (int fd)
 
EXTERNC DmtcpUniqueProcessId dmtcp_get_uniquepid ()
 
EXTERNC DmtcpUniqueProcessId dmtcp_get_coord_id ()
 
EXTERNC DmtcpUniqueProcessId dmtcp_get_computation_id ()
 
EXTERNC int dmtcp_get_ptrace_fd (void)
 
EXTERNC int dmtcp_get_readlog_fd (void)
 
EXTERNC void dmtcp_block_ckpt_signal (void)
 
EXTERNC void dmtcp_unblock_ckpt_signal (void)
 
EXTERNC void * dmtcp_get_libc_dlsym_addr (void)
 
EXTERNC void dmtcp_close_protected_fd (int fd)
 
EXTERNC int dmtcp_protected_environ_fd (void)
 
EXTERNC pid_t dmtcp_real_to_virtual_pid (pid_t realPid) __attribute((weak))
 
EXTERNC pid_t dmtcp_virtual_to_real_pid (pid_t virtualPid) __attribute((weak))
 
EXTERNC int dmtcp_is_bq_file (const char *path) __attribute((weak))
 
EXTERNC int dmtcp_bq_should_ckpt_file (const char *path, int *type) __attribute((weak))
 
EXTERNC int dmtcp_bq_restore_file (const char *path, const char *savedFilePath, int fcntlFlags, int type) __attribute((weak))
 
EXTERNC int dmtcp_must_ckpt_file (const char *path) __attribute((weak))
 
EXTERNC void dmtcp_get_new_file_path (const char *abspath, const char *cwd, char *newpath) __attribute((weak))
 
EXTERNC int dmtcp_plugin_disable_ckpt (void)
 
EXTERNC void dmtcp_plugin_enable_ckpt (void)
 

Macro Definition Documentation

#define __USE_GNU

Definition at line 25 of file dmtcp-test.h.

#define __USE_GNU_NOT_SET

Definition at line 24 of file dmtcp-test.h.

#define DMTCP_AFTER_CHECKPOINT   1

Definition at line 347 of file dmtcp-test.h.

#define DMTCP_AFTER_RESTART   2

Definition at line 349 of file dmtcp-test.h.

#define dmtcp_checkpoint ( )    (dmtcp_checkpoint ? dmtcp_checkpoint() : DMTCP_NOT_PRESENT)

Definition at line 134 of file dmtcp-test.h.

#define dmtcp_disable_ckpt ( )    (dmtcp_disable_ckpt ? dmtcp_disable_ckpt() : DMTCP_NOT_PRESENT)

Definition at line 147 of file dmtcp-test.h.

#define dmtcp_enable_ckpt ( )    (dmtcp_enable_ckpt ? dmtcp_enable_ckpt() : DMTCP_NOT_PRESENT)

Definition at line 156 of file dmtcp-test.h.

EXTERNC const char * dmtcp_get_ckpt_filename ( )    (dmtcp_get_ckpt_filename ? dmtcp_get_ckpt_filename() : NULL)

Definition at line 355 of file dmtcp-test.h.

#define dmtcp_get_coordinator_status (   p,
 
)
#define dmtcp_get_local_status (   c,
 
)    (dmtcp_get_local_status ? dmtcp_get_local_status(c,r) : DMTCP_NOT_PRESENT)

Definition at line 239 of file dmtcp-test.h.

EXTERNC const char * dmtcp_get_uniquepid_str ( )    (dmtcp_get_uniquepid_str ? dmtcp_get_uniquepid_str() : NULL)

Definition at line 358 of file dmtcp-test.h.

#define dmtcp_is_enabled ( )    (dmtcp_is_enabled ? dmtcp_is_enabled() : 0)

Definition at line 122 of file dmtcp-test.h.

#define DMTCP_NOT_PRESENT   3

Definition at line 352 of file dmtcp-test.h.

#define DMTCP_PLUGIN_DISABLE_CKPT ( )    int __dmtcp_plugin_ckpt_disabled = dmtcp_plugin_disable_ckpt()

Definition at line 310 of file dmtcp-test.h.

#define DMTCP_PLUGIN_ENABLE_CKPT ( )    if (__dmtcp_plugin_ckpt_disabled) dmtcp_plugin_enable_ckpt()

Definition at line 314 of file dmtcp-test.h.

#define dmtcp_process_event (   e,
 
)    __REPLACE_dmtcp_process_event_WITH_dmtcp_event_hook()__

Definition at line 305 of file dmtcp-test.h.

#define EXTERNC

Definition at line 37 of file dmtcp-test.h.

#define LIB_PRIVATE   __attribute__ ((visibility ("hidden")))

Definition at line 48 of file dmtcp-test.h.

#define NEXT_FNC (   func)
Value:
({ \
static __typeof__(&func) _real_##func = (__typeof__(&func)) -1; \
if (_real_##func == (__typeof__(&func)) -1) { \
if (dmtcp_prepare_wrappers) dmtcp_prepare_wrappers(); \
__typeof__(&dlsym) dlsym_fnptr; \
dlsym_fnptr = (__typeof__(&dlsym)) dmtcp_get_libc_dlsym_addr(); \
_real_##func = (__typeof__(&func)) (*dlsym_fnptr) (RTLD_NEXT, #func);\
} \
_real_##func;})

Definition at line 318 of file dmtcp-test.h.

#define VOID   void

Definition at line 45 of file dmtcp-test.h.

Typedef Documentation

typedef void(* dmtcp_fnptr_t)(void)

Pointer to a "void foo();" function.

Definition at line 362 of file dmtcp-test.h.

typedef enum eDmtcpEvent DmtcpEvent_t

Enumeration Type Documentation

Enumerator
DMTCP_EVENT_INIT 
DMTCP_EVENT_EXIT 
DMTCP_EVENT_PRE_EXEC 
DMTCP_EVENT_POST_EXEC 
DMTCP_EVENT_ATFORK_PREPARE 
DMTCP_EVENT_ATFORK_PARENT 
DMTCP_EVENT_ATFORK_CHILD 
DMTCP_EVENT_WAIT_FOR_SUSPEND_MSG 
DMTCP_EVENT_THREADS_SUSPEND 
DMTCP_EVENT_LEADER_ELECTION 
DMTCP_EVENT_DRAIN 
DMTCP_EVENT_WRITE_CKPT 
DMTCP_EVENT_RESTART 
DMTCP_EVENT_RESUME 
DMTCP_EVENT_REGISTER_NAME_SERVICE_DATA 
DMTCP_EVENT_SEND_QUERIES 
DMTCP_EVENT_REFILL 
DMTCP_EVENT_THREADS_RESUME 
DMTCP_EVENT_PRE_SUSPEND_USER_THREAD 
DMTCP_EVENT_RESUME_USER_THREAD 
DMTCP_EVENT_THREAD_START 
DMTCP_EVENT_THREAD_CREATED 
DMTCP_EVENT_PTHREAD_START 
DMTCP_EVENT_PTHREAD_EXIT 
DMTCP_EVENT_PTHREAD_RETURN 
nDmtcpEvents 

Definition at line 50 of file dmtcp-test.h.

Function Documentation

EXTERNC int checkpoint_is_pending ( void  )

Definition at line 288 of file dmtcpplugin.cpp.

EXTERNC void dmtcp_block_ckpt_signal ( void  )

Definition at line 435 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_bq_restore_file ( const char *  path,
const char *  savedFilePath,
int  fcntlFlags,
int  type 
)
EXTERNC int dmtcp_bq_should_ckpt_file ( const char *  path,
int *  type 
)
EXTERNC int dmtcp_checkpoint ( VOID  )

Checkpoint the entire distributed computation (Does not necessarily block until checkpoint is complete. Use dmtcp_get_generation() to test if checkpoint is complete.)

  • returns DMTCP_AFTER_CHECKPOINT if the checkpoint succeeded.
  • returns DMTCP_AFTER_RESTART after a restart.
  • returns <=0 on error. See: test/plugin/applic-initiated-ckpt directory for an exammple:
EXTERNC void dmtcp_close_protected_fd ( int  fd)

Definition at line 314 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_disable_ckpt ( VOID  )

Prevent a checkpoint from starting until dmtcp_enable_checkpoint() is called.

  • Has (recursive) lock semantics, only one thread may acquire it at time.
  • Only prevents checkpoints locally, remote processes may be suspended. Thus, send or recv to another checkpointed process may create deadlock.
  • Returns 1 on success, <=0 on error See: test/plugin/applic-delayed-ckpt directory for an exammple:
EXTERNC int dmtcp_enable_ckpt ( VOID  )

Re-allow checkpoints, opposite of dmtcp_disable_checkpoint().

  • Returns 1 on success, <=0 on error See: test/plugin/applic-delayed-ckpt directory for an exammple:
EXTERNC void dmtcp_event_hook ( DmtcpEvent_t  event,
DmtcpEventData_t data 
)

Definition at line 42 of file ipc.cpp.

EXTERNC const char* dmtcp_get_ckpt_dir ( void  )

Definition at line 179 of file dmtcpplugin.cpp.

EXTERNC const char* dmtcp_get_ckpt_files_subdir ( void  )

Definition at line 219 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_get_ckpt_signal ( void  )

Definition at line 50 of file dmtcpnohijackstubs.cpp.

EXTERNC DmtcpUniqueProcessId dmtcp_get_computation_id ( )

Definition at line 74 of file dmtcpnohijackstubs.cpp.

EXTERNC const char* dmtcp_get_computation_id_str ( void  )

Definition at line 254 of file dmtcpplugin.cpp.

EXTERNC const char* dmtcp_get_coord_ckpt_dir ( void  )

Definition at line 193 of file dmtcpplugin.cpp.

EXTERNC DmtcpUniqueProcessId dmtcp_get_coord_id ( )

Definition at line 264 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_get_coordinator_status ( int *  numPeers,
int *  isRunning 
)

Gets the coordinator-specific status of DMTCP.

  • Returns 0 on success and -1 on error.

Args: numPeers: Number of processes connected to dmtcp_coordinator isRunning: 1 if all processes connected to dmtcp_coordinator are in a running state

Definition at line 133 of file dmtcpplugin.cpp.

EXTERNC uint64_t dmtcp_get_coordinator_timestamp ( void  )

Definition at line 278 of file dmtcpplugin.cpp.

EXTERNC const char* dmtcp_get_executable_path ( )

Definition at line 231 of file dmtcpplugin.cpp.

EXTERNC uint32_t dmtcp_get_generation ( void  )

Definition at line 283 of file dmtcpplugin.cpp.

EXTERNC void* dmtcp_get_libc_dlsym_addr ( void  )

Definition at line 408 of file dmtcpplugin.cpp.

EXTERNC void dmtcp_get_local_ip_addr ( struct in_addr *  in)

Definition at line 494 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_get_local_status ( int *  numCheckpoints,
int *  numRestarts 
)

Queries local state of this process, not global state seen by DMTCP coord.

  • Returns 0 on success and -1 on error.

Args: numCheckpoints: The number of times this process has been checkpointed (excludes restarts) numRestarts: The number of times this process has been restarted

Definition at line 140 of file dmtcpplugin.cpp.

EXTERNC void dmtcp_get_new_file_path ( const char *  abspath,
const char *  cwd,
char *  newpath 
)
EXTERNC int dmtcp_get_ptrace_fd ( void  )

Definition at line 401 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_get_readlog_fd ( void  )

Definition at line 396 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_get_restart_env ( const char *  name,
char *  value,
size_t  maxvaluelen 
)

Definition at line 329 of file dmtcpplugin.cpp.

EXTERNC const char* dmtcp_get_tmpdir ( void  )

Definition at line 56 of file dmtcpnohijackstubs.cpp.

EXTERNC DmtcpUniqueProcessId dmtcp_get_uniquepid ( )

Definition at line 69 of file dmtcpnohijackstubs.cpp.

EXTERNC int dmtcp_is_bq_file ( const char *  path)
EXTERNC int dmtcp_is_enabled ( VOID  )

Returns 1 if executing under dmtcp_launch, 0 otherwise See: test/plugin/applic-initiated-ckpt and applic-delayed-ckpt directories for exammples:

EXTERNC int dmtcp_is_initializing_wrappers ( void  )

Definition at line 299 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_is_protected_fd ( int  fd)

Definition at line 86 of file dmtcpnohijackstubs.cpp.

EXTERNC int dmtcp_is_running_state ( void  )

Definition at line 80 of file dmtcpnohijackstubs.cpp.

EXTERNC int dmtcp_must_ckpt_file ( const char *  path)
EXTERNC int dmtcp_no_coordinator ( void  )

Definition at line 92 of file dmtcpnohijackstubs.cpp.

EXTERNC int dmtcp_plugin_disable_ckpt ( void  )

Definition at line 565 of file threadsync.cpp.

EXTERNC void dmtcp_plugin_enable_ckpt ( void  )

Definition at line 571 of file threadsync.cpp.

EXTERNC void dmtcp_prepare_wrappers ( void  )

Definition at line 145 of file dmtcpworker.cpp.

EXTERNC int dmtcp_protected_environ_fd ( void  )

Definition at line 309 of file dmtcpplugin.cpp.

EXTERNC pid_t dmtcp_real_to_virtual_pid ( pid_t  realPid)

Definition at line 39 of file pid.cpp.

EXTERNC int dmtcp_send_key_val_pair_to_coordinator ( const char *  id,
const void *  key,
uint32_t  key_len,
const void *  val,
uint32_t  val_len 
)

Definition at line 461 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_send_key_val_pair_to_coordinator_sync ( const char *  id,
const void *  key,
uint32_t  key_len,
const void *  val,
uint32_t  val_len 
)

Definition at line 471 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_send_query_to_coordinator ( const char *  id,
const void *  key,
uint32_t  key_len,
void *  val,
uint32_t *  val_len 
)

Definition at line 486 of file dmtcpplugin.cpp.

EXTERNC void dmtcp_set_ckpt_dir ( const char *  )

Definition at line 186 of file dmtcpplugin.cpp.

EXTERNC void dmtcp_set_coord_ckpt_dir ( const char *  dir)

Definition at line 200 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_should_ckpt_open_files ( void  )

Definition at line 226 of file dmtcpplugin.cpp.

EXTERNC void dmtcp_unblock_ckpt_signal ( void  )

Definition at line 448 of file dmtcpplugin.cpp.

EXTERNC int dmtcp_unique_pids_equal ( DmtcpUniqueProcessId  a,
DmtcpUniqueProcessId  b 
)

Definition at line 269 of file dmtcpplugin.cpp.

EXTERNC pid_t dmtcp_virtual_to_real_pid ( pid_t  virtualPid)

Definition at line 45 of file pid.cpp.