Beispiel #1
0
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);
    }
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
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();
}