summaryrefslogtreecommitdiffstats
path: root/c/src/lib/include/rtems++/rtemsTask.h
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/include/rtems++/rtemsTask.h')
-rw-r--r--c/src/lib/include/rtems++/rtemsTask.h171
1 files changed, 0 insertions, 171 deletions
diff --git a/c/src/lib/include/rtems++/rtemsTask.h b/c/src/lib/include/rtems++/rtemsTask.h
deleted file mode 100644
index 08156428fb..0000000000
--- a/c/src/lib/include/rtems++/rtemsTask.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- ------------------------------------------------------------------------
- $Id$
- ------------------------------------------------------------------------
-
- COPYRIGHT (c) 1997
- Objective Design Systems Ltd Pty (ODS)
- All rights reserved (R) Objective Design Systems Ltd Pty
-
- The license and distribution terms for this file may be found in the
- file LICENSE in this distribution or at
- http://www.OARcorp.com/rtems/license.html.
-
- ------------------------------------------------------------------------
-
- rtemsTask class.
-
- This class allows the user to create a RTEMS task, or to access and
- manage an already existing task.
-
- The first constructor with the task parameters creates a RTEMS task
- object. The destructor of this object also deletes the task
- object. The last status code should be checked after construction to
- see if the create completed successfully.
-
- The second constructor connects to an existing task object. The last
- status code should be checked after construction to see if the
- task existed.
-
- The third constructor is a copy constructor. Connects to an existing
- object which is in scope.
-
- The RTEMS id is set to self in the default construction.
-
- The creation of the task object can be defered until after
- construction. This allows for static task objects to be created.
-
- RTEMS should be initialised before static constructors run, how-ever
- threads will will not. You need to watch the start-order.
-
- A task object can change state from an owner of a task to being
- connected to a task.
-
- Task objects connected to another task do not receive notification
- when the task connected to changes state.
-
- The sleep methods operate on the current thread not the task
- reference by this object.
-
- Mode control is through the rtemsTaskMode class.
-
- The rtemsTask class reserved notepad register 31.
-
- ------------------------------------------------------------------------ */
-
-#if !defined(_rtemsTask_h_)
-#define _rtemsTask_h_
-
-#include <rtems++/rtemsStatusCode.h>
-
-/* ----
- rtemsTask
-*/
-
-class rtemsTask
- : public rtemsStatusCode
-{
-public:
- enum FloatingPoint { fpoff = RTEMS_NO_FLOATING_POINT,
- fpon = RTEMS_FLOATING_POINT };
- enum Scope { local = RTEMS_LOCAL,
- global = RTEMS_GLOBAL };
-
- // only the first 4 characters of the name are taken
-
- // creates a task
- rtemsTask(const char* name,
- const rtems_task_priority initial_priority,
- const rtems_unsigned32 stack_size,
- const rtems_mode preemption = RTEMS_NO_PREEMPT,
- const rtems_mode timeslice = RTEMS_NO_TIMESLICE,
- const rtems_mode asr = RTEMS_NO_ASR,
- const rtems_interrupt_level interrupt_level = 0,
- const FloatingPoint floating_point = fpoff,
- const Scope scope = local);
-
- // connects to a task
- rtemsTask(const char *name, const rtems_unsigned32 node = RTEMS_SEARCH_ALL_NODES);
-
- // copy and default constructors
- rtemsTask(const rtemsTask& task);
- rtemsTask();
-
- // only the creator's destructor will delete the actual object
- virtual ~rtemsTask();
-
- // create or destroy (delete) the task
- virtual const rtems_status_code create(const char* name,
- const rtems_task_priority initial_priority,
- const rtems_unsigned32 stack_size,
- const rtems_mode preemption = RTEMS_NO_PREEMPT,
- const rtems_mode timeslice = RTEMS_NO_TIMESLICE,
- const rtems_mode asr = RTEMS_NO_ASR,
- const rtems_interrupt_level interrupt_level = 0,
- const FloatingPoint floating_point = fpoff,
- const Scope scope = local);
- virtual const rtems_status_code destroy();
-
- // connect to an existing task object, will not be the owner
- const rtemsTask& operator=(const rtemsTask& task);
- virtual const rtems_status_code connect(const char *name,
- const rtems_unsigned32 node = RTEMS_SEARCH_ALL_NODES);
-
- // run control
- virtual const rtems_status_code start(const rtems_task_argument argument);
- virtual const rtems_status_code restart(const rtems_task_argument argument);
- virtual const rtems_status_code suspend();
- virtual const rtems_status_code resume();
-
- // sleep control, the timeout is in micro-seconds
- virtual const rtems_status_code wake_after(const rtems_interval micro_secs);
- virtual const rtems_status_code wake_when(const rtems_time_of_day& tod);
-
- // priority control
- const rtems_status_code get_priority(rtems_task_priority& priority);
- const rtems_status_code set_priority(const rtems_task_priority priority);
- const rtems_status_code set_priority(const rtems_task_priority priority,
- rtems_task_priority& old_priority);
-
- // notepad control
- const rtems_status_code get_note(const rtems_unsigned32 notepad,
- rtems_unsigned32& note);
- const rtems_status_code set_note(const rtems_unsigned32 notepad,
- const rtems_unsigned32 note);
-
- // object id, and name
- const rtems_id id_is() const { return id; }
- const rtems_name name_is() const { return name; }
- const char *name_string() const { return name_str; }
-
-protected:
-
- // task entry point
- virtual void body(rtems_task_argument argument);
-
-private:
-
- // make the object to point to RTEMS_SELF
- void make_self();
-
- // task name
- rtems_name name;
- char name_str[5];
-
- // owner, true if this object owns the task
- // will delete the task when it destructs
- bool owner;
-
- // the rtems id, object handle
- rtems_id id;
-
- // the argument for the task, this class uses the actual argument
- // passed to RTEMS
- rtems_task_argument argument;
-
- // common entry point to the task
- static rtems_task origin(rtems_task_argument argument);
-};
-
-#endif // _rtemsTask_h_
-