source: rtems/testsuites/libtests/rtems++/System.h @ 2268ee6

5
Last change on this file since 2268ee6 was d5154d0f, checked in by Aun-Ali Zaidi <admin@…>, on 12/23/15 at 20:44:02

api: Remove deprecated Notepads

Notepads where a feature of RTEMS' tasks that simply functioned in
the same way as POSIX keys or threaded local storage (TLS). They were
introduced well before per task variables, which are also deprecated,
and were barely used in favor of their POSIX alternatives.

In addition to their scarce usage, Notepads took up unnecessary memory.
For each task:

  • 16 32-bit integers were allocated.
  • A total of 64 bytes per task per thread.

This is especially critical in low memory and safety-critical applications.

They are also defined as uint32_t, and therefore are not guaranteed to
hold a pointer.

Lastly, they are not portable solutions for SMP and uniprocessor systems,
like POSIX keys and TLS.

updates #2493.

  • Property mode set to 100644
File size: 2.8 KB
Line 
1/*  system.h
2 *
3 *  This include file contains information that is included in every
4 *  function in the test set.
5 *
6 *  COPYRIGHT (c) 1989-2008.
7 *  On-Line Applications Research Corporation (OAR).
8 *
9 *  The license and distribution terms for this file may be
10 *  found in the file LICENSE in this distribution or at
11 *  http://www.rtems.org/license/LICENSE.
12 */
13
14#include <tmacros.h>
15#include <rtems++/rtemsEvent.h>
16#include <rtems++/rtemsMessageQueue.h>
17#include <rtems++/rtemsTask.h>
18#include <rtems++/rtemsTaskMode.h>
19
20/* functions */
21
22extern "C"
23{
24  rtems_task Init(
25    rtems_task_argument argument
26    );
27}
28
29rtems_timer_service_routine Delayed_routine(
30  rtems_id  ignored_id,
31  void     *ignored_address
32);
33
34class Task1
35  : public rtemsTask
36{
37  void print_mode(rtems_mode mode, rtems_mode mask);
38
39  void screen1(void);
40  void screen2(void);
41  void screen3(void);
42  void screen4(void);
43  void screen5(void);
44  void screen6(void);
45
46protected:
47  virtual void body(rtems_task_argument argument);
48
49public:
50};
51
52class Task2
53  : public rtemsTask
54{
55  void screen4(void);
56
57protected:
58  virtual void body(rtems_task_argument argument);
59
60public:
61  Task2(const char* name,
62        const rtems_task_priority initial_priority,
63        const uint32_t   stack_size);
64};
65
66class Task3
67  : public rtemsTask
68{
69  void screen6(void);
70
71protected:
72  virtual void body(rtems_task_argument argument);
73
74public:
75  Task3(const char* name,
76        const rtems_task_priority initial_priority,
77        const uint32_t   stack_size);
78};
79
80class EndTask
81  : public rtemsTask
82{
83protected:
84  virtual void body(rtems_task_argument argument);
85
86public:
87  EndTask(const char* name,
88          const rtems_task_priority initial_priority,
89          const uint32_t   stack_size);
90};
91
92#if 0
93
94//
95// Not sure this can be tested in a generic manner, any ideas anyone !!
96//
97
98class Service_routine
99  : public rtemsInterrupt
100{
101};
102
103class Io_during_interrupt
104  : pubic rtemsTimer
105{
106
107};
108
109#endif
110
111/* configuration information */
112
113#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
114#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
115
116#define CONFIGURE_MAXIMUM_TASKS               8
117#define CONFIGURE_MAXIMUM_TIMERS              1
118#define CONFIGURE_MAXIMUM_SEMAPHORES          2
119#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES      1
120#define CONFIGURE_MAXIMUM_PARTITIONS          1
121#define CONFIGURE_MAXIMUM_REGIONS             1
122#define CONFIGURE_MAXIMUM_PERIODS             1
123#define CONFIGURE_MAXIMUM_USER_EXTENSIONS     0
124#define CONFIGURE_TICKS_PER_TIMESLICE       100
125
126#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
127
128#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
129#define CONFIGURE_INIT_TASK_STACK_SIZE      (4 * RTEMS_MINIMUM_STACK_SIZE)
130
131#define CONFIGURE_EXTRA_TASK_STACKS         (13 * RTEMS_MINIMUM_STACK_SIZE)
132
133#include <rtems/confdefs.h>
134
135/* end of include file */
Note: See TracBrowser for help on using the repository browser.