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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [c/] [src/] [tests/] [samples/] [unlimited/] [init.c] - Blame information for rev 1026

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

Line No. Rev Author Line
1 1026 ivang
/*  Init
2
 *
3
 *  This routine is the initialization task for this test program.
4
 *  It is called from init_exec and has the responsibility for creating
5
 *  and starting the tasks that make up the test.  If the time of day
6
 *  clock is required for the test, it should also be set to a known
7
 *  value by this function.
8
 *
9
 *  Input parameters:  NONE
10
 *
11
 *  Output parameters:  NONE
12
 *
13
 *  COPYRIGHT (c) 1989-1997.
14
 *  On-Line Applications Research Corporation (OAR).
15
 *
16
 *  The license and distribution terms for this file may in
17
 *  the file LICENSE in this distribution or at
18
 *  http://www.OARcorp.com/rtems/license.html.
19
 *
20
 *  init.c,v 1.5 2002/04/17 14:01:40 joel Exp
21
 */
22
 
23
#define CONFIGURE_INIT
24
 
25
#include "system.h"
26
#include <stdio.h>
27
#include <stdlib.h>
28
 
29
rtems_id task_id[MAX_TASKS];
30
 
31
void test1();
32
void test2();
33
 
34
rtems_task Init(
35
  rtems_task_argument ignored
36
)
37
{
38
  rtems_task_priority old_priority;
39
  rtems_mode          old_mode;
40
  rtems_unsigned32    task;
41
 
42
  /* lower the task priority to allow created tasks to execute */
43
 
44
  rtems_task_set_priority(RTEMS_SELF, 20, &old_priority);
45
  rtems_task_mode(RTEMS_PREEMPT,  RTEMS_PREEMPT_MASK, &old_mode);
46
 
47
  printf( "\n*** UNLIMITED TASK TEST ***\n" );
48
 
49
  /*
50
   * Invalid state if the task id is 0
51
   */
52
 
53
  for (task = 0; task < MAX_TASKS; task++)
54
    task_id[task] = 0;
55
 
56
  test1();
57
  test2();
58
  test3();
59
 
60
  printf( "\n*** END OF UNLIMITED TASK TEST ***\n" );
61
  exit( 0 );
62
}
63
 
64
rtems_task test_task(
65
  rtems_task_argument my_number
66
  )
67
{
68
  rtems_event_set out;
69
 
70
  printf( "task %i has started.\n",  my_number);
71
 
72
  rtems_event_receive(1, RTEMS_WAIT | RTEMS_EVENT_ANY, 0, &out);
73
 
74
  printf( "task %i ending.\n",  my_number);
75
 
76
  rtems_task_delete(RTEMS_SELF);
77
}
78
 
79
void destory_all_tasks(
80
  const char *who
81
)
82
{
83
  rtems_unsigned32 task;
84
 
85
  /*
86
   *  If the id is not zero, signal the task to delete.
87
   */
88
 
89
  for (task = 0; task < MAX_TASKS; task++)
90
    if (task_id[task])
91
    {
92
      printf(" %s : signal task %08x to delete, ", who, task_id[task]);
93
      fflush(stdout);
94
      rtems_event_send(task_id[task], 1);
95
      task_id[task] = 0;
96
    }
97
}
98
 
99
boolean status_code_bad(
100
  rtems_status_code status_code
101
  )
102
{
103
  if (status_code != RTEMS_SUCCESSFUL)
104
  {
105
    printf("failure, ");
106
 
107
    if (status_code == RTEMS_TOO_MANY)
108
    {
109
      printf("too many.\n");
110
      return TRUE;
111
    }
112
    if (status_code == RTEMS_UNSATISFIED)
113
    {
114
      printf("unsatisfied.\n");
115
      return TRUE;
116
    }
117
 
118
    printf("error code = %i\n", status_code);
119
    exit( 1 );
120
  }
121
  return FALSE;
122
}
123
 
124
 
125
 
126
 
127
 

powered by: WebSVN 2.1.0

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