File:  [Research Unix] / researchv9 / jerq / src / mux / proto / ptimeout.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:59 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv9-SUN3_old, researchv9-SUN3, HEAD
researchv9-SUN3(old)

/*
**	Process timeouts for packets
*/

#include	"pconfig.h"
#include	"proto.h"
#include	"packets.h"
#include	"pstats.h"

void
ptimeout(sig)
	int		sig;
{
	register Pch_p	pcp;
	register Pks_p	psp;
	register int	i;
	register int	retrys;

#	ifndef	Blit
	signal(sig, ptimeout);
#	endif
	Ptflag = 0;

	if ( precvpkt.timo > 0 && ++Ptflag && (precvpkt.timo -= Pscanrate) <= 0 )
	{
		precvpkt.state = PR_NULL;
		ptrace("RECV TIMEOUT");
	}

	for ( pcp = pconvs, retrys = 0 ; pcp < pconvsend && retrys < MAXTIMORETRYS ; pcp++ )
		for ( psp = pcp->nextpkt, i = NPCBUFS ; i-- ; )
		{
			if ( psp->timo > 0 && ++Ptflag && (psp->timo -= Pscanrate) <= 0 )
			{
				ptrace("XMIT TIMEOUT");
				psp->timo = Pxtimeout;
				Pxfunc(&psp->pkt, psp->size);
				PSTATS(PS_TIMOPKT);
				plogpkt(&psp->pkt, PLOGOUT);
				ptrace("END TIMEOUT");
				if ( ++retrys >= MAXTIMORETRYS )
					break;
			}
			if ( ++psp >= &pcp->pkts[NPCBUFS] )
				psp = pcp->pkts;
		}

#	ifndef	Blit
	if ( Ptflag )
		(void)alarm(Pscanrate);
#	endif
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.