⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 validate.c

📁 linux环境支持psos的操作系统。非常适合进行移植的朋友。
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -