Blame src/mpi/debugger/mpi2_interface.h

Packit Service c5cf8c
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
Packit Service c5cf8c
/*
Packit Service c5cf8c
 *  (C) 2007 by Argonne National Laboratory.
Packit Service c5cf8c
 *      See COPYRIGHT in top-level directory.
Packit Service c5cf8c
 */
Packit Service c5cf8c
/*
Packit Service c5cf8c
 * Prototype of the MPI2 debugger interface
Packit Service c5cf8c
 */
Packit Service c5cf8c
Packit Service c5cf8c
#ifndef MPI2_INTERFACE_H_INCLUDED
Packit Service c5cf8c
#define MPI2_INTERFACE_H_INCLUDED
Packit Service c5cf8c
Packit Service c5cf8c
/* Basic types */
Packit Service c5cf8c
typedef void *MPI2DD_ADDR_T;
Packit Service c5cf8c
typedef int32_t MPI2DD_INT32_T;
Packit Service c5cf8c
typedef uint32_t MPI2DD_UINT32_T;
Packit Service c5cf8c
typedef unsigned char MPI2DD_BYTE_T;
Packit Service c5cf8c
Packit Service c5cf8c
/* Values for debug_state */
Packit Service c5cf8c
#define MPI2DD_DEBUG_START                     1
Packit Service c5cf8c
#define MPI2DD_DEBUG_SPAWN                     2
Packit Service c5cf8c
#define MPI2DD_DEBUG_CONNECT                   3
Packit Service c5cf8c
#define MPI2DD_DEBUG_ACCEPT                    4
Packit Service c5cf8c
#define MPI2DD_DEBUG_JOIN                      5
Packit Service c5cf8c
#define MPI2DD_DEBUG_DIRECTORY_CHANGED         6
Packit Service c5cf8c
#define MPI2DD_DEBUG_METADIRECTORY_CHANGED     7
Packit Service c5cf8c
#define MPI2DD_DEBUG_ABORT                     8
Packit Service c5cf8c
Packit Service c5cf8c
/* Values for debugger_flags */
Packit Service c5cf8c
#define MPI2DD_FLAG_GATE    0x01
Packit Service c5cf8c
#define MPI2DD_FLAG_BEING_DEBUGGED    0x02
Packit Service c5cf8c
#define MPI2DD_FLAG_REQUEST_DIRECTORY_EVENTS 0x04
Packit Service c5cf8c
Packit Service c5cf8c
/* Values for mpi_flags */
Packit Service c5cf8c
#define MPI2DD_MPIFLAG_I_AM_METADIR      0x01
Packit Service c5cf8c
#define MPI2DD_MPIFLAG_I_AM_DIR          0x02
Packit Service c5cf8c
#define MPI2DD_MPIFLAG_I_AM_STARTER      0x04
Packit Service c5cf8c
#define MPI2DD_MPIFLAG_FORCE_TO_MAIN     0x08
Packit Service c5cf8c
#define MPI2DD_MPIFLAG_IGNORE_QUEUE      0x10
Packit Service c5cf8c
#define MPI2DD_MPIFLAG_ACQUIRED_PRE_MAIN 0x20
Packit Service c5cf8c
#define MPI2DD_MPIFLAG_PARTIAL_ATTACH_OK 0x40
Packit Service c5cf8c
Packit Service c5cf8c
/* These structures are defined so that the debugger can find items
Packit Service c5cf8c
   easily, even in the absense of detailed symbol table information,
Packit Service c5cf8c
   since the layout is fixed. */
Packit Service c5cf8c
Packit Service c5cf8c
typedef struct MPI2DD_PROCDESC {
Packit Service c5cf8c
    MPI2DD_ADDR_T host_name;    /* ASCII name of IP address where debugger
Packit Service c5cf8c
                                 * server can run */
Packit Service c5cf8c
    MPI2DD_ADDR_T executable_name;      /* ASCII name of executable */
Packit Service c5cf8c
    MPI2DD_ADDR_T spawn_desc;   /* null if MPI-1, otherwise points to
Packit Service c5cf8c
                                 * MPI2DD_SPAWNDESC structure */
Packit Service c5cf8c
    MPI2DD_ADDR_T comm_world_id;        /* Unique ID for this COMM_WORLD */
Packit Service c5cf8c
    MPI2DD_INT32_T pid;         /* Process ID */
Packit Service c5cf8c
    MPI2DD_INT32_T rank;        /* Rank of process in COMM_WORLD */
Packit Service c5cf8c
} MPI2DD_PROCDESC;
Packit Service c5cf8c
Packit Service c5cf8c
typedef struct MPI2DD_SPAWNDESC {
Packit Service c5cf8c
    MPI2DD_ADDR_T parent_comm_world_id; /* unique id of parent world */
Packit Service c5cf8c
    MPI2DD_INT32_T parent_rank; /* rank of parent in that comm */
Packit Service c5cf8c
    MPI2DD_INT32_T sequence;    /* ordinal of this spawn in the
Packit Service c5cf8c
                                 * spawns of the parent */
Packit Service c5cf8c
} MPI2DD_SPAWNDESC;
Packit Service c5cf8c
Packit Service c5cf8c
typedef struct MPI2DD_INFO {
Packit Service c5cf8c
    MPI2DD_BYTE_T magic[5];     /* the string M P I 2 0x7f */
Packit Service c5cf8c
    MPI2DD_BYTE_T version;      /* 1 for now */
Packit Service c5cf8c
    MPI2DD_BYTE_T variant;      /* 1 for now */
Packit Service c5cf8c
    MPI2DD_BYTE_T debug_state;  /* See defines for MPI2DD_DEBUG_xxx */
Packit Service c5cf8c
    MPI2DD_UINT32_T debugger_flags;     /* See defines under debugger flags */
Packit Service c5cf8c
    MPI2DD_UINT32_T mpi_flags;  /* See defines under mpi flags */
Packit Service c5cf8c
    MPI2DD_ADDR_T dll_name_32;  /* path to msg queue debug lib for
Packit Service c5cf8c
                                 * 32-bit executables */
Packit Service c5cf8c
    MPI2DD_ADDR_T dll_name_64;  /* as above, for 64-bit executables */
Packit Service c5cf8c
    MPI2DD_ADDR_T meta_host_name;       /* network name for metadirectory
Packit Service c5cf8c
                                         * process */
Packit Service c5cf8c
    MPIDDD_ADDR_T meta_executable_name; /* Name of the meta directory
Packit Service c5cf8c
                                         * executable */
Packit Service c5cf8c
    MPI2DD_ADDR_T abort_string; /* Use this string when
Packit Service c5cf8c
                                 * breakpoint is triggered and
Packit Service c5cf8c
                                 * debug state is ABORT */
Packit Service c5cf8c
    MPI2DD_ADDR_T proctable;    /* Null unless directory
Packit Service c5cf8c
                                 * process, then address of
Packit Service c5cf8c
                                 * array of proctable entries */
Packit Service c5cf8c
    MPI2DD_ADDR_T directory_table;      /* Null unless metatdirectory
Packit Service c5cf8c
                                         * process, then address of
Packit Service c5cf8c
                                         * array of directory entries */
Packit Service c5cf8c
    MPI2DD_ADDR_T metadirectory_table;  /* As above, for directory
Packit Service c5cf8c
                                         * entries of metadirectory
Packit Service c5cf8c
                                         * servers */
Packit Service c5cf8c
    MPI2DD_INT32_T proctable_size;      /* size of proctable array */
Packit Service c5cf8c
    MPI2DD_INT32_T directory_size;      /* size of directory array */
Packit Service c5cf8c
    MPI2DD_INT32_T metadirctory_size;   /* size of metadirectory array */
Packit Service c5cf8c
    MPI2DD_INT32_T meta_pid;    /* pid of meta directory process */
Packit Service c5cf8c
    MPI2DD_INT32_T padding[8];  /* for future extensions */
Packit Service c5cf8c
} MPI2DD_INFO;
Packit Service c5cf8c
Packit Service c5cf8c
#endif /* MPI2_INTERFACE_H_INCLUDED */