STATUS pcmciaJobAdd ( VOIDFUNCPTR func, /* function pointer */ int arg1, /* argument 1 */ int arg2, /* argument 2 */ int arg3, /* argument 3 */ int arg4, /* argument 4 */ int arg5, /* argument 5 */ int arg6 /* argument 6 */ ) { PCMCIA_MSG msg; msg.func = func; msg.arg[0] = arg1; msg.arg[1] = arg2; msg.arg[2] = arg3; msg.arg[3] = arg4; msg.arg[4] = arg5; msg.arg[5] = arg6; if (msgQSend (pcmciaMsgQId, (char *) &msg, sizeof (msg), INT_CONTEXT() ? NO_WAIT : WAIT_FOREVER, MSG_PRI_NORMAL) != OK) { ++pcmciaMsgsLost; return (ERROR); } return (OK); }
STATUS excJobAdd( VOIDFUNCPTR func, ARG arg0, ARG arg1, ARG arg2, ARG arg3, ARG arg4, ARG arg5 ) { STATUS status; int wt; EXC_MSG message; if (excLibInstalled != TRUE) { status = ERROR; } else { /* Setup work structure */ message.func = func; message.arg[0] = arg0; message.arg[1] = arg1; message.arg[2] = arg2; message.arg[3] = arg3; message.arg[4] = arg4; message.arg[5] = arg5; /* Select wait method */ if (INT_CONTEXT() == TRUE) { wt = WAIT_NONE; } else { wt = WAIT_FOREVER; } /* Send message to queue */ if (msgQSend( excMsgQId, &message, sizeof(message), wt, MSG_PRI_NORMAL ) != OK) { ++excMsgsLost; status = ERROR; } else { status = OK; } } return status; }
int logMsg( char *fmt, ARG arg0, ARG arg1, ARG arg2, ARG arg3, ARG arg4, ARG arg5 ) { int ret; int timeout; LOG_MSG logMsg; /* If called from interupt */ if (INT_CONTEXT() == TRUE) { logMsg.id = -1; timeout = WAIT_NONE; } else { logMsg.id = taskIdSelf(); timeout = WAIT_FOREVER; } /* Setup struct */ logMsg.fmt = fmt; logMsg.arg[0] = arg0; logMsg.arg[1] = arg1; logMsg.arg[2] = arg2; logMsg.arg[3] = arg3; logMsg.arg[4] = arg4; logMsg.arg[5] = arg5; /* If message got error when sending */ if (msgQSend( logMsgQId, &logMsg, sizeof(logMsg), timeout, MSG_PRI_NORMAL ) != OK) { logMsgsLost++; ret = EOF; } else { ret = sizeof(logMsg); } return ret; }
int sal_vprintf(const char *fmt, va_list varg) { int retv; if (INT_CONTEXT() || sal_int_locked()) { #ifdef HAVE_DIRECT_SERIAL retv = sal_vprintf_direct(fmt, varg); #else /* !HAVE_DIRECT_SERIAL */ unsigned int a1, a2, a3, a4, a5, a6; a1 = va_arg(varg, unsigned int); a2 = va_arg(varg, unsigned int); a3 = va_arg(varg, unsigned int); a4 = va_arg(varg, unsigned int); a5 = va_arg(varg, unsigned int); a6 = va_arg(varg, unsigned int); /* Note: logMsg allows only 6 arguments */ retv = logMsg((char *) fmt, a1, a2, a3, a4, a5, a6); #endif /* !HAVE_DIRECT_SERIAL */ } else {
/*lint -save -e18 -e64*/ MAILBOX_EXTERN int mailbox_int_context(void) { return INT_CONTEXT(); }