The following list describes the syntax and semantics of MQM's standard queries, used to obtain message queue information from the underlying software in order to display the MQM graphical representation. Information on these elements will be found elsewhere in the MQM Web pages.
The queries have been organized into three groups, each containing
all queries that share an argument structure.
Returns process count and a list of all processes
in the application.
Returns count and list of descriptors for all
messages satisfisfying the appropriate condition:
The queries can be restricted to a subset of processes,
by specifying their count/list in the first two
arguments. Otherwise,
Returns number and list of processes that are currently blocked
at any barrier.
Can be restricted to a process subset as in (2)-(6).
Standard Queries
All queries return an integer status code.
Arguments marked "IN" are used but not updated by
the query routines. Arguments marked "OUT" are updated.
Arguments marked "INOUT" are both used
and updated. The list does not include gather, scatter,
reduction, or more complex collective operations,
since these operations are not supported by the current
version of MQM.
MQM_GetProcessList
Arguments: OUT: MQM_process_list_size
MQM_process_list
MQM_WaitingMsgs
MQM_IncompleteSends
MQM_WaitingSends
MQM_IncompleteRecvs
MQM_WaitingRecvs
Arguments: IN: MQM_process_list_size
MQM_process_list
OUT: MQM_desc_list_size
MQM_desc_list
MQM_ALL is used as the first
argument to signify all processes, while a null
pointer can be used for the second argument. If the
OUT arguments return as MQM_NONE and
MQM_NULL_LIST, respectively, no processes were
found to satisfy the query.
MQM_BarrierArrived
Arguments: IN: MQM_process_list_size
MQM_process_list
OUT: MQM_process_list_size
MQM_process_list
Data Types
#define MQM_NONE 0
Constant indicating that a
subsequent list argument is empty
#define MQM_ALL -1
Wild card constant indicating
"all possible elements"
#define MQM_NULL_LIST NULL
Null pointer for an empty list
char * MQM_process;
A process id
MQM_process * MQM_process_list;
Array of MQM_process
int MQM_process_list_size;
Number of MQM_process in MQM_process_list
int MQM_msgtag;
User-defined message tag
MQM_msgtag * MQM_msgtag_list;
Array of MQM_msgtag
int MQM_msgtag_list_size;
Number of MQM_msgtag in MQM_msgtag_list.
typedef struct {MQM_process src,
MQM_process dest,
MQM_msgtag tag,
MQM_msg_size size,
} MQM_msg_desc;
Message descriptor indicating source, destination,
tag, and the size of the messages.
Fields can be 0 or NULL
if the element doesn't
apply to a particular message operation.
Wild card constant can be applied to src, dest, and tag.
MQM_msg_desc * MQM_desc_list;
Array of MQM_msg_desc
int MQM_desc_list_size;
Number of MQM_msg_desc in MQM_desc_list