source: rtems/testsuites/psxtests/psxconfig01/init.c @ 9a4eca5

Last change on this file since 9a4eca5 was 1d40d81b, checked in by Sebastian Huber <sebastian.huber@…>, on May 3, 2016 at 5:38:19 AM

rtems: Remove task variables

Update #2494.
Update #2555.

  • Property mode set to 100644
File size: 15.0 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup psxtests
5 *
6 * @brief Test that the workspace size estimate is correct.
7 */
8
9/*
10 * Copyright (c) 2014. On-Line Applications Research Corporation (OAR).
11 * Copyright (c) 2011-2014 embedded brains GmbH.  All rights reserved.
12 *
13 *  embedded brains GmbH
14 *  Dornierstr. 4
15 *  82178 Puchheim
16 *  Germany
17 *  <rtems@embedded-brains.de>
18 *
19 * The license and distribution terms for this file may be
20 * found in the file LICENSE in this distribution or at
21 * http://www.rtems.org/license/LICENSE.
22 */
23
24#ifdef HAVE_CONFIG_H
25  #include "config.h"
26#endif
27
28#include <rtems/test.h>
29#include <tmacros.h>
30
31#include <sys/stat.h>
32#include <fcntl.h>
33#include <inttypes.h>
34#include <mqueue.h>
35#include <pthread.h>
36#include <semaphore.h>
37#include <signal.h>
38#include <stdio.h>
39#include <time.h>
40#include <limits.h>
41
42#include <rtems/libcsupport.h>
43
44const char rtems_test_name[] = "PSXCONFIG 1";
45
46#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 5
47
48#define CONFIGURE_MAXIMUM_POSIX_KEYS 23
49#ifdef CONFIGURE_MAXIMUM_POSIX_KEYS
50  #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS CONFIGURE_MAXIMUM_POSIX_KEYS
51#endif
52
53#define CONFIGURE_MAXIMUM_BARRIERS 2
54#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 7
55#define CONFIGURE_MAXIMUM_PARTITIONS 37
56#define CONFIGURE_MAXIMUM_PERIODS 41
57#define CONFIGURE_MAXIMUM_REGIONS 43
58#define CONFIGURE_MAXIMUM_SEMAPHORES 47
59#define CONFIGURE_MAXIMUM_TASKS 11
60#define CONFIGURE_MAXIMUM_TIMERS 59
61#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 17
62
63#define CONFIGURE_MAXIMUM_POSIX_BARRIERS 31
64#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 29
65#define POSIX_MQ_COUNT 5
66#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 19
67#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 7
68#define CONFIGURE_MAXIMUM_POSIX_RWLOCKS 31
69#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 41
70#define CONFIGURE_MAXIMUM_POSIX_SPINLOCKS 17
71#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
72
73#define CONFIGURE_MAXIMUM_POSIX_THREADS 3
74#define CONFIGURE_MAXIMUM_POSIX_TIMERS 47
75
76#ifndef CONFIGURE_MAXIMUM_TASKS
77  #define CONFIGURE_MAXIMUM_TASKS 1
78#endif
79
80#ifdef CONFIGURE_MAXIMUM_MESSAGE_QUEUES
81  #define MQ_0_COUNT 2
82  #define MQ_1_COUNT 3
83  #define MQ_2_COUNT 5
84  #define MQ_3_COUNT 7
85  #define MQ_4_COUNT 11
86  #define MQ_5_COUNT 13
87  #define MQ_6_COUNT 17
88
89  #define MQ_0_SIZE 101
90  #define MQ_1_SIZE 103
91  #define MQ_2_SIZE 107
92  #define MQ_3_SIZE 109
93  #define MQ_4_SIZE 113
94  #define MQ_5_SIZE 127
95  #define MQ_6_SIZE 131
96
97  #define MQ_BUFFER_MEMORY \
98    (CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(MQ_0_COUNT, MQ_0_SIZE) \
99      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(MQ_1_COUNT, MQ_1_SIZE) \
100      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(MQ_2_COUNT, MQ_2_SIZE) \
101      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(MQ_3_COUNT, MQ_3_SIZE) \
102      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(MQ_4_COUNT, MQ_4_SIZE) \
103      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(MQ_5_COUNT, MQ_5_SIZE) \
104      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(MQ_6_COUNT, MQ_6_SIZE))
105
106  static const uint8_t mq_counts [CONFIGURE_MAXIMUM_MESSAGE_QUEUES] = {
107    MQ_0_COUNT,
108    MQ_1_COUNT,
109    MQ_2_COUNT,
110    MQ_3_COUNT,
111    MQ_4_COUNT,
112    MQ_5_COUNT,
113    MQ_6_COUNT
114  };
115
116  static const uint8_t mq_sizes [CONFIGURE_MAXIMUM_MESSAGE_QUEUES] = {
117    MQ_0_SIZE,
118    MQ_1_SIZE,
119    MQ_2_SIZE,
120    MQ_3_SIZE,
121    MQ_4_SIZE,
122    MQ_5_SIZE,
123    MQ_6_SIZE
124  };
125#else
126  #define MQ_BUFFER_MEMORY 0
127#endif
128
129#ifdef POSIX_MQ_COUNT
130  #define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES POSIX_MQ_COUNT
131
132  #define POSIX_MQ_0_COUNT 2
133  #define POSIX_MQ_1_COUNT 3
134  #define POSIX_MQ_2_COUNT 5
135  #define POSIX_MQ_3_COUNT 7
136  #define POSIX_MQ_4_COUNT 11
137
138  #define POSIX_MQ_0_SIZE 137
139  #define POSIX_MQ_1_SIZE 139
140  #define POSIX_MQ_2_SIZE 149
141  #define POSIX_MQ_3_SIZE 151
142  #define POSIX_MQ_4_SIZE 157
143
144  #define POSIX_MQ_BUFFER_MEMORY \
145    (CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(POSIX_MQ_0_COUNT, POSIX_MQ_0_SIZE) \
146      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(POSIX_MQ_1_COUNT, POSIX_MQ_1_SIZE) \
147      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(POSIX_MQ_2_COUNT, POSIX_MQ_2_SIZE) \
148      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(POSIX_MQ_3_COUNT, POSIX_MQ_3_SIZE) \
149      + CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(POSIX_MQ_4_COUNT, POSIX_MQ_4_SIZE))
150
151  static const uint8_t posix_mq_counts [POSIX_MQ_COUNT] = {
152    POSIX_MQ_0_COUNT,
153    POSIX_MQ_1_COUNT,
154    POSIX_MQ_2_COUNT,
155    POSIX_MQ_3_COUNT,
156    POSIX_MQ_4_COUNT
157  };
158
159  static const uint8_t posix_mq_sizes [POSIX_MQ_COUNT] = {
160    POSIX_MQ_0_SIZE,
161    POSIX_MQ_1_SIZE,
162    POSIX_MQ_2_SIZE,
163    POSIX_MQ_3_SIZE,
164    POSIX_MQ_4_SIZE
165  };
166#else
167  #define POSIX_MQ_BUFFER_MEMORY 0
168#endif
169
170#define CONFIGURE_MESSAGE_BUFFER_MEMORY \
171  (MQ_BUFFER_MEMORY + POSIX_MQ_BUFFER_MEMORY)
172
173#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
174#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
175
176#define CONFIGURE_MAXIMUM_DRIVERS 2
177
178#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
179
180#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
181
182#define CONFIGURE_INIT
183
184static rtems_task Init(rtems_task_argument argument);
185
186#include <rtems/confdefs.h>
187
188typedef struct {
189  uint64_t data [16];
190} area;
191
192#ifdef CONFIGURE_MAXIMUM_PARTITIONS
193  static area partition_areas [CONFIGURE_MAXIMUM_PARTITIONS];
194#endif
195
196#ifdef CONFIGURE_MAXIMUM_REGIONS
197  static area region_areas [CONFIGURE_MAXIMUM_REGIONS];
198#endif
199
200static char posix_name [_POSIX_PATH_MAX + 1];
201
202static char *get_posix_name(char a, char b, char c, int i)
203{
204  posix_name [_POSIX_PATH_MAX - 4] = a;
205  posix_name [_POSIX_PATH_MAX - 3] = b;
206  posix_name [_POSIX_PATH_MAX - 2] = c;
207  posix_name [_POSIX_PATH_MAX - 1] = 'A' + i;
208
209  return posix_name;
210}
211
212static void *posix_thread(void *arg RTEMS_UNUSED)
213{
214  rtems_test_assert(0);
215}
216
217static void posix_key_dtor(void *key RTEMS_UNUSED)
218{
219  /* Do nothing */
220}
221
222static void print_info(void)
223{
224  Heap_Information_block info;
225  bool ok = rtems_workspace_get_information(&info);
226  rtems_test_assert(ok);
227
228  printf(
229    "used blocks = %" PRIu32 ", "
230    "largest used block = %" PRIu32 ", "
231    "used space = %" PRIu32 "\n"
232    "free blocks = %" PRIu32 ", "
233    "largest free block = %" PRIu32 ", "
234    "free space = %" PRIu32 "\n",
235    info.Used.number,
236    info.Used.largest,
237    info.Used.total,
238    info.Free.number,
239    info.Free.largest,
240    info.Free.total
241  );
242}
243
244static rtems_task Init(rtems_task_argument argument)
245{
246  rtems_status_code sc = RTEMS_SUCCESSFUL;
247  int eno = 0;
248  int rv = 0;
249  rtems_id id = RTEMS_ID_NONE;
250  rtems_name name = rtems_build_name('C', 'O', 'N', 'F');
251  rtems_extensions_table table;
252  rtems_resource_snapshot snapshot;
253  int i = 0;
254  pthread_key_t key;
255
256  TEST_BEGIN();
257
258  memset(posix_name, 'P', sizeof(posix_name) - 1);
259
260  print_info();
261
262  rtems_resource_snapshot_take(&snapshot);
263  rtems_test_assert(rtems_resource_snapshot_equal(&snapshot, &snapshot));
264  rtems_test_assert(rtems_resource_snapshot_check(&snapshot));
265
266#ifdef CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
267  for (i = 3; i < CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS; ++i) {
268    int oflag = O_WRONLY | O_CREAT | O_TRUNC;
269    mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
270    char path [] = { 'F', 'I', 'L', 'E', 'A' + i, '\0' };
271    int fd = open(path, oflag, mode);
272    rtems_test_assert(fd == i);
273  }
274  rtems_resource_snapshot_take(&snapshot);
275  rtems_test_assert(
276    snapshot.open_files == CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
277  );
278#endif
279
280#ifdef CONFIGURE_MAXIMUM_USER_EXTENSIONS
281  memset(&table, 0, sizeof(table));
282  for (i = 0; i < CONFIGURE_MAXIMUM_USER_EXTENSIONS; ++i) {
283    sc = rtems_extension_create(name, &table, &id);
284    directive_failed(sc, "rtems_extension_create");
285  }
286  rtems_resource_snapshot_take(&snapshot);
287  rtems_test_assert(
288    snapshot.rtems_api.active_extensions == CONFIGURE_MAXIMUM_USER_EXTENSIONS
289  );
290#endif
291
292#ifdef CONFIGURE_MAXIMUM_POSIX_KEYS
293  for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_KEYS; ++i) {
294    eno = pthread_key_create(&key, posix_key_dtor);
295    rtems_test_assert(eno == 0);
296
297    eno = pthread_setspecific(key, (void *) (uintptr_t)(i + 1));
298    rtems_test_assert(eno == 0);
299  }
300  eno = pthread_key_create(&key, posix_key_dtor);
301  rtems_test_assert(eno == EAGAIN);
302  rtems_resource_snapshot_take(&snapshot);
303  rtems_test_assert(
304    snapshot.active_posix_keys == CONFIGURE_POSIX_KEYS
305  );
306  rtems_test_assert(
307    snapshot.active_posix_key_value_pairs == CONFIGURE_MAXIMUM_POSIX_KEYS
308  );
309#else
310  (void) key;
311#endif
312
313#ifdef CONFIGURE_MAXIMUM_BARRIERS
314  for (i = 0; i < CONFIGURE_MAXIMUM_BARRIERS; ++i) {
315    sc = rtems_barrier_create(name, RTEMS_DEFAULT_ATTRIBUTES, 1, &id);
316    directive_failed(sc, "rtems_barrier_create");
317  }
318  rtems_resource_snapshot_take(&snapshot);
319  rtems_test_assert(
320    snapshot.rtems_api.active_barriers == CONFIGURE_MAXIMUM_BARRIERS
321  );
322#endif
323
324#ifdef CONFIGURE_MAXIMUM_MESSAGE_QUEUES
325  for (i = 0; i < CONFIGURE_MAXIMUM_MESSAGE_QUEUES; ++i) {
326    sc = rtems_message_queue_create(
327      name,
328      mq_counts [i],
329      mq_sizes [i],
330      RTEMS_DEFAULT_ATTRIBUTES,
331      &id
332    );
333    directive_failed(sc, "rtems_message_queue_create");
334  }
335  rtems_resource_snapshot_take(&snapshot);
336  rtems_test_assert(
337    snapshot.rtems_api.active_message_queues
338      == CONFIGURE_MAXIMUM_MESSAGE_QUEUES
339  );
340#endif
341
342#ifdef CONFIGURE_MAXIMUM_PARTITIONS
343  for (i = 0; i < CONFIGURE_MAXIMUM_PARTITIONS; ++i) {
344    sc = rtems_partition_create(
345      name,
346      partition_areas + i,
347      sizeof(partition_areas [0]),
348      sizeof(partition_areas [0]),
349      RTEMS_DEFAULT_ATTRIBUTES,
350      &id
351    );
352    directive_failed(sc, "rtems_partition_create");
353  }
354  rtems_resource_snapshot_take(&snapshot);
355  rtems_test_assert(
356    snapshot.rtems_api.active_partitions == CONFIGURE_MAXIMUM_PARTITIONS
357  );
358#endif
359
360#ifdef CONFIGURE_MAXIMUM_PERIODS
361  for (i = 0; i < CONFIGURE_MAXIMUM_PERIODS; ++i) {
362    sc = rtems_rate_monotonic_create(name, &id);
363    directive_failed(sc, "rtems_rate_monotonic_create");
364  }
365  rtems_resource_snapshot_take(&snapshot);
366  rtems_test_assert(
367    snapshot.rtems_api.active_periods == CONFIGURE_MAXIMUM_PERIODS
368  );
369#endif
370
371#ifdef CONFIGURE_MAXIMUM_REGIONS
372  for (i = 0; i < CONFIGURE_MAXIMUM_REGIONS; ++i) {
373    sc = rtems_region_create(
374      name,
375      region_areas + i,
376      sizeof(region_areas [0]),
377      1,
378      RTEMS_DEFAULT_ATTRIBUTES,
379      &id
380    );
381    directive_failed(sc, "rtems_region_create");
382  }
383  rtems_resource_snapshot_take(&snapshot);
384  rtems_test_assert(
385    snapshot.rtems_api.active_regions == CONFIGURE_MAXIMUM_REGIONS
386  );
387#endif
388
389#ifdef CONFIGURE_MAXIMUM_SEMAPHORES
390  for (i = 0; i < CONFIGURE_MAXIMUM_SEMAPHORES; ++i) {
391    sc = rtems_semaphore_create(
392      name,
393      0,
394      RTEMS_DEFAULT_ATTRIBUTES,
395      0,
396      &id
397    );
398    directive_failed(sc, "rtems_semaphore_create");
399  }
400  rtems_resource_snapshot_take(&snapshot);
401  rtems_test_assert(
402    snapshot.rtems_api.active_semaphores >= CONFIGURE_MAXIMUM_SEMAPHORES
403  );
404#endif
405
406#ifdef CONFIGURE_MAXIMUM_TASKS
407  for (i = 1; i < CONFIGURE_MAXIMUM_TASKS; ++i) {
408    sc = rtems_task_create(
409      name,
410      RTEMS_MINIMUM_PRIORITY,
411      RTEMS_MINIMUM_STACK_SIZE,
412      RTEMS_DEFAULT_MODES,
413      RTEMS_LOCAL | RTEMS_FLOATING_POINT,
414      &id
415    );
416    directive_failed(sc, "rtems_task_create");
417  }
418  rtems_resource_snapshot_take(&snapshot);
419  rtems_test_assert(
420    snapshot.rtems_api.active_tasks == CONFIGURE_MAXIMUM_TASKS
421  );
422#endif
423
424#ifdef CONFIGURE_MAXIMUM_TIMERS
425  for (i = 0; i < CONFIGURE_MAXIMUM_TIMERS; ++i) {
426    sc = rtems_timer_create(name, &id);
427    directive_failed(sc, "rtems_timer_create");
428  }
429  rtems_resource_snapshot_take(&snapshot);
430  rtems_test_assert(
431    snapshot.rtems_api.active_timers == CONFIGURE_MAXIMUM_TIMERS
432  );
433#endif
434
435#ifdef CONFIGURE_MAXIMUM_POSIX_BARRIERS
436  for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_BARRIERS; ++i) {
437    pthread_barrier_t barrier;
438    eno = pthread_barrier_init(&barrier, NULL, 1);
439    rtems_test_assert(eno == 0);
440  }
441  rtems_resource_snapshot_take(&snapshot);
442  rtems_test_assert(
443    snapshot.posix_api.active_barriers == CONFIGURE_MAXIMUM_POSIX_BARRIERS
444  );
445#endif
446
447#ifdef CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
448  for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES; ++i) {
449    pthread_cond_t cond;
450    eno = pthread_cond_init(&cond, NULL);
451    rtems_test_assert(eno == 0);
452  }
453  rtems_resource_snapshot_take(&snapshot);
454  rtems_test_assert(
455    snapshot.posix_api.active_condition_variables
456      == CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
457  );
458#endif
459
460#ifdef POSIX_MQ_COUNT
461  for (i = 0; i < POSIX_MQ_COUNT; ++i) {
462    int oflag = O_RDWR | O_CREAT | O_EXCL;
463    mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
464    struct mq_attr attr = {
465      .mq_maxmsg = posix_mq_counts [i],
466      .mq_msgsize = posix_mq_sizes [i]
467    };
468    char *path = get_posix_name('M', 'S', 'Q', i);
469    mqd_t mq = mq_open(path, oflag, mode, &attr);
470    rtems_test_assert(mq >= 0);
471  }
472  rtems_resource_snapshot_take(&snapshot);
473  rtems_test_assert(
474    snapshot.posix_api.active_message_queues
475      == CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
476  );
477#endif
478
479#ifdef CONFIGURE_MAXIMUM_POSIX_MUTEXES
480  for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_MUTEXES; ++i) {
481    pthread_mutex_t mutex;
482    eno = pthread_mutex_init(&mutex, NULL);
483    rtems_test_assert(eno == 0);
484  }
485  rtems_resource_snapshot_take(&snapshot);
486  rtems_test_assert(
487    snapshot.posix_api.active_mutexes == CONFIGURE_MAXIMUM_POSIX_MUTEXES
488  );
489#endif
490
491#ifdef CONFIGURE_MAXIMUM_POSIX_RWLOCKS
492  for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_RWLOCKS; ++i) {
493    pthread_rwlock_t rwlock;
494    eno = pthread_rwlock_init(&rwlock, NULL);
495    rtems_test_assert(eno == 0);
496  }
497  rtems_resource_snapshot_take(&snapshot);
498  rtems_test_assert(
499    snapshot.posix_api.active_rwlocks == CONFIGURE_MAXIMUM_POSIX_RWLOCKS
500  );
501#endif
502
503#ifdef CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
504  for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; ++i) {
505    int oflag = O_RDWR | O_CREAT | O_EXCL;
506    mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
507    unsigned int value = 0;
508    char *path = get_posix_name('S', 'E', 'M', i);
509    sem_t *sem = sem_open(path, oflag, mode, value);
510    rtems_test_assert(sem != SEM_FAILED);
511  }
512  rtems_resource_snapshot_take(&snapshot);
513  rtems_test_assert(
514    snapshot.posix_api.active_semaphores == CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
515  );
516#endif
517
518#ifdef CONFIGURE_MAXIMUM_POSIX_SPINLOCKS
519  for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_SPINLOCKS; ++i) {
520    pthread_spinlock_t spinlock;
521    eno = pthread_spin_init(&spinlock, 0);
522    rtems_test_assert(eno == 0);
523  }
524  rtems_resource_snapshot_take(&snapshot);
525  rtems_test_assert(
526    snapshot.posix_api.active_spinlocks == CONFIGURE_MAXIMUM_POSIX_SPINLOCKS
527  );
528#endif
529
530#ifdef CONFIGURE_MAXIMUM_POSIX_THREADS
531  for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_THREADS; ++i) {
532    pthread_t thread;
533    eno = pthread_create(&thread, NULL, posix_thread, NULL);
534    rtems_test_assert(eno == 0);
535  }
536  rtems_resource_snapshot_take(&snapshot);
537  rtems_test_assert(
538    snapshot.posix_api.active_threads == CONFIGURE_MAXIMUM_POSIX_THREADS
539  );
540#endif
541
542#ifdef CONFIGURE_MAXIMUM_POSIX_TIMERS
543  for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_TIMERS; ++i) {
544    timer_t timer_id;
545    rv = timer_create(CLOCK_REALTIME, NULL, &timer_id);
546    rtems_test_assert(rv == 0);
547  }
548  rtems_resource_snapshot_take(&snapshot);
549  rtems_test_assert(
550    snapshot.posix_api.active_timers == CONFIGURE_MAXIMUM_POSIX_TIMERS
551  );
552#endif
553
554  printf("object creation done\n");
555  print_info();
556
557  TEST_END();
558
559  rtems_test_exit(0);
560}
Note: See TracBrowser for help on using the repository browser.