Beispiel #1
0
static void task_B(u_long a0, u_long a1, u_long a2, u_long a3)
{
	u_long msgbuf[4];
	int ret, n;

	traceobj_enter(&trobj);

	traceobj_assert(&trobj, a0 == 1);
	traceobj_assert(&trobj, a1 == 2);
	traceobj_assert(&trobj, a2 == 3);
	traceobj_assert(&trobj, a3 == 4);

	traceobj_mark(&trobj, 4);

	for (n = 0; n < 3; n++) {
		ret = q_receive(qid, Q_WAIT, 10, msgbuf);
		traceobj_mark(&trobj, 5);
		traceobj_assert(&trobj, ret == SUCCESS);
		traceobj_assert(&trobj, msgbuf[0] == n + 1);
		traceobj_assert(&trobj, msgbuf[1] == n + 2);
		traceobj_assert(&trobj, msgbuf[2] == n + 3);
		traceobj_assert(&trobj, msgbuf[3] == n + 4);
	}

	traceobj_mark(&trobj, 6);

	traceobj_exit(&trobj);
}
Beispiel #2
0
void consumer_task (u_long a0, u_long a1, u_long a2, u_long a3)

{
    u_long err, qid = a0, msg[4];

    for (;;)
	{
	tm_wkafter(CONSUMER_WAIT);

	while ((err = q_receive(qid,Q_NOWAIT,0,msg)) == SUCCESS)
	    xnprintf("Now playing %s...\n",(const char *)msg[0]);

	if (err != ERR_NOMSG)
	    xnpod_fatal("q_receive() failed, errno %lu",err);
	}
}