GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> LCS / dev > lcs_test / mv2304


Interface   Data Structures   File List   Data Fields   Globals  

LCS_fragment.c File Reference

Test reconstruction of hardware fragments. More...

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <PBS/PBS.h>
#include <PBS/FORK.h>
#include <PBS/FPA.h>
#include <ITC/ITC_drvdefs.h>
#include <LCS/LCS_msgs.h>
#include <LCS_prvtest.h>

Functions

static WUT_cb_status expireTimer (void *prm, WUT_tmr *wut)
 Timer callback routine to queue a message back to a fork.
static FORK_cb_status forkFragmentPre (FORK_cb_prm *prm, FORK_msg_hdr *msg)
 Send off a precursor message to "upset" the far side.
static FORK_cb_status forkFragmentFrg (FORK_cb_prm *prm, FORK_msg_hdr *msg)
 Send off the small message.
static void freeFragment (ITC_QueueItem *qitem, unsigned int status, void *prm0, void *prm1, void *prm2)
 Free allocated buffer.
unsigned int LCS_fragment (ITC_NodeID dnid, ITC_TaskID dtid, ITC_QueueID dqid, ITC_ProtID pid, ITC_TaskID stid)
 Main routine for LCS message (hardware) fragmentation test.


Detailed Description

Test reconstruction of hardware fragments.

CVS $Id: LCS_fragment.c,v 1.2 2011/03/28 22:49:56 apw Exp $
Author:
A.P.Waite

Function Documentation

static WUT_cb_status expireTimer ( void *  prm,
WUT_tmr *  wut 
) [static]

Timer callback routine to queue a message back to a fork.

Parameters:
prm (in) User context parameter
wut (in) Timer handle
expireTimer() is the routine called at interrupt level by the timeout timer. It's responsible for getting the victim message sent.

References _LCS_Cmd::fqi, and _LCS_Cmd::rtn.

static FORK_cb_status forkFragmentFrg ( FORK_cb_prm *  prm,
FORK_msg_hdr *  msg 
) [static]

static FORK_cb_status forkFragmentPre ( FORK_cb_prm *  prm,
FORK_msg_hdr *  msg 
) [static]

Send off a precursor message to "upset" the far side.

forkFragmentPre() sends off a precursor message to the far side instructing it to start introducing fragmantation.

References _LCS_CmdParam::beg, _LCS_CmdParam::end, expireTimer(), _LCS_TestControl::fpm, freeFragment(), LCS_sendMessage(), LCS_tcb, _LCS_Cmd::msg, _LCS_CmdParam::nid, _LCS_CmdParam::pgs, _LCS_CmdParam::pid, _LCS_Cmd::prm, _LCS_CmdParam::qid, _LCS_Cmd::tbeg, _LCS_CmdParam::tid, and _LCS_Cmd::use.

Referenced by LCS_fragment().

static void freeFragment ( ITC_QueueItem *  qitem,
unsigned int  status,
void *  prm0,
void *  prm1,
void *  prm2 
) [static]

Free allocated buffer.

Parameters:
qitem (in) Queue item (unused)
status (in) Processing completion code (unused)
prm0 (in) User parameter 0 (unused)
prm1 (in) User parameter 1 (unused)
prm2 (in) User parameter 2 (unused)
freeFragment() frees the messages used in the fragmentation test.

References _LCS_CmdParam::beg, cmd, _LCS_CmdParam::end, _LCS_TestControl::fpc, LCS_tcb, _LCS_CmdParam::pgs, _LCS_Cmd::prm, _LCS_CmdParam::qid, _LCS_Cmd::tbeg, and _LCS_Cmd::tend.

Referenced by forkFragmentFrg(), and forkFragmentPre().

unsigned int LCS_fragment ( ITC_NodeID  dnid,
ITC_TaskID  dtid,
ITC_QueueID  dqid,
ITC_ProtID  pid,
ITC_TaskID  stid 
)

Main routine for LCS message (hardware) fragmentation test.

Parameters:
dnid (in) Destination ITC node ID
dtid (in) Destination ITC task ID
dqid (in) Destination ITC queue ID
pid (in) Message protocol
stid (in) Source ITC task ID
LCS_fragment() sends two messages. The first (short) message causes the receiver to set up a deliberate fragmentation (at semi-random times, sets a bit in the far side LCB's LATp CSR register). The second (long) message then stumbles into that situation.

References _LCS_CmdParam::beg, _LCS_TestControl::cid, _LCS_Cmd::cid, _LCS_Cmd::dmg, _LCS_Cmd::drp, _LCS_CmdParam::end, forkFragmentFrg(), forkFragmentPre(), _LCS_TestControl::fpc, _LCS_TestControl::fpm, _LCS_Cmd::fqi, LCS_tcb, _LCS_Cmd::msg, _LCS_CmdParam::nid, _LCS_Cmd::out, _LCS_Cmd::ovr, _LCS_CmdParam::pgs, _LCS_CmdParam::pid, _LCS_Cmd::prm, _LCS_CmdParam::qid, _LCS_Cmd::rtn, _LCS_CmdParam::tid, and _LCS_Cmd::use.


Generated on Mon Mar 28 15:57:44 2011 by  doxygen 1.5.8