⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbgstub.c

📁 fortran并行计算包
💻 C
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//*   *  (C) 2001 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */#include "mpiimpl.h"/* These are pointers to the static variables in src/mpid/ch3/src/ch3u_recvq.c   that contains the *addresses* of the posted and unexpected queue head    pointers */extern MPID_Request ** const MPID_Recvq_posted_head_ptr,     ** const MPID_Recvq_unexpected_head_ptr;#include "mpi_interface.h"/* This is from dbginit.c; it is not exported to other files */typedef struct MPIR_Sendq {    MPID_Request *sreq;    int tag, rank, context_id;    struct MPIR_Sendq *next;} MPIR_Sendq;extern MPIR_Sendq *MPIR_Sendq_head;/*    This file contains emulation routines for the methods and functions normally   provided by the debugger.  This file is only used for testing the    dll_mpich2.c debugger interface. *//* These are mock-ups of the find type and find offset routines.  Since    there are no portable routines to access the symbol table in an image,   we hand-code the specific types that we use in this code.    These routines (more precisely, the field_offset routine) need to    known the layout of the internal data structures */enum { TYPE_UNKNOWN = 0,        TYPE_MPID_COMM = 1,        TYPE_MPIR_COMM_LIST = 2,        TYPE_MPIDI_REQUEST = 3,        TYPE_MPIDI_MESSAGE_MATCH = 4,       TYPE_MPID_REQUEST = 5,        TYPE_MPIR_SENDQ = 6,} KnownTypes;static int curType = TYPE_UNKNOWN;mqs_type * dbgrI_find_type(mqs_image *image, char *name, 				  mqs_lang_code lang){    if (strcmp(name,"MPID_Comm") == 0) {	curType = TYPE_MPID_COMM;    }    else if (strcmp( name, "MPIR_Comm_list" ) == 0) {	curType = TYPE_MPIR_COMM_LIST;    }    else if (strcmp( name, "MPIDI_Request" ) == 0) {	curType = TYPE_MPIDI_REQUEST;    }    else if (strcmp( name, "MPIDI_Message_match" ) == 0) {	curType = TYPE_MPIDI_MESSAGE_MATCH;    }    else if (strcmp( name, "MPID_Request" ) == 0) {	curType = TYPE_MPID_REQUEST;    }    else if (strcmp( name, "MPIR_Sendq" ) == 0) {	curType = TYPE_MPIR_SENDQ;    }    else {	curType = TYPE_UNKNOWN;    }    return (mqs_type *)&curType;}int dbgrI_field_offset(mqs_type *type, char *name){    int off = -1;    switch (curType) {    case TYPE_MPID_COMM:	{	    MPID_Comm c;	    if (strcmp( name, "name" ) == 0) {		off = ((char*)&(c.name[0]) - (char*)&c.handle);	    }	    else if (strcmp( name, "comm_next" ) == 0) {		off = ((char*)&c.comm_next - (char*)&c.handle);	    }	    else if (strcmp( name, "remote_size" ) == 0) {		off = ((char*)&c.remote_size - (char*)&c.handle);	    }	    else if (strcmp( name, "rank" ) == 0) {		off = ((char*)&c.rank - (char*)&c.handle);	    }	    else if (strcmp( name, "context_id" ) == 0) {		off = ((char*)&c.context_id - (char*)&c.handle);	    }	}	break;    case TYPE_MPIR_COMM_LIST:	{	    MPIR_Comm_list c;	    if (strcmp( name, "sequence_number" ) == 0) {		off = ((char*)&c.sequence_number - (char*)&c);	    }	    else if (strcmp( name, "head" ) == 0) {		off = ((char*)&c.head - (char*)&c);	    }	}	break;    case TYPE_MPIDI_REQUEST:	{	    struct MPIDI_Request c;	    if (strcmp( name, "next" ) == 0) {		off = ((char *)&c.next - (char *)&c);	    }	    else if (strcmp( name, "match" ) == 0) {		off = ((char *)&c.match - (char *)&c);	    }	}    case TYPE_MPIDI_MESSAGE_MATCH:	{	    MPIDI_Message_match c;	    if (strcmp( name, "tag" ) == 0) {		off = ((char *)&c.tag - (char *)&c);	    }	    else if (strcmp( name, "rank" ) == 0) {		off = ((char *)&c.rank - (char *)&c);	    }	    else if (strcmp( name, "context_id" ) == 0) {		off = ((char *)&c.context_id - (char *)&c);	    }	}	break;    case TYPE_MPID_REQUEST:	{	    MPID_Request c;	    if (strcmp( name, "dev" ) == 0) {		off = ((char *)&c.dev - (char *)&c);	    }	    else if (strcmp( name, "status" ) == 0) {		off = ((char *)&c.status - (char *)&c);	    }	    else if (strcmp( name, "cc" ) == 0) {		off = ((char *)&c.cc - (char *)&c);	    }	}	break;    case TYPE_MPIR_SENDQ:	{	    struct MPIR_Sendq c;	    if (strcmp( name, "next" ) == 0) {		off = ((char *)&c.next - (char *)&c);	    }	    else if (strcmp( name, "tag" ) == 0) {		off = ((char *)&c.tag - (char *)&c);	    }	    else if (strcmp( name, "rank" ) == 0) {		off = ((char *)&c.rank - (char *)&c);	    }	    else if (strcmp( name, "context_id" ) == 0) {		off = ((char *)&c.context_id - (char *)&c);	    }	}	break;    case TYPE_UNKNOWN:	off = -1;	break;    default:	off = -1;	break;    }    return off;}/* Simulate converting name to the address of a variable/symbol */int dbgrI_find_symbol( mqs_image *image, char *name, mqs_taddr_t * loc ){    if (strcmp( name, "MPIR_All_communicators" ) == 0) {	*loc = (mqs_taddr_t)&MPIR_All_communicators;	return mqs_ok;    }    else if (strcmp( name, "MPID_Recvq_posted_head_ptr" ) == 0) {	*loc = (mqs_taddr_t)&MPID_Recvq_posted_head_ptr;	return mqs_ok;    }    else if (strcmp( name, "MPID_Recvq_unexpected_head_ptr" ) == 0) {	*loc = (mqs_taddr_t)&MPID_Recvq_unexpected_head_ptr;	return mqs_ok;    }    else if (strcmp( name, "MPIR_Sendq_head" ) == 0) {	*loc = (mqs_taddr_t)&MPIR_Sendq_head;	return mqs_ok;    }    return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -