{
if (m_waiting_buffers.count(addr) == 0) {
MsgVecType* msgVec = new MsgVecType;
- msgVec->resize(m_max_in_port_rank, NULL);
+ msgVec->resize(m_in_ports, NULL);
m_waiting_buffers[addr] = msgVec;
}
- (*(m_waiting_buffers[addr]))[m_cur_in_port_rank] = buf;
+ (*(m_waiting_buffers[addr]))[m_cur_in_port] = buf;
}
void
// Wake up all possible lower rank (i.e. lower priority) buffers that could
// be waiting on this message.
//
- for (int in_port_rank = m_cur_in_port_rank - 1;
+ for (int in_port_rank = m_cur_in_port - 1;
in_port_rank >= 0;
in_port_rank--) {
if ((*(m_waiting_buffers[addr]))[in_port_rank] != NULL) {
// Wake up all possible lower rank (i.e. lower priority) buffers that could
// be waiting on this message.
//
- for (int in_port_rank = m_max_in_port_rank - 1;
+ for (int in_port_rank = m_in_ports - 1;
in_port_rank >= 0;
in_port_rank--) {
if ((*(m_waiting_buffers[addr]))[in_port_rank] != NULL) {
typedef std::vector<MessageBuffer*> MsgVecType;
typedef std::map< Address, MsgVecType* > WaitingBufType;
WaitingBufType m_waiting_buffers;
- int m_max_in_port_rank;
- int m_cur_in_port_rank;
+ unsigned int m_in_ports;
+ unsigned int m_cur_in_port;
int m_number_of_TBEs;
//! Map from physical network number to the Message Buffer.
from slicc.symbols import Func, Type, Var
class InPortDeclAST(DeclAST):
- max_port_rank = 0
-
def __init__(self, slicc, ident, msg_type, var_expr, pairs, statements):
super(InPortDeclAST, self).__init__(slicc, pairs)
self.var_expr = var_expr
self.statements = statements
self.queue_type = TypeAST(slicc, "InPort")
- if self.pairs.has_key("rank"):
- InPortDeclAST.max_port_rank = max(self.pairs["rank"],
- InPortDeclAST.max_port_rank)
def __repr__(self):
return "[InPortDecl: %s]" % self.ident
# Add port to state machine
machine.addInPort(in_port)
-
- # Include max_rank to be used by StateMachine.py
- in_port["max_port_rank"] = InPortDeclAST.max_port_rank
{
m_name = "${ident}";
''')
- #
- # max_port_rank is used to size vectors and thus should be one plus the
- # largest port rank
- #
- max_port_rank = self.in_ports[0].pairs["max_port_rank"] + 1
- code(' m_max_in_port_rank = $max_port_rank;')
+ num_in_ports = len(self.in_ports)
+ code(' m_in_ports = $num_in_ports;')
code.indent()
#
code.indent()
code('// ${ident}InPort $port')
if port.pairs.has_key("rank"):
- code('m_cur_in_port_rank = ${{port.pairs["rank"]}};')
+ code('m_cur_in_port = ${{port.pairs["rank"]}};')
else:
- code('m_cur_in_port_rank = 0;')
+ code('m_cur_in_port = 0;')
code('${{port["c_code_in_port"]}}')
code.dedent()