ssg-internal.h 1.29 KB
Newer Older
1 2 3 4 5
/*
 * Copyright (c) 2016 UChicago Argonne, LLC
 *
 * See COPYRIGHT in top-level directory.
 */
Jonathan Jenkins's avatar
Jonathan Jenkins committed
6
#pragma once
Shane Snyder's avatar
Shane Snyder committed
7 8 9

#include <mercury.h>
#include <abt.h>
Jonathan Jenkins's avatar
Jonathan Jenkins committed
10
#include <margo.h>
11
#include <ssg.h>
12

13 14
#if USE_SWIM_FD
#include "swim-fd/swim-fd.h"
15
#endif
Jonathan Jenkins's avatar
Jonathan Jenkins committed
16

Shane Snyder's avatar
Shane Snyder committed
17 18 19 20 21 22 23 24 25 26 27 28 29
// debug printing macro for SSG
#ifdef DEBUG
#define SSG_DEBUG(__s, __fmt, ...) do { \
    double __now = ABT_get_wtime(); \
    fprintf(__s->dbg_strm, "%.6lf <%d>: " __fmt, \
        __now, __s->view.self_rank, ## __VA_ARGS__); \
    fflush(__s->dbg_strm); \
} while(0)
#else
#define SSG_DEBUG(__s, __fmt, ...) do { \
} while(0)
#endif

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
typedef struct ssg_view ssg_view_t;
typedef struct ssg_member_state ssg_member_state_t;

struct ssg_view
{
    int self_rank;
    int group_size;
    ssg_member_state_t *member_states;
};

struct ssg_member_state
{
    ssg_member_status_t status;
    hg_addr_t addr;
    char *addr_str;
};

Jonathan Jenkins's avatar
Jonathan Jenkins committed
47 48
struct ssg
{
49
    margo_instance_id mid;
Shane Snyder's avatar
Shane Snyder committed
50
    ssg_view_t view; // TODO: we probably need to protect access to this structure at very least
51 52 53 54 55
    void *addr_str_buf;
    int addr_str_buf_size;
#if USE_SWIM_FD
    swim_context_t *swim_ctx;
#endif
Shane Snyder's avatar
Shane Snyder committed
56 57 58
#ifdef DEBUG
    FILE *dbg_strm;
#endif
59
#if 0
Jonathan Jenkins's avatar
Jonathan Jenkins committed
60 61 62 63 64 65
    hg_id_t barrier_rpc_id;
    int barrier_id;
    int barrier_count;
    ABT_mutex barrier_mutex;
    ABT_cond  barrier_cond;
    ABT_eventual barrier_eventual;
66
#endif
Jonathan Jenkins's avatar
Jonathan Jenkins committed
67
};