File: ompi_msgq_dll_defs.h

package info (click to toggle)
openmpi 5.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 202,312 kB
  • sloc: ansic: 612,441; makefile: 42,495; sh: 11,230; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,154; python: 1,856; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (122 lines) | stat: -rw-r--r-- 4,737 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
/*
 * Copyright (c) 2007      Cisco Systems, Inc.  All rights reserved.
 * Copyright (c) 2004-2007 The University of Tennessee and The University
 *                         of Tennessee Research Foundation.  All rights
 *                         reserved.
 * Copyright (c) 2015      Los Alamos National Security, LLC.  All rights
 *                         reserved.
 * $COPYRIGHT$
 *
 * Additional copyrights may follow
 *
 * $HEADER$
 */

/**********************************************************************
 * Copyright (C) 2000-2004 by Etnus, LLC.
 * Copyright (C) 1999 by Etnus, Inc.
 * Copyright (C) 1997-1998 Dolphin Interconnect Solutions Inc.
 *
 * Permission is hereby granted to use, reproduce, prepare derivative
 * works, and to redistribute to others.
 *
 *				  DISCLAIMER
 *
 * Neither Dolphin Interconnect Solutions, Etnus LLC, nor any of their
 * employees, makes any warranty express or implied, or assumes any
 * legal liability or responsibility for the accuracy, completeness,
 * or usefulness of any information, apparatus, product, or process
 * disclosed, or represents that its use would not infringe privately
 * owned rights.
 *
 * This code was written by
 * James Cownie: Dolphin Interconnect Solutions. <jcownie@dolphinics.com>
 *               Etnus LLC <jcownie@etnus.com>
 **********************************************************************/

/* Update log
 *
 * May 19 1998 JHC: Changed the names of the structs now that we don't
 *              include this directly in mpi_interface.h
 * Oct 27 1997 JHC: Structure definitions for structures used to hold MPICH
 *              info required by the DLL for dumping message queues.
 */

#ifndef OMPI_MSGQ_DLL_DEFS_H
#define OMPI_MSGQ_DLL_DEFS_H

#include "ompi_common_dll_defs.h"

/***********************************************************************
 * Information associated with a specific process
 */

typedef struct group_t
{
    mqs_taddr_t group_base;          /* Where was it in the process  */
    int         ref_count;           /* How many references to us */
    int         entries;             /* How many entries */
    int*        local_to_global;     /* The translation table */
} group_t;

/* Internal structure we hold for each communicator */
typedef struct communicator_t
{
    struct communicator_t * next;
    group_t *               group;		/* Translations */
    mqs_taddr_t             comm_ptr;   /* pointer to the communicator in the process memory */
    int                     present;    /* validation marker */
    mqs_communicator        comm_info;  /* Info needed at the higher level */
} communicator_t;

typedef struct mqs_ompi_opal_list_t_pos {
    mqs_taddr_t current_item;
    mqs_taddr_t list;
    mqs_taddr_t sentinel;
} mqs_opal_list_t_pos;

typedef struct {
    mqs_opal_list_t_pos opal_list_t_pos;
    mqs_taddr_t current_item;
    mqs_taddr_t upper_bound;
    mqs_tword_t header_space;
    mqs_taddr_t free_list;
    mqs_tword_t fl_frag_class;         /* opal_class_t* */
    mqs_tword_t fl_mpool;              /* struct mca_mpool_base_module_t* */
    mqs_tword_t fl_frag_size;          /* size_t */
    mqs_tword_t fl_frag_alignment;     /* size_t */
    mqs_tword_t fl_num_per_alloc;      /* size_t */
    mqs_tword_t fl_num_allocated;      /* size_t */
    mqs_tword_t fl_num_initial_alloc;  /* size_t */
} mqs_opal_free_list_t_pos;


/* Information for a single process, a list of communicators, some
 * useful addresses, and the state of the iterators.
 */
typedef struct
{
  struct communicator_t *communicator_list;	/* List of communicators in the process */

  /* Addresses in the target process */
  mqs_taddr_t send_queue_base;			/* Where to find the send message queues */
  mqs_taddr_t recv_queue_base;			/* Where to find the recv message queues */
  mqs_taddr_t sendq_base;			/* Where to find the send queue */
  mqs_taddr_t commlist_base;			/* Where to find the list of communicators */
  /* Other info we need to remember about it */
  mqs_tword_t comm_number_free;         /* the number of available positions in
                                         * the communicator array. */
  mqs_tword_t comm_lowest_free;         /* the lowest free communicator */
  mqs_tword_t show_internal_requests;   /* show or not the Open MPI internal requests */
  /* State for the iterators */
  struct communicator_t *current_communicator;	/* Easy, we're walking a simple list */

  int world_proc_array_entries;
  mqs_taddr_t* world_proc_array;

  mqs_opal_free_list_t_pos next_msg;            /* And state for the message iterator */
  mqs_op_class  what;				/* What queue are we looking on */
} mpi_process_info_extra;

#endif