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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [tests/] [mptests/] [mp08/] [task1.c] - Blame information for rev 507

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
/*  Test_task
2
 *
3
 *  This task tests global semaphore operations.  It verifies that
4
 *  global semaphore errors are correctly returned.
5
 *
6
 *  Input parameters:
7
 *    argument - task argument
8
 *
9
 *  Output parameters:  NONE
10
 *
11
 *  COPYRIGHT (c) 1989-1999.
12
 *  On-Line Applications Research Corporation (OAR).
13
 *
14
 *  The license and distribution terms for this file may be
15
 *  found in the file LICENSE in this distribution or at
16
 *  http://www.OARcorp.com/rtems/license.html.
17
 *
18
 *  $Id: task1.c,v 1.2 2001-09-27 12:02:19 chris Exp $
19
 */
20
 
21
#include "system.h"
22
 
23
rtems_task Test_task(
24
  rtems_task_argument argument
25
)
26
{
27
  rtems_unsigned32  count;
28
  rtems_status_code status;
29
 
30
  puts( "Getting SMID of semaphore" );
31
 
32
  do {
33
    status = rtems_semaphore_ident(
34
      Semaphore_name[ 1 ],
35
      RTEMS_SEARCH_ALL_NODES,
36
      &Semaphore_id[ 1 ]
37
    );
38
  } while ( !rtems_is_status_successful( status ) );
39
 
40
  if ( Multiprocessing_configuration.node == 2 ) {
41
    status = rtems_semaphore_delete( Semaphore_id[ 1 ] );
42
    fatal_directive_status(
43
      status,
44
      RTEMS_ILLEGAL_ON_REMOTE_OBJECT,
45
      "rtems_semaphore_delete did not return RTEMS_ILLEGAL_ON_REMOTE_OBJECT"
46
    );
47
    puts(
48
      "rtems_semaphore_delete correctly returned RTEMS_ILLEGAL_ON_REMOTE_OBJECT"
49
    );
50
  }
51
 
52
  count = 0;            /* number of times node 1 releases semaphore */
53
  while ( FOREVER ) {
54
    put_dot( 'p' );
55
    status = rtems_semaphore_obtain(
56
      Semaphore_id[ 1 ],
57
      RTEMS_DEFAULT_OPTIONS,
58
      RTEMS_NO_TIMEOUT
59
    );
60
    if ( status != RTEMS_SUCCESSFUL ) {
61
      fatal_directive_status(
62
        status,
63
        RTEMS_OBJECT_WAS_DELETED,
64
        "rtems_semaphore_obtain"
65
      );
66
      puts( "\nGlobal semaphore deleted" );
67
      puts( "*** END OF TEST 8 ***" );
68
      exit( 0 );
69
    }
70
 
71
    if ( Multiprocessing_configuration.node == 1 && ++count == 1000 ) {
72
      status = rtems_task_wake_after( TICKS_PER_SECOND );
73
      directive_failed( status, "rtems_task_wake_after" );
74
 
75
      puts( "\nDeleting global semaphore" );
76
      status = rtems_semaphore_delete( Semaphore_id[ 1 ] );
77
      directive_failed( status, "rtems_semaphore_delete" );
78
 
79
      puts( "*** END OF TEST 8 ***" );
80
      exit( 0 );
81
    }
82
    else {
83
      put_dot( 'v' );
84
      status = rtems_semaphore_release( Semaphore_id[ 1 ] );
85
      directive_failed( status, "rtems_semaphore_release FAILED!!" );
86
    }
87
  }
88
}

powered by: WebSVN 2.1.0

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