OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [c/] [src/] [tests/] [mptests/] [mp14/] [evtask1.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1026 ivang
/*  Test_task
2
 *
3
 *  This task either continuously sends events to a remote task, or
4
 *  continuously receives events sent by a remote task.  This decision
5
 *  is based upon the local node number.
6
 *
7
 *  Input parameters:
8
 *    argument - task argument
9
 *
10
 *  Output parameters:  NONE
11
 *
12
 *  COPYRIGHT (c) 1989-1999.
13
 *  On-Line Applications Research Corporation (OAR).
14
 *
15
 *  The license and distribution terms for this file may be
16
 *  found in the file LICENSE in this distribution or at
17
 *  http://www.OARcorp.com/rtems/license.html.
18
 *
19
 *  evtask1.c,v 1.8 1999/11/17 17:51:31 joel Exp
20
 */
21
 
22
#include "system.h"
23
 
24
extern rtems_multiprocessing_table Multiprocessing_configuration;
25
 
26
rtems_task Test_task(
27
  rtems_task_argument argument
28
)
29
{
30
  rtems_status_code status;
31
  rtems_unsigned32  count;
32
  rtems_unsigned32  remote_node;
33
  rtems_id          remote_tid;
34
  rtems_event_set   event_out;
35
 
36
  remote_node = ((Multiprocessing_configuration.node == 1) ? 2 : 1);
37
 
38
  puts( "About to go to sleep!" );
39
  status = rtems_task_wake_after( TICKS_PER_SECOND );
40
  directive_failed( status, "rtems_task_wake_after" );
41
  puts( "Waking up!" );
42
 
43
  puts_nocr( "Remote task's name is : " );
44
  put_name( Task_name[ remote_node ], TRUE );
45
 
46
  puts( "Getting TID of remote task" );
47
  while ( FOREVER ) {
48
    status = rtems_task_ident(
49
      Task_name[ remote_node ],
50
      RTEMS_SEARCH_ALL_NODES,
51
      &remote_tid
52
    );
53
 
54
    if ( status == RTEMS_SUCCESSFUL )
55
      break;
56
    puts( "rtems_task_ident FAILED!!" );
57
    rtems_task_wake_after(2);
58
  }
59
 
60
  if ( Multiprocessing_configuration.node == 1 ) {
61
    puts( "Sending events to remote task" );
62
    while ( Stop_Test == FALSE ) {
63
      for ( count=EVENT_TASK_DOT_COUNT; Stop_Test == FALSE && count; count-- ) {
64
        status = rtems_event_send( remote_tid, RTEMS_EVENT_16 );
65
        directive_failed( status, "rtems_event_send" );
66
     }
67
     put_dot( 'e' );
68
    }
69
  }
70
 
71
  puts( "Receiving events from remote task" );
72
  while ( Stop_Test == FALSE ) {
73
    for ( count=EVENT_TASK_DOT_COUNT ; Stop_Test == FALSE && count ; count-- ) {
74
      status = rtems_event_receive(
75
        RTEMS_EVENT_16,
76
        RTEMS_DEFAULT_OPTIONS,
77
        RTEMS_NO_TIMEOUT,
78
        &event_out
79
      );
80
      directive_failed( status, "rtems_event_receive" );
81
    }
82
    put_dot( 'e' );
83
  }
84
 
85
  Exit_test();
86
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.