📄 validate.c
字号:
else
printf( "\npt_ident for PRT1 returned ID %lx partn1_id %lx\r\n",
my_partn_id, partn1_id );
err = pt_getbuf( partn2_id, (void **)&buffer );
if ( err != ERR_NO_ERROR )
printf( "\npt_getbuf on PRT2 returned error %lx\r\n", err );
else
printf( "\npt_getbuf on PRT2 returned buffer @ %p\r\n", buffer );
err = pt_retbuf( partn1_id, buffer );
if ( err != ERR_NO_ERROR )
printf( "\npt_retbuf on PRT1 returned error %lx\r\n", err );
else
printf( "\r\n" );
err = sm_delete( partn1_id );
printf( "\nsm_delete for PRT1 returned error %lx\r\n", err );
}
/*****************************************************************************
** task10
*****************************************************************************/
void task10( ULONG dummy0, ULONG dummy1, ULONG dummy2, ULONG dummy3 )
{
ULONG err;
int i;
for ( i = 0; i < 10; i++ )
{
tm_wkafter( 50 );
puts( "\n Task 10 Not Suspended." );
}
/************************************************************************
** First wait on empty SEM1 in pre-determined task order to test
** task wait-queueing order ( FIFO vs. PRIORITY ).
************************************************************************/
puts( "\nTask 10 waiting on EVENT10 to begin acquiring token from SEM1" );
err = ev_receive( EVENT10, EV_ALL, 0, (ULONG *)NULL );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
puts( "Task 10 signalling EVENT10 to Task 1 to indicate Task 10 ready." );
err = ev_send( task1_id, EVENT10 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx", err );
/*
** Consume one token from SEM1.
*/
puts( "\nTask 10 waiting indefinitely to acquire token from SEM1" );
if ( (err = sm_p( sema41_id, SM_WAIT, 0L )) == ERR_NO_ERROR )
printf( "\r\nTask 10 acquired token from SEM1\r\n" );
else
printf( "\nTask 10 sm_p on SEM1 returned error %lx\r\n", err );
/************************************************************************
** Next wait on SEM2 to demonstrate sm_p without wait.
************************************************************************/
/*
** Consume a token from SEM2 without waiting.
*/
puts( "\nTask 10 attempting to acquire token from SEM2 without waiting." );
if ( (err = sm_p( sema42_id, SM_NOWAIT, 0L )) == ERR_NO_ERROR )
printf( "\r\nTask 10 acquired token from SEM2\r\n" );
else
printf( "\nTask 10 sm_p on SEM2 returned error %lx\r\n", err );
puts( "Signalling EVENT10 to Task 1 - Task 10 ready to test SM_PRIOR." );
err = ev_send( task1_id, EVENT10 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
/************************************************************************
** Next wait on SEM3 in pre-determined task order to test
** task wait-queueing order ( FIFO vs. PRIORITY ).
************************************************************************/
puts( "\nTask 10 waiting on EVENT10 to begin acquiring token from SEM3" );
err = ev_receive( EVENT10, EV_ALL, 0, (ULONG *)NULL );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
puts( "Task 10 signalling EVENT10 to Task 1 to indicate Task 10 ready." );
err = ev_send( task1_id, EVENT10 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx", err );
/*
** Consume one token from SEM3.
*/
puts( "\nTask 10 waiting up to 1 second to acquire token from SEM3" );
if ( (err = sm_p( sema43_id, SM_WAIT, 100L )) == ERR_NO_ERROR )
printf( "\r\nTask 10 acquired token from SEM3\r\n" );
else
printf( "\nTask 10 sm_p on SEM3 returned error %lx\r\n", err );
puts( "Signalling EVENT10 to Task 1 - Task 10 finished SM_PRIOR test." );
err = ev_send( task1_id, EVENT10 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx", err );
/*
** Consume one token from SEM1.
*/
puts( "\nTask 10 waiting indefinitely to acquire token from SEM1" );
if ( (err = sm_p( sema41_id, SM_WAIT, 0L )) == ERR_NO_ERROR )
printf( "\r\nTask 10 acquired token from SEM1\r\n" );
else
printf( "\nTask 10 sm_p on SEM1 returned error %lx\r\n", err );
puts( "Signalling EVENT10 to Task 1 - Task 10 finished sm_delete test." );
err = ev_send( task1_id, EVENT10 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx", err );
/*
** Tests all done... delete our own task.
*/
puts( "\n.......... Task 10 deleting itself." );
err = t_delete( 0 );
}
/*****************************************************************************
** task9
*****************************************************************************/
void task9( ULONG dummy0, ULONG dummy1, ULONG dummy2, ULONG dummy3 )
{
ULONG err;
msgblk_t msg;
int i;
sleep( 1 );
/************************************************************************
** First wait on empty VLQ1 in pre-determined task order to test
** task wait-queueing order ( FIFO vs. PRIORITY ).
************************************************************************/
puts( "\nTask 9 waiting on EVENT9 to begin receive on VLQ1" );
err = ev_receive( EVENT9, EV_ALL, 0, (ULONG *)NULL );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
puts( "Task 9 signalling EVENT9 to Task 1 to indicate Task 9 ready." );
err = ev_send( task1_id, EVENT9 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx", err );
/*
** Consume 3 messages from VLQ1.
*/
i = 0;
puts( "\nTask 9 waiting indefinitely to receive 3 msgs on VLQ1" );
while ( (err = q_vreceive( vqueue1_id, Q_WAIT, 0L, msg.blk, 16, 0 ))
== ERR_NO_ERROR )
{
printf( "\r\nTask 9 rcvd Test Cycle %ld Msg No. %ld from %s\r\n",
msg.msg.t_cycle, msg.msg.msg_no, msg.msg.qname.name );
if ( ++i == 3 )
break;
}
printf( "\nTask 9 q_vreceive on VLQ1 returned error %lx\r\n", err );
puts( "Signalling EVENT9 to Task 1 - Task 9 finished queuing order test." );
err = ev_send( task1_id, EVENT9 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
/************************************************************************
** Next wait on empty VLQ3 to demonstrate q_send to zero-length queue.
************************************************************************/
puts( "\nTask 9 waiting on EVENT9 to begin receive on VLQ3" );
err = ev_receive( EVENT9, EV_ALL, 0, (ULONG *)NULL );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
puts( "Task 9 signalling EVENT9 to Task 1 to indicate Task 9 ready." );
err = ev_send( task1_id, EVENT9 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx", err );
/*
** Consume messages until 1 second elapses without an available message.
*/
puts( "\nTask 9 waiting up to 1 sec to receive msgs on VLQ3" );
while ( (err = q_vreceive( vqueue3_id, Q_WAIT, 100L, msg.blk, 16, 0 ))
== ERR_NO_ERROR )
{
printf( "\r\nTask 9 rcvd Test Cycle %ld Msg No. %ld from %s\r\n",
msg.msg.t_cycle, msg.msg.msg_no, msg.msg.qname.name );
}
printf( "\nTask 9 q_vreceive on VLQ3 returned error %lx\r\n", err );
puts( "Signalling EVENT9 to Task 1 - Task 9 finished zero-length test." );
err = ev_send( task1_id, EVENT9 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
/************************************************************************
** Now wait along with other tasks on empty VLQ1 to demonstrate
** queue broadcast behavior.
************************************************************************/
puts( "\nTask 9 waiting on EVENT9 to begin receive on VLQ1" );
err = ev_receive( EVENT9, EV_ALL, 0, (ULONG *)NULL );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
puts( "Task 9 signalling EVENT9 to Task 1 to indicate Task 9 ready." );
err = ev_send( task1_id, EVENT9 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx", err );
/*
** Consume messages until 1 second elapses without an available message.
*/
puts( "\nTask 9 waiting up to 1 sec to receive msgs on VLQ1" );
while ( (err = q_vreceive( vqueue1_id, Q_WAIT, 100L, msg.blk, 16, 0 ))
== ERR_NO_ERROR )
{
printf( "\r\nTask 9 rcvd Test Cycle %ld Msg No. %ld from %s\r\n",
msg.msg.t_cycle, msg.msg.msg_no, msg.msg.qname.name );
}
printf( "\nTask 9 q_vreceive on VLQ1 returned error %lx\r\n", err );
puts( "Signalling EVENT9 to Task 1 - Task 9 finished q_broadcast test." );
err = ev_send( task1_id, EVENT9 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
/************************************************************************
** Now wait along with other tasks on empty VLQ1 to demonstrate
** queue delete behavior.
************************************************************************/
puts( "\nTask 9 waiting on EVENT9 to begin receive on VLQ1" );
err = ev_receive( EVENT9, EV_ALL, 0, (ULONG *)NULL );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
puts( "Task 9 signalling EVENT9 to Task 1 to indicate Task 9 ready." );
err = ev_send( task1_id, EVENT9 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx", err );
/*
** Consume messages indefinitely.
*/
puts( "\nTask 9 waiting indefinitely to receive msgs on VLQ1" );
while ( (err = q_vreceive( vqueue1_id, Q_WAIT, 0L, msg.blk, 16, 0 ))
== ERR_NO_ERROR )
{
printf( "\r\nTask 9 rcvd Test Cycle %ld Msg No. %ld from %s\r\n",
msg.msg.t_cycle, msg.msg.msg_no, msg.msg.qname.name );
}
printf( "\nTask 9 q_vreceive on VLQ1 returned error %lx\r\n", err );
puts( "Signalling EVENT9 to Task 1 - Task 9 finished q_delete test." );
err = ev_send( task1_id, EVENT9 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
/*
** Tests all done... delete our own task.
*/
puts( "\n.......... Task 9 deleting itself." );
err = t_delete( 0 );
}
/*****************************************************************************
** task8
*****************************************************************************/
void task8( ULONG dummy0, ULONG dummy1, ULONG dummy2, ULONG dummy3 )
{
ULONG err;
msgblk_t msg;
sleep( 1 );
/************************************************************************
** First wait on empty QUE1 in pre-determined task order to test
** task wait-queueing order ( FIFO vs. PRIORITY ).
************************************************************************/
puts( "\nTask 8 waiting on EVENT8 to begin receive on QUE1" );
err = ev_receive( EVENT8, EV_ALL, 0, (ULONG *)NULL );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
puts( "Task 8 signalling EVENT8 to Task 1 to indicate Task 8 ready." );
err = ev_send( task1_id, EVENT8 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx", err );
/*
** Consume messages until 1 second elapses without an available message.
*/
puts( "\nTask 8 waiting up to 1 sec to receive msgs on QUE1" );
while ( (err = q_receive( queue1_id, Q_WAIT, 100L, msg.blk ))
== ERR_NO_ERROR )
{
printf( "\r\nTask 8 rcvd Test Cycle %ld Msg No. %ld from %s\r\n",
msg.msg.t_cycle, msg.msg.msg_no, msg.msg.qname.name );
}
printf( "\nTask 8 q_receive on QUE1 returned error %lx\r\n", err );
puts( "Signalling EVENT8 to Task 1 - Task 8 finished queuing order test." );
err = ev_send( task1_id, EVENT8 );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
/************************************************************************
** Next wait on empty QUE3 to demonstrate q_send to zero-length queue.
************************************************************************/
puts( "\nTask 8 waiting on EVENT8 to begin receive on QUE3" );
err = ev_receive( EVENT8, EV_ALL, 0, (ULONG *)NULL );
if ( err != ERR_NO_ERROR )
printf( " returned error %lx\r\n", err );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -