📄 tr.net.h
字号:
/* * Copyright (c) 2002 The Board of Trustees of the University of Illinois and * William Marsh Rice University * Copyright (c) 2002 The University of Utah * Copyright (c) 2002 The University of Notre Dame du Lac * * All rights reserved. * * Based on RSIM 1.0, developed by: * Professor Sarita Adve's RSIM research group * University of Illinois at Urbana-Champaign and William Marsh Rice University * http://www.cs.uiuc.edu/rsim and http://www.ece.rice.edu/~rsim/dist.html * ML-RSIM/URSIM extensions by: * The Impulse Research Group, University of Utah * http://www.cs.utah.edu/impulse * Lambert Schaelicke, University of Utah and University of Notre Dame du Lac * http://www.cse.nd.edu/~lambert * Mike Parker, University of Utah * http://www.cs.utah.edu/~map * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal with the Software without restriction, including without * limitation the rights to use, copy, modify, merge, publish, distribute, * sublicense, and/or sell copies of the Software, and to permit persons to * whom the Software is furnished to do so, subject to the following * conditions: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimers. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimers in the * documentation and/or other materials provided with the distribution. * 3. Neither the names of Professor Sarita Adve's RSIM research group, * the University of Illinois at Urbana-Champaign, William Marsh Rice * University, nor the names of its contributors may be used to endorse * or promote products derived from this Software without specific prior * written permission. * 4. Neither the names of the ML-RSIM project, the URSIM project, the * Impulse research group, the University of Utah, the University of * Notre Dame du Lac, nor the names of its contributors may be used to * endorse or promote products derived from this software without specific * prior written permission. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS WITH THE SOFTWARE. *//* * tr.net.h : Network activity tracing */#ifndef __TR_NET_H__#define __TR_NET_H__#ifdef DEBUG_TRACE/* * BUFFER tracing statements */#define TRACE_BUFFER_new \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," Creating network buffer "); \ YS__SendPrbPkt("Buffer",YS__prbpkt); \ sprintf(YS__prbpkt,"(id = %d, size = %d)\n", id, sz); \ YS__SendPrbPkt("Buffer",YS__prbpkt); \ }/* * MUX tracing statements */#define TRACE_MUX_new \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," Creating network mux (id = %d, %d inputs)\n", \ id, fanin); \ YS__SendPrbPkt("Mux",YS__prbpkt); \ }/* * DEMUX tracing statements */#define TRACE_DEMUX_new \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," Creating network demux %d\n", id); \ YS__SendPrbPkt("Demux",YS__prbpkt); \ }/* * PORT tracing statements */#define TRACE_IPORT_new \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," Creating input port %d\n", id); \ YS__SendPrbPkt("IPort",YS__prbpkt); \ }#define TRACE_IPORT_send1 \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt, \ " Attempting to send packet %d through network port %d\n", \ pkt->data.seqno, port->id); \ YS__SendPrbPkt("IPort",YS__prbpkt); \ sprintf(YS__prbpkt,\ " - Source module = %d, Destination module = %d\n", \ src,dest); \ YS__SendPrbPkt("IPort",YS__prbpkt); \ }#define TRACE_IPORT_send2 \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," - Port full, send fails\n"); \ YS__SendPrbPkt("IPort",YS__prbpkt); \ }#define TRACE_IPORT_send3 \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," - Port ready, packet queued in port\n"); \ YS__SendPrbPkt("IPort",YS__prbpkt); \ }#define TRACE_OPORT_new \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," Creating output port %d\n", id); \ YS__SendPrbPkt("Oport",YS__prbpkt); \ }#define TRACE_OPORT_available \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," Checking for packet at port %d\n", port->id); \ YS__SendPrbPkt("Oport",YS__prbpkt); \ if (retval) \ sprintf(YS__prbpkt," - Packet waiting\n"); \ else \ sprintf(YS__prbpkt," - No packets waiting\n"); \ YS__SendPrbPkt("OPort",YS__prbpkt); \ }#define TRACE_OPORT_receive1 \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," Attempting to receive a packet from port %d\n", \ port->id); \ YS__SendPrbPkt("OPort",YS__prbpkt); \ }#define TRACE_OPORT_receive2 \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," - Packet %d received\n", pkt->data.seqno); \ YS__SendPrbPkt("OPort",YS__prbpkt); \ }#define TRACE_OPORT_receive3 \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," - No packets available\n"); \ YS__SendPrbPkt("OPort",YS__prbpkt); \ }/* * NETWORK tracing statements */#define TRACE_NETWORK_connectbuf \ if (TraceLevel >= MAXDBLEVEL-2) { \ if (dest->type == BUFFERTYPE) \ sprintf(YS__prbpkt," Connecting buffer %d to buffer %d\n", \ source->id, dest->id); \ if (dest->type == MUXTYPE) \ sprintf(YS__prbpkt," Connecting buffer %d to mux %d\n", \ source->id, dest->id); \ if (dest->type == DEMUXTYPE) \ sprintf(YS__prbpkt," Connecting buffer %d to demux %d\n", \ source->id, dest->id); \ if (dest->type == DUPLEXMODTYPE) \ sprintf(YS__prbpkt," Connecting buffer %d to duplexmod %d\n", \ source->id, dest->id); \ if (dest->type == OPORTTYPE) \ sprintf(YS__prbpkt," Connecting buffer %d to output port %d\n", \ source->id, dest->id); \ YS__SendPrbPkt("Connection",YS__prbpkt); \ }#define TRACE_NETWORK_connectmux \ if (TraceLevel >= MAXDBLEVEL-2) { \ if (dest->type == BUFFERTYPE) \ sprintf(YS__prbpkt," Connecting mux %d to buffer %d\n", \ source->id, dest->id); \ if (dest->type == MUXTYPE) \ sprintf(YS__prbpkt," Connecting mux %d to mux %d\n", \ source->id, dest->id); \ if (dest->type == DEMUXTYPE) \ sprintf(YS__prbpkt," Connecting mux %d to demux %d\n", \ source->id, dest->id); \ if (dest->type == DUPLEXMODTYPE) \ sprintf(YS__prbpkt," Connecting mux %d to duplexmod %d\n", \ source->id, dest->id); \ if (dest->type == OPORTTYPE) \ sprintf(YS__prbpkt," Connecting mux %d to output port %d\n", \ source->id, dest->id); \ YS__SendPrbPkt("Connection",YS__prbpkt); \ }#define TRACE_NETWORK_connectiport \ if (TraceLevel >= MAXDBLEVEL-2) { \ if (dest->type == BUFFERTYPE) \ sprintf(YS__prbpkt," Connecting input port %d to buffer %d\n", \ source->id, dest->id); \ if (dest->type == MUXTYPE) \ sprintf(YS__prbpkt," Connecting input port %d to mux %d\n", \ source->id, dest->id); \ if (dest->type == DEMUXTYPE) \ sprintf(YS__prbpkt," Connecting input port %d to demux %d\n", \ source->id, dest->id); \ if (dest->type == DUPLEXMODTYPE) \ sprintf(YS__prbpkt," Connecting input port %d to duplexmod %d\n", \ source->id, dest->id); \ if (dest->type == OPORTTYPE) \ sprintf(YS__prbpkt," Connecting input port %d to output port %d\n",\ source->id, dest->id); \ YS__SendPrbPkt("Connection",YS__prbpkt); \ }#define TRACE_NETWORK_connectdemux \ if (TraceLevel >= MAXDBLEVEL-2) { \ if (dest->type == BUFFERTYPE) \ sprintf(YS__prbpkt, \ " Connecting output %d of demux %d to buffer %d\n", \ src_index,source->id, dest->id); \ if (dest->type == MUXTYPE) \ sprintf(YS__prbpkt, \ " Connecting output %d of demux %d to input %d of mux %d\n",\ src_index, source->id, dest_index, dest->id); \ if (dest->type == DEMUXTYPE) \ sprintf(YS__prbpkt, \ " Connecting output %d of demux %d to demux %d\n", \ src_index,source->id, dest->id); \ if (dest->type == DUPLEXMODTYPE) \ sprintf(YS__prbpkt, \ " Connecting output %d of demux %d to duplexmod %d\n", \ src_index,source->id, dest->id); \ if (dest->type == OPORTTYPE) \ sprintf(YS__prbpkt, \ " Connecting output %d of demux %d to output port %d\n",\ src_index,source->id, dest->id); \ YS__SendPrbPkt("Connection",YS__prbpkt); \ }/* * PACKET tracing statements */#define TRACE_PACKET_new \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," Creating packet %d of size %d\n", seqno, sz); \ YS__SendPrbPkt("Packet",YS__prbpkt); \ }#define TRACE_PACKET_show \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt," - "); \ YS__SendPrbPkt("Packet",YS__prbpkt); \ YS__PacketStatus(pkt); \ }/* * HEAD EVENT tracing statements */#define TRACE_HEAD_chkwft \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt,\ " Head of packet %d waits in module %d for its tail\n", \ pkt->data.seqno, pkt->module->id); \ YS__SendPrbPkt(YS__ActEvnt->name,YS__prbpkt); \ }#define TRACE_HEAD_nextmod \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt,\ " Head of packet %d determining its next module\n", \ pkt->data.seqno); \ YS__SendPrbPkt(YS__ActEvnt->name,YS__prbpkt); \ }#define TRACE_HEAD_nextbuf \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt,\ " - Head's next module is buffer %d\n",buf->id); \ YS__SendPrbPkt(YS__ActEvnt->name,YS__prbpkt); \ }#define TRACE_HEAD_spaceavail \ if (TraceLevel >= MAXDBLEVEL-2) { \ sprintf(YS__prbpkt,\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -