static void writeRegister(niport *pniport,int offset, epicsUInt8 value) { volatile epicsUInt8 *pregister = (epicsUInt8 *) (((char *)pniport->registers)+offset); if(ni1014Debug) { char message[100]; sprintf(message,"writeRegister pregister %p offset %x value %2.2x\n", pregister,offset,value); if(epicsInterruptIsInterruptContext()) { epicsInterruptContextMessage(message); } else { printf("%s",message); } } *pregister = value; /* * Must wait 5 ti9914 clock cycles between AUXMR commands * Documentation is confusing but experiments indicate that 6 microsecod wait * Is required. */ if (offset == AUXMR) microSecondDelay(6); }
epicsShareFunc int errlogSevVprintf( const errlogSevEnum severity,const char *pFormat,va_list pvar) { char *pnext; int nchar; int totalChar = 0; int isOkToBlock; if (epicsInterruptIsInterruptContext()) { epicsInterruptContextMessage ("errlogSevVprintf called from interrupt level\n"); return 0; } errlogInit(0); if (pvtData.atExit) return 0; isOkToBlock = epicsThreadIsOkToBlock(); pnext = msgbufGetFree(isOkToBlock); if (!pnext) return 0; nchar = sprintf(pnext, "sevr=%s ", errlogGetSevEnumString(severity)); pnext += nchar; totalChar += nchar; nchar = tvsnPrint(pnext, pvtData.maxMsgSize - totalChar - 1, pFormat, pvar); pnext += nchar; totalChar += nchar; if (pnext[-1] != '\n') { strcpy(pnext,"\n"); totalChar++; } msgbufSetSize(totalChar); return nchar; }
epicsShareFunc int errlogSevPrintf( const errlogSevEnum severity,const char *pFormat, ...) { va_list pvar; int nchar; int isOkToBlock; if (epicsInterruptIsInterruptContext()) { epicsInterruptContextMessage ("errlogSevPrintf called from interrupt level\n"); return 0; } errlogInit(0); if (pvtData.sevToLog > severity) return 0; isOkToBlock = epicsThreadIsOkToBlock(); if (pvtData.atExit || (isOkToBlock && pvtData.toConsole)) { fprintf(pvtData.console, "sevr=%s ", errlogGetSevEnumString(severity)); va_start(pvar, pFormat); vfprintf(pvtData.console, pFormat, pvar); va_end(pvar); fflush(pvtData.console); } va_start(pvar, pFormat); nchar = errlogSevVprintf(severity, pFormat, pvar); va_end(pvar); return nchar; }
epicsShareFunc int errlogVprintf( const char *pFormat,va_list pvar) { int nchar; char *pbuffer; int isOkToBlock; if (epicsInterruptIsInterruptContext()) { epicsInterruptContextMessage ("errlogVprintf called from interrupt level\n"); return 0; } errlogInit(0); if (pvtData.atExit) return 0; isOkToBlock = epicsThreadIsOkToBlock(); pbuffer = msgbufGetFree(isOkToBlock); if (!pbuffer) { vfprintf(pvtData.console, pFormat, pvar); fflush(pvtData.console); return 0; } nchar = tvsnPrint(pbuffer, pvtData.maxMsgSize, pFormat?pFormat:"", pvar); if (pvtData.atExit || (isOkToBlock && pvtData.toConsole)) { fprintf(pvtData.console, "%s", pbuffer); fflush(pvtData.console); } msgbufSetSize(nchar); return nchar; }
epicsShareFunc int errlogPrintfNoConsole( const char *pFormat, ...) { va_list pvar; int nchar; if (epicsInterruptIsInterruptContext()) { epicsInterruptContextMessage ("errlogPrintfNoConsole called from interrupt level\n"); return 0; } errlogInit(0); va_start(pvar, pFormat); nchar = errlogVprintfNoConsole(pFormat, pvar); va_end(pvar); return nchar; }
static epicsUInt8 readRegister(niport *pniport, int offset) { volatile epicsUInt8 *pregister = (epicsUInt8 *) (((char *)pniport->registers)+offset); epicsUInt8 value; value = *pregister; if(ni1014Debug) { char message[100]; sprintf(message,"readRegister pregister %p offset %x value %2.2x\n", pregister,offset,value); if(epicsInterruptIsInterruptContext()) { epicsInterruptContextMessage(message); } else { printf("%s",message); } } return value; }
epicsShareFunc int errlogVprintfNoConsole( const char *pFormat,va_list pvar) { int nchar; char *pbuffer; if (epicsInterruptIsInterruptContext()) { epicsInterruptContextMessage ("errlogVprintfNoConsole called from interrupt level\n"); return 0; } errlogInit(0); if (pvtData.atExit) return 0; pbuffer = msgbufGetFree(1); if (!pbuffer) return 0; nchar = tvsnPrint(pbuffer, pvtData.maxMsgSize, pFormat?pFormat:"", pvar); msgbufSetSize(nchar); return nchar; }
epicsShareFunc void errPrintf(long status, const char *pFileName, int lineno, const char *pformat, ...) { va_list pvar; char *pnext; int nchar; int totalChar=0; int isOkToBlock; char name[256]; if (epicsInterruptIsInterruptContext()) { epicsInterruptContextMessage("errPrintf called from interrupt level\n"); return; } errlogInit(0); isOkToBlock = epicsThreadIsOkToBlock(); if (status == 0) status = errno; if (status > 0) { errSymLookup(status, name, sizeof(name)); } if (pvtData.atExit || (isOkToBlock && pvtData.toConsole)) { if (pFileName) fprintf(pvtData.console, "filename=\"%s\" line number=%d\n", pFileName, lineno); if (status > 0) fprintf(pvtData.console, "%s ", name); va_start(pvar, pformat); vfprintf(pvtData.console, pformat, pvar); va_end(pvar); fputc('\n', pvtData.console); fflush(pvtData.console); } if (pvtData.atExit) return; pnext = msgbufGetFree(isOkToBlock); if (!pnext) return; if (pFileName) { nchar = sprintf(pnext,"filename=\"%s\" line number=%d\n", pFileName, lineno); pnext += nchar; totalChar += nchar; } if (status > 0) { nchar = sprintf(pnext,"%s ",name); pnext += nchar; totalChar += nchar; } va_start(pvar, pformat); nchar = tvsnPrint(pnext, pvtData.maxMsgSize - totalChar - 1, pformat, pvar); va_end(pvar); if (nchar>0) { pnext += nchar; totalChar += nchar; } strcpy(pnext, "\n"); totalChar++ ; /*include the \n */ msgbufSetSize(totalChar); }