field(FTF,"LONG")\r
field(FTG,"LONG")\r
field(FTH,"LONG")\r
+ field(FTI,"LONG")\r
+ field(FTJ,"LONG")\r
field(FTVA,"LONG")\r
field(FTVB,"LONG")\r
field(FTVC,"LONG")\r
field(FTVF,"LONG")\r
field(FTVG,"LONG")\r
field(FTVH,"LONG")\r
+ field(FTVI,"LONG")\r
+ field(FTVJ,"LONG")\r
field(NOA,"50")\r
field(NOB,"50")\r
field(NOC,"50")\r
field(NOF,"50")\r
field(NOG,"50")\r
field(NOH,"50")\r
+ field(NOI,"50")\r
+ field(NOJ,"50")\r
field(NOVA,"1")\r
field(NOVB,"1")\r
field(NOVC,"1")\r
field(NOVF,"1")\r
field(NOVG,"100")\r
field(NOVH,"1")\r
+ field(NOVI,"1")\r
+ field(NOVJ,"1")\r
field(OUTA,"HAD:$(eb):nrOfMsgs PP NMS")\r
field(OUTB,"HAD:$(eb):byteWrit PP NMS") \r
field(OUTC,"HAD:$(eb):evtsComp PP NMS")\r
field(OUTF,"HAD:$(eb):evtsTagErr PP NMS") \r
field(OUTG,"HAD:$(eb):evtbuildBuff PP NMS")\r
field(OUTH,"HAD:$(eb):status PP NMS")\r
+ field(OUTI,"HAD:$(eb):evtsCompletePS PP NMS")\r
+ field(OUTJ,"HAD:$(eb):bytesWrittenPS PP NMS") \r
}\r
record(longin,"HAD:$(eb):nrOfMsgs")\r
{\r
field(SCAN,"Passive")\r
field(INP,"Constant")\r
}\r
+record(longin,"HAD:$(eb):evtsCompletePS")\r
+{\r
+ field(DTYP,"Soft Channel")\r
+ field(SCAN,"Passive")\r
+ field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):bytesWrittenPS")\r
+{\r
+ field(DTYP,"Soft Channel")\r
+ field(SCAN,"Passive")\r
+ field(INP,"Constant")\r
+}\r
record(waveform,"HAD:$(eb):evtbuildBuff")\r
{\r
field(DTYP,"Soft Channel")\r
registrar(asSub)
function(evtbuild_init)
function(evtbuild_proc)
+function(netmem_init)
+function(netmem_proc)
function(genRunId_init)
function(genRunId_proc)
function(writeRunId_init)
variable(asCaDebug,int)
variable(dbRecordsOnceOnly,int)
variable(evtbuildDebug,int)
+variable(netmemDebug,int)
variable(genrunidDebug,int)
variable(writerunidDebug,int)
# Create and install (or just install)
# databases, templates, substitutions like this
DB += evtbuild.db
+DB += netmem.db
DB += user.substitutions
DB += userHost.substitutions
field(FTF,"LONG")\r
field(FTG,"LONG")\r
field(FTH,"LONG")\r
+ field(FTI,"LONG")\r
+ field(FTJ,"LONG")\r
field(FTVA,"LONG")\r
field(FTVB,"LONG")\r
field(FTVC,"LONG")\r
field(FTVF,"LONG")\r
field(FTVG,"LONG")\r
field(FTVH,"LONG")\r
+ field(FTVI,"LONG")\r
+ field(FTVJ,"LONG")\r
field(NOA,"50")\r
field(NOB,"50")\r
field(NOC,"50")\r
field(NOF,"50")\r
field(NOG,"50")\r
field(NOH,"50")\r
+ field(NOI,"50")\r
+ field(NOJ,"50")\r
field(NOVA,"1")\r
field(NOVB,"1")\r
field(NOVC,"1")\r
field(NOVF,"1")\r
field(NOVG,"100")\r
field(NOVH,"1")\r
+ field(NOVI,"1")\r
+ field(NOVJ,"1")\r
field(OUTA,"HAD:$(eb):nrOfMsgs PP NMS")\r
field(OUTB,"HAD:$(eb):byteWrit PP NMS") \r
field(OUTC,"HAD:$(eb):evtsComp PP NMS")\r
field(OUTF,"HAD:$(eb):evtsTagErr PP NMS") \r
field(OUTG,"HAD:$(eb):evtbuildBuff PP NMS")\r
field(OUTH,"HAD:$(eb):status PP NMS")\r
+ field(OUTI,"HAD:$(eb):evtsCompletePS PP NMS")\r
+ field(OUTJ,"HAD:$(eb):bytesWrittenPS PP NMS") \r
}\r
record(longin,"HAD:$(eb):nrOfMsgs")\r
{\r
field(SCAN,"Passive")\r
field(INP,"Constant")\r
}\r
+record(longin,"HAD:$(eb):evtsCompletePS")\r
+{\r
+ field(DTYP,"Soft Channel")\r
+ field(SCAN,"Passive")\r
+ field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):bytesWrittenPS")\r
+{\r
+ field(DTYP,"Soft Channel")\r
+ field(SCAN,"Passive")\r
+ field(INP,"Constant")\r
+}\r
record(waveform,"HAD:$(eb):evtbuildBuff")\r
{\r
field(DTYP,"Soft Channel")\r
--- /dev/null
+record(genSub,"HAD:$(eb):netmem") {
+ field(DESC,"General Subroutine Record")
+ field(SCAN,"1 second")
+ field(PINI,"NO")
+ field(PHAS,"0")
+ field(EVNT,"0")
+ field(DISV,"1")
+ field(LFLG,"IGNORE")
+ field(EFLG,"ALWAYS")
+ field(SDIS,"0.0000000000000000e+00")
+ field(DISS,"NO_ALARM")
+ field(PRIO,"LOW")
+ field(FLNK,"0.000000000000000e+00")
+ field(SUBL,"0.0000000000000000e+00")
+ field(BRSV,"NO_ALARM")
+ field(INAM,"netmem_init")
+ field(SNAM,"netmem_proc")
+ field(FTA,"LONG")
+ field(FTB,"LONG")
+ field(FTC,"LONG")
+ field(FTD,"LONG")
+ field(FTE,"LONG")
+ field(FTF,"LONG")
+ field(FTG,"LONG")
+ field(FTH,"LONG")
+ field(FTVA,"LONG")
+ field(FTVB,"LONG")
+ field(FTVC,"LONG")
+ field(FTVD,"LONG")
+ field(FTVE,"LONG")
+ field(FTVF,"LONG")
+ field(FTVG,"LONG")
+ field(FTVH,"LONG")
+ field(NOA,"50")
+ field(NOB,"50")
+ field(NOC,"50")
+ field(NOD,"50")
+ field(NOE,"50")
+ field(NOF,"50")
+ field(NOG,"50")
+ field(NOH,"50")
+ field(NOVA,"1")
+ field(NOVB,"100")
+ field(NOVC,"100")
+ field(NOVD,"100")
+ field(NOVE,"100")
+ field(NOVF,"100")
+ field(NOVG,"100")
+ field(NOVH,"100")
+ field(OUTA,"HAD:$(eb):netmem:nrOfMsgs PP NMS")
+ field(OUTB,"HAD:$(eb):netmem:buff PP NMS")
+ field(OUTC,"HAD:$(eb):netmem:pktsReceived PP NMS")
+ field(OUTD,"HAD:$(eb):netmem:msgsReceived PP NMS")
+ field(OUTE,"HAD:$(eb):netmem:pktsDiscarded PP NMS")
+ field(OUTF,"HAD:$(eb):netmem:msgsDiscarded PP NMS")
+ field(OUTG,"HAD:$(eb):netmem:bytesReceived PP NMS")
+ field(OUTH,"HAD:$(eb):netmem:bytesReceivedPS PP NMS")
+}
+record(longin,"HAD:$(eb):netmem:nrOfMsgs")
+{
+ field(DTYP,"Soft Channel")
+ field(SCAN,"Passive")
+ field(INP,"Constant")
+}
+record(waveform,"HAD:$(eb):netmem:buff")
+{
+ field(DTYP,"Soft Channel")
+ field(SCAN,"Passive")
+ field(INP,"Constant")
+ field(NELM,"100")
+ field(FTVL,"LONG")
+}
+record(waveform,"HAD:$(eb):netmem:pktsReceived")
+{
+ field(DTYP,"Soft Channel")
+ field(SCAN,"Passive")
+ field(INP,"Constant")
+ field(NELM,"100")
+ field(FTVL,"LONG")
+}
+record(waveform,"HAD:$(eb):netmem:msgsReceived")
+{
+ field(DTYP,"Soft Channel")
+ field(SCAN,"Passive")
+ field(INP,"Constant")
+ field(NELM,"100")
+ field(FTVL,"LONG")
+}
+record(waveform,"HAD:$(eb):netmem:pktsDiscarded")
+{
+ field(DTYP,"Soft Channel")
+ field(SCAN,"Passive")
+ field(INP,"Constant")
+ field(NELM,"100")
+ field(FTVL,"LONG")
+}
+record(waveform,"HAD:$(eb):netmem:msgsDiscarded")
+{
+ field(DTYP,"Soft Channel")
+ field(SCAN,"Passive")
+ field(INP,"Constant")
+ field(NELM,"100")
+ field(FTVL,"LONG")
+}
+record(waveform,"HAD:$(eb):netmem:bytesReceived")
+{
+ field(DTYP,"Soft Channel")
+ field(SCAN,"Passive")
+ field(INP,"Constant")
+ field(NELM,"100")
+ field(FTVL,"LONG")
+}
+record(waveform,"HAD:$(eb):netmem:bytesReceivedPS")
+{
+ field(DTYP,"Soft Channel")
+ field(SCAN,"Passive")
+ field(INP,"Constant")
+ field(NELM,"100")
+ field(FTVL,"LONG")
+}
+
ebctrl_DBD += xxxSupport.dbd
ebctrl_DBD += genSubRecord.dbd
ebctrl_DBD += evtbuild.dbd
+ebctrl_DBD += netmem.dbd
ebctrl_DBD += genrunid.dbd
ebctrl_DBD += writerunid.dbd
# Add locally compiled object code
ebctrl_SRCS += genSubRecord.c
ebctrl_SRCS += evtbuild.c
+ebctrl_SRCS += netmem.c
ebctrl_SRCS += genrunid.c
ebctrl_SRCS += writerunid.c
unsigned long *temp;
int i;
- out[0] = (unsigned long *)pgsub->vala;
- out[1] = (unsigned long *)pgsub->valb;
- out[2] = (unsigned long *)pgsub->valc;
- out[3] = (unsigned long *)pgsub->vald;
- out[4] = (unsigned long *)pgsub->vale;
- out[5] = (unsigned long *)pgsub->valf;
- out[6] = (unsigned long *)pgsub->valg;
- out[7] = (unsigned long *)pgsub->valh;
+ out[0] = (unsigned long *)pgsub->vala; /* nrOfMsgs */
+ out[1] = (unsigned long *)pgsub->valb; /* bytesWritten */
+ out[2] = (unsigned long *)pgsub->valc; /* evtsComplete */
+ out[3] = (unsigned long *)pgsub->vald; /* evtsDiscarded */
+ out[4] = (unsigned long *)pgsub->vale; /* evtsDataError */
+ out[5] = (unsigned long *)pgsub->valf; /* evtsTagError */
+ out[6] = (unsigned long *)pgsub->valg; /* evtbuildBuff */
+ out[7] = (unsigned long *)pgsub->valh; /* status */
+ out[8] = (unsigned long *)pgsub->vali; /* evtsCompletePS */
+ out[8] = (unsigned long *)pgsub->valj; /* bytesWrittenPS */
for( i=0; i<7; i++ )
*out[i] = 0;
if( Worker_getStatistic( "daq_evtbuild", buf, out[6] ) == -1) {
if(evtbuildDebug)
- printf("Worker_getStatistic failed for %s!\n", buf);
+ printf("evtbuild.c: Worker_getStatistic failed for %s!\n", buf);
}
else {
if(evtbuildDebug)
- printf("%s = %lu\n", buf, *out[6]);
+ printf("evtbuild.c, %s = %lu\n", buf, *out[6]);
out[6]++;
}
}
+ if( Worker_getStatistic( "daq_evtbuild", "evtsCompletePS", out[8] ) == -1)
+ if(evtbuildDebug)
+ printf("Worker_getStatistic failed for evtsCompletePS!\n");
+
+ if( Worker_getStatistic( "daq_evtbuild", "bytesWrittenPS", out[9] ) == -1)
+ if(evtbuildDebug)
+ printf("Worker_getStatistic failed for bytesWrittenPS!\n");
+
return(0);
}
--- /dev/null
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <dbDefs.h>
+#include <registryFunction.h>
+#include <subRecord.h>
+#include <epicsExport.h>
+#include <genSubRecord.h>
+
+#include "worker.h"
+
+int netmemDebug;
+
+long netmem_init( struct genSubRecord *pgsub )
+{
+ return(0);
+}
+
+long netmem_proc( struct genSubRecord *pgsub )
+{
+
+ unsigned long *out[2];
+ int i;
+
+ out[0] = (unsigned long *)pgsub->vala; /* number of sources */
+ out[1] = (unsigned long *)pgsub->valb; /* daq_netmem buff fill levels */
+ out[2] = (unsigned long *)pgsub->valc; /* pktsReceived */
+ out[3] = (unsigned long *)pgsub->vald; /* msgsReceived */
+ out[4] = (unsigned long *)pgsub->vale; /* pktsDiscarded */
+ out[5] = (unsigned long *)pgsub->valf; /* msgsDiscarded */
+ out[6] = (unsigned long *)pgsub->valg; /* bytesReceived */
+ out[7] = (unsigned long *)pgsub->valh; /* bytesReceivedPS */
+
+ for( i=0; i<2; i++ )
+ *out[1] = 0;
+
+ if( Worker_getStatistic( "daq_evtbuild", "nrOfMsgs", out[0] ) == -1) {
+ if(netmemDebug)
+ printf("netmem.c: Worker_getStatistic failed for nrOfMsgs!\n");
+ }
+ else {
+ if(netmemDebug)
+ printf("netmem.c: Worker_getStatistic::nrOfMsgs = %lu\n", (*out[0]));
+ }
+
+ char buf[100];
+ for( i=0; i<(*out[0]); i++ ) {
+
+ sprintf( buf, "netmemBuff%d", i );
+
+ if( Worker_getStatistic( "daq_netmem", buf, out[1] ) == -1) {
+ if(netmemDebug)
+ printf("netmem.c: Worker_getStatistic failed for %s!\n", buf);
+ }
+ else {
+ if(netmemDebug)
+ printf("netmem.c: %s = %lu\n", buf, *out[1]);
+
+ out[1]++;
+ }
+ }
+
+ for( i=0; i<(*out[0]); i++ ) {
+
+ sprintf( buf, "pktsReceived%d", i );
+
+ if( Worker_getStatistic( "daq_netmem", buf, out[2] ) == -1) {
+ if(netmemDebug)
+ printf("netmem.c: Worker_getStatistic failed for %s!\n", buf);
+ }
+ else {
+ if(netmemDebug)
+ printf("netmem.c: %s = %lu\n", buf, *out[2]);
+
+ out[2]++;
+ }
+ }
+
+ for( i=0; i<(*out[0]); i++ ) {
+
+ sprintf( buf, "msgsReceived%d", i );
+
+ if( Worker_getStatistic( "daq_netmem", buf, out[3] ) == -1) {
+ if(netmemDebug)
+ printf("netmem.c: Worker_getStatistic failed for %s!\n", buf);
+ }
+ else {
+ if(netmemDebug)
+ printf("netmem.c: %s = %lu\n", buf, *out[3]);
+
+ out[3]++;
+ }
+ }
+
+ for( i=0; i<(*out[0]); i++ ) {
+
+ sprintf( buf, "pktsDiscarded%d", i );
+
+ if( Worker_getStatistic( "daq_netmem", buf, out[4] ) == -1) {
+ if(netmemDebug)
+ printf("netmem.c: Worker_getStatistic failed for %s!\n", buf);
+ }
+ else {
+ if(netmemDebug)
+ printf("netmem.c: %s = %lu\n", buf, *out[4]);
+
+ out[4]++;
+ }
+ }
+
+ for( i=0; i<(*out[0]); i++ ) {
+
+ sprintf( buf, "msgsDiscarded%d", i );
+
+ if( Worker_getStatistic( "daq_netmem", buf, out[5] ) == -1) {
+ if(netmemDebug)
+ printf("netmem.c: Worker_getStatistic failed for %s!\n", buf);
+ }
+ else {
+ if(netmemDebug)
+ printf("netmem.c: %s = %lu\n", buf, *out[5]);
+
+ out[5]++;
+ }
+ }
+
+ for( i=0; i<(*out[0]); i++ ) {
+
+ sprintf( buf, "bytesReceived%d", i );
+
+ if( Worker_getStatistic( "daq_netmem", buf, out[6] ) == -1) {
+ if(netmemDebug)
+ printf("netmem.c: Worker_getStatistic failed for %s!\n", buf);
+ }
+ else {
+ if(netmemDebug)
+ printf("netmem.c: %s = %lu\n", buf, *out[6]);
+
+ out[6]++;
+ }
+ }
+
+ for( i=0; i<(*out[0]); i++ ) {
+
+ sprintf( buf, "bytesReceivedPS%d", i );
+
+ if( Worker_getStatistic( "daq_netmem", buf, out[7] ) == -1) {
+ if(netmemDebug)
+ printf("netmem.c: Worker_getStatistic failed for %s!\n", buf);
+ }
+ else {
+ if(netmemDebug)
+ printf("netmem.c: %s = %lu\n", buf, *out[7]);
+
+ out[7]++;
+ }
+ }
+
+
+ return(0);
+}
+
+/* Register these symbols for use by IOC code: */
+
+epicsExportAddress(int, netmemDebug);
+epicsRegisterFunction(netmem_init);
+epicsRegisterFunction(netmem_proc);
--- /dev/null
+variable(netmemDebug)
+function(netmem_init)
+function(netmem_proc)
\ No newline at end of file
else
printf("<D> writerunid.c: check: Worker_getStatistic runId = %lu\n", runId_check);
}
+
return(0);
}
## Load record instances
dbLoadTemplate "db/userHost.substitutions"
dbLoadRecords("db/evtbuild.db","eb=eb01")
+dbLoadRecords("db/netmem.db","eb=eb01")
## Set this to see messages from mySub
var evtbuildDebug 0
+var netmemDebug 1
var genrunidDebug 1
var writerunidDebug 1