source: rtems/testsuites/mptests/mp02/task1.c @ 48e02af

4.11
Last change on this file since 48e02af was a4bc4d6e, checked in by Ralf Corsepius <ralf.corsepius@…>, on Feb 22, 2011 at 10:00:39 AM

Add HAVE_CONFIG_H.

  • Property mode set to 100644
File size: 3.3 KB
RevLine 
[ac7d5ef0]1/*  Test_task
2 *
3 *  This task tests the rtems_task_set_note directive on a remote task and that
4 *  errors are returned when attempting to delete, start, or restart
5 *  a remote task.
6 *
7 *  Input parameters:
8 *    argument - task argument
9 *
10 *  Output parameters:  NONE
11 *
[9992cac]12 *  COPYRIGHT (c) 1989-2009.
[ac7d5ef0]13 *  On-Line Applications Research Corporation (OAR).
14 *
[98e4ebf]15 *  The license and distribution terms for this file may be
16 *  found in the file LICENSE in this distribution or at
[d7a0857]17 *  http://www.rtems.com/license/LICENSE.
[ac7d5ef0]18 *
19 *  $Id$
20 */
21
[a4bc4d6e]22#ifdef HAVE_CONFIG_H
23#include "config.h"
24#endif
25
[ac7d5ef0]26#include "system.h"
27
28extern rtems_multiprocessing_table Multiprocessing_configuration;
29
30rtems_task Test_task(
31  rtems_task_argument argument
32)
33{
34  rtems_id          tid;
35  rtems_status_code status;
[65450c14]36  uint32_t          remote_node;
[ac7d5ef0]37  rtems_id          remote_tid;
38  rtems_id          test_tid;
[65450c14]39  uint32_t          note;
40  uint32_t          tmpNode;
[ac7d5ef0]41
42  status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid );
43
44  remote_node = (Multiprocessing_configuration.node == 1) ? 2 : 1;
45  printf( "Remote task's name is : " );
46  put_name( Task_name[ remote_node ], TRUE );
47
48  puts( "Getting TID of remote task (all nodes)" );
49  do {
50      status = rtems_task_ident(
51          Task_name[ remote_node ],
52          RTEMS_SEARCH_ALL_NODES,
53          &remote_tid
54          );
55  } while ( status != RTEMS_SUCCESSFUL );
56
57  directive_failed( status, "rtems_task_ident" );
58
59  puts( "Getting TID of remote task (1 node)" );
60  status = rtems_task_ident( Task_name[ remote_node ], remote_node, &test_tid );
61  directive_failed( status, "rtems_task_ident" );
62
63  if ( test_tid != remote_tid ) {
64    puts( "rtems_task_ident tid's do not match!!" );
65    rtems_fatal_error_occurred( status );
66  }
67
68  status = rtems_task_delete( remote_tid );
69  fatal_directive_status(
70    status,
71    RTEMS_ILLEGAL_ON_REMOTE_OBJECT,
72    "rtems_task_delete of remote task"
73  );
74  puts( "rtems_task_delete of remote task returned the correct error" );
75
76  status = rtems_task_start( remote_tid, Test_task, 0 );
77  fatal_directive_status(
78    status,
79    RTEMS_ILLEGAL_ON_REMOTE_OBJECT,
80    "rtems_task_start of remote task"
81  );
82  puts( "rtems_task_start of remote task returned the correct error" );
83
84  status = rtems_task_restart( remote_tid, 0 );
85  fatal_directive_status(
86    status,
87    RTEMS_ILLEGAL_ON_REMOTE_OBJECT,
88    "rtems_task_restart of remote task"
89  );
90  puts( "rtems_task_restart of remote task returned the correct error" );
91
[65450c14]92  tmpNode = rtems_object_id_get_node(tid);
[58397d88]93  printf( "Setting notepad %" PRId32 " of the remote task to %" PRId32 "\n", tmpNode, tmpNode );
[65450c14]94  status = rtems_task_set_note( remote_tid, tmpNode, tmpNode );
[ac7d5ef0]95  directive_failed( status, "rtems_task_set_note" );
96
97  puts( "Getting a notepad of the remote task" );
[65450c14]98  status = rtems_task_get_note( remote_tid, tmpNode, &note );
[ac7d5ef0]99  directive_failed( status, "rtems_task_get_note" );
100
[65450c14]101  if ( note == tmpNode )
[ac7d5ef0]102    puts( "Remote notepad set and read correctly" );
103  else
104    printf(
[58397d88]105      "FAILURE!! Remote notepad was not set and read correctly (%" PRId32 ", %" PRId32 ")\n",
[ac7d5ef0]106      note,
[65450c14]107      tmpNode
[ac7d5ef0]108    );
109
[9992cac]110  status = rtems_task_wake_after( rtems_clock_get_ticks_per_second() );
[ac7d5ef0]111  directive_failed( status, "rtems_task_wake_after" );
112
113  puts( "*** END OF TEST 2 ***" );
[116845e8]114  rtems_test_exit( 0 );
[ac7d5ef0]115}
Note: See TracBrowser for help on using the repository browser.