source: rtems/testsuites/sptests/sp21/task1.c @ b3117727

4.104.114.84.95
Last change on this file since b3117727 was b3117727, checked in by Joel Sherrill <joel.sherrill@…>, on 05/29/07 at 18:37:45

2007-05-29 Joel Sherrill <joel.sherrill@…>

  • sp21/sp21.scn, sp21/task1.c: rtems_io_register_driver and rtems_io_unregister_driver did not have any test code.
  • Property mode set to 100644
File size: 6.1 KB
Line 
1/*  Task_1
2 *
3 *  This routine serves as a test task.  It tests the I/O manager.
4 *
5 *  Input parameters:
6 *    argument - task argument
7 *
8 *  Output parameters:  NONE
9 *
10 *  COPYRIGHT (c) 1989-2002.
11 *  On-Line Applications Research Corporation (OAR).
12 *
13 *  The license and distribution terms for this file may be
14 *  found in the file LICENSE in this distribution or at
15 *  http://www.rtems.com/license/LICENSE.
16 *
17 *  $Id$
18 */
19
20#include "system.h"
21
22#define STUB_DRIVER_MAJOR     0x2
23#define NO_DRIVER_MAJOR       0x3
24#define INVALID_DRIVER_MAJOR  (Configuration.number_of_device_drivers + 1)
25/* #define INVALID_DRIVER_MAJOR  0xffffffff */
26
27/* driver entries to use with io_register */
28rtems_driver_address_table GoodDriver = DEVNULL_DRIVER_TABLE_ENTRY;
29rtems_driver_address_table BadDriver_Nothing = {
30  NULL, NULL, NULL, NULL, NULL, NULL
31};
32
33rtems_task Task_1(
34  rtems_task_argument argument
35)
36{
37  rtems_status_code         status;
38  rtems_device_major_number registered;
39  rtems_device_major_number registered_worked;
40
41  puts( "-----  TESTING THE NULL DRIVER CHECKS  -----" );
42
43  status = rtems_io_initialize( NO_DRIVER_MAJOR, 0, NULL );
44  directive_failed( status, "rtems_io_initialize" );
45  puts( "TA1 - rtems_io_initialize  - NULL DRIVER RTEMS_SUCCESSFUL" );
46
47  status = rtems_io_open( NO_DRIVER_MAJOR, 0, NULL );
48  directive_failed( status, "rtems_io_open" );
49  puts( "TA1 - rtems_io_open        - NULL DRIVER RTEMS_SUCCESSFUL" );
50
51  status = rtems_io_close( NO_DRIVER_MAJOR, 0, NULL );
52  directive_failed( status, "rtems_io_close" );
53  puts( "TA1 - rtems_io_close       - NULL DRIVER RTEMS_SUCCESSFUL" );
54
55  status = rtems_io_read( NO_DRIVER_MAJOR, 0, NULL );
56  directive_failed( status, "rtems_io_read" );
57  puts( "TA1 - rtems_io_read        - NULL DRIVER RTEMS_SUCCESSFUL" );
58
59  status = rtems_io_write( NO_DRIVER_MAJOR, 0, NULL );
60  directive_failed( status, "rtems_io_write" );
61  puts( "TA1 - rtems_io_write       - NULL DRIVER RTEMS_SUCCESSFUL" );
62
63  status = rtems_io_control( NO_DRIVER_MAJOR, 0, NULL );
64  directive_failed( status, "rtems_io_control" );
65  puts( "TA1 - rtems_io_control     - NULL DRIVER RTEMS_SUCCESSFUL" );
66
67  puts( "-----  TESTING THE I/O MANAGER DIRECTIVES  -----" );
68
69  status = rtems_io_initialize( STUB_DRIVER_MAJOR, 0, NULL );
70  directive_failed( status, "rtems_io_initialize" );
71  puts( "TA1 - rtems_io_initialize  - STUB DRIVER RTEMS_SUCCESSFUL" );
72
73  status = rtems_io_open( STUB_DRIVER_MAJOR, 0, NULL );
74  directive_failed( status, "rtems_io_open" );
75  puts( "TA1 - rtems_io_open        - STUB DRIVER RTEMS_SUCCESSFUL" );
76
77  status = rtems_io_close( STUB_DRIVER_MAJOR, 0, NULL );
78  directive_failed( status, "rtems_io_close" );
79  puts( "TA1 - rtems_io_close       - STUB DRIVER RTEMS_SUCCESSFUL" );
80
81  status = rtems_io_read( STUB_DRIVER_MAJOR, 0, NULL );
82  directive_failed( status, "rtems_io_read" );
83  puts( "TA1 - rtems_io_read        - STUB DRIVER RTEMS_SUCCESSFUL" );
84
85  status = rtems_io_write( STUB_DRIVER_MAJOR, 0, NULL );
86  directive_failed( status, "rtems_io_write" );
87  puts( "TA1 - rtems_io_write       - STUB DRIVER RTEMS_SUCCESSFUL" );
88
89  status = rtems_io_control( STUB_DRIVER_MAJOR, 0, NULL );
90  directive_failed( status, "rtems_io_control" );
91  puts( "TA1 - rtems_io_control     - STUB DRIVER RTEMS_SUCCESSFUL" );
92
93
94  /*
95   *  Invalid major number
96   */
97  puts( "-----  RETURNING INVALID MAJOR NUMBER -----" );
98
99  status = rtems_io_initialize( INVALID_DRIVER_MAJOR, 0, NULL );
100  fatal_directive_status(
101    status,
102    RTEMS_INVALID_NUMBER,
103    "rtems_io_initialize"
104  );
105  puts( "TA1 - rtems_io_initialize  - RTEMS_INVALID_NUMBER" );
106
107  status = rtems_io_open( INVALID_DRIVER_MAJOR, 0, NULL );
108  fatal_directive_status(
109    status,
110    RTEMS_INVALID_NUMBER,
111    "rtems_io_open"
112  );
113  puts( "TA1 - rtems_io_open        - RTEMS_INVALID_NUMBER" );
114
115  /*
116   *  Exercise the io register driver directive
117   */
118  puts( "-----  EXERCISE DRIVER REGISTER -----" );
119
120  status = rtems_io_register_driver( 0, &GoodDriver, NULL );
121  fatal_directive_status(
122    status,
123    RTEMS_INVALID_ADDRESS,
124    "rtems_io_register_driver"
125  );
126  puts(
127   "TA1 - rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL registered"
128  );
129
130  status = rtems_io_register_driver( 0, NULL, &registered );
131  fatal_directive_status(
132    status,
133    RTEMS_INVALID_ADDRESS,
134    "rtems_io_register_driver"
135  );
136  puts(
137    "TA1 - rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL device"
138  );
139
140  status = rtems_io_register_driver( 0, &BadDriver_Nothing, &registered );
141  fatal_directive_status(
142    status,
143    RTEMS_INVALID_ADDRESS,
144    "rtems_io_register_driver"
145  );
146  puts(
147    "TA1 - rtems_io_register_driver - RTEMS_INVALID_ADDRESS - no callouts"
148  );
149
150  status = rtems_io_register_driver(
151    INVALID_DRIVER_MAJOR, &GoodDriver, &registered );
152  fatal_directive_status(
153    status,
154    RTEMS_INVALID_NUMBER,
155    "rtems_io_register_driver"
156  );
157  puts( "TA1 - rtems_io_register_driver - RTEMS_INVALID_NUMBER - bad major" );
158
159  /* this has to succeed to overwrite NULL driver entry required above. */
160  status = rtems_io_register_driver( 0, &GoodDriver, &registered_worked );
161  directive_failed( status, "rtems_io_register_driver" );
162  puts( "TA1 - rtems_io_register_driver - RTEMS_SUCCESSFUL - overwrite NULL" );
163
164  status = rtems_io_register_driver( 0, &GoodDriver, &registered );
165  if ( status == RTEMS_SUCCESSFUL )
166    printf( "registered major = %d\n", registered );
167  fatal_directive_status(
168    status,
169    RTEMS_TOO_MANY,
170    "rtems_io_register_driver"
171  );
172  puts( "TA1 - rtems_io_register_driver - RTEMS_TOO_MANY - no slots" );
173
174  /* there shuld be a driver at major 1 -- clock, console, or stub */
175  status = rtems_io_register_driver( 1, &GoodDriver, &registered );
176  fatal_directive_status(
177    status,
178    RTEMS_RESOURCE_IN_USE,
179    "rtems_io_register_driver"
180  );
181  puts(
182    "TA1 - rtems_io_register_driver - RTEMS_RESOURCE_IN_USE - major in use"
183  );
184
185  /* this should unregister the device driver we registered above */
186  status = rtems_io_unregister_driver( registered_worked );
187  directive_failed( status, "rtems_io_unregister_driver" );
188  puts( "TA1 - rtems_io_unregister_driver - RTEMS_SUCCESSFUL" );
189
190  puts( "*** END OF TEST 21 ***" );
191  rtems_test_exit( 0 );
192}
Note: See TracBrowser for help on using the repository browser.