RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
tasks.h
Go to the documentation of this file.
1
9/*
10 * COPYRIGHT (c) 1989-2014.
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.org/license/LICENSE.
16 */
17
18#ifndef _RTEMS_RTEMS_TASKS_H
19#define _RTEMS_RTEMS_TASKS_H
20
21#include <rtems/rtems/attr.h>
22#include <rtems/rtems/status.h>
23#include <rtems/rtems/types.h>
24#include <rtems/score/smp.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
44#define RTEMS_SELF OBJECTS_ID_OF_SELF
45
50#define RTEMS_YIELD_PROCESSOR WATCHDOG_NO_TIMEOUT
51
55typedef uint32_t rtems_task_priority;
56
63#define RTEMS_NO_PRIORITY RTEMS_CURRENT_PRIORITY
64
69#define RTEMS_MINIMUM_PRIORITY 1
70
71rtems_task_priority _RTEMS_Maximum_priority( void );
72
83#define RTEMS_MAXIMUM_PRIORITY _RTEMS_Maximum_priority()
84
89#define RTEMS_CURRENT_PRIORITY 0
90
91struct _Thread_Control;
92
97
101typedef void rtems_task;
102
107
113 );
114
121typedef struct {
137
159 rtems_name name,
160 rtems_task_priority initial_priority,
161 size_t stack_size,
162 rtems_mode initial_modes,
163 rtems_attribute attribute_set,
164 rtems_id *id
165);
166
188 rtems_name name,
189 uint32_t node,
190 rtems_id *id
191);
192
208 rtems_id id
209);
210
211void rtems_task_exit( void ) RTEMS_NO_RETURN;
212
229 rtems_mode mode_set,
230 rtems_mode mask,
231 rtems_mode *previous_mode_set
232);
233
247 rtems_id id,
248 rtems_task_argument argument
249);
250
265 rtems_id id
266);
267
281 rtems_id id
282);
283
300 rtems_id id,
301 rtems_task_priority new_priority,
302 rtems_task_priority *old_priority
303);
304
329 rtems_id task_id,
330 rtems_id scheduler_id,
331 rtems_task_priority *priority
332);
333
344 rtems_id id,
345 rtems_task_entry entry_point,
346 rtems_task_argument argument
347);
348
361 rtems_time_of_day *time_buffer
362);
363
375 rtems_interval ticks
376);
377
385 rtems_id id
386);
387
406 rtems_id id,
407 size_t cpusetsize,
408 cpu_set_t *cpuset
409);
410
439 rtems_id id,
440 size_t cpusetsize,
441 const cpu_set_t *cpuset
442);
443
456 rtems_id task_id,
457 rtems_id *scheduler_id
458);
459
484 rtems_id task_id,
485 rtems_id scheduler_id,
486 rtems_task_priority priority
487);
488
495
507typedef bool ( *rtems_task_visitor )( rtems_tcb *tcb, void *arg );
508
524 rtems_task_visitor visitor,
525 void *arg
526);
527
541 rtems_name name,
542 rtems_id *id
543);
544
558 uint32_t cpu_index,
559 rtems_id *id
560);
561
582 size_t cpusetsize,
583 const cpu_set_t *cpuset,
584 rtems_id *id
585);
586
604#define rtems_scheduler_get_processor() _SMP_Get_current_processor()
605
615RTEMS_DEPRECATED RTEMS_INLINE_ROUTINE uint32_t
617{
619}
620
637#define rtems_scheduler_get_processor_maximum() _SMP_Get_processor_maximum()
638
648RTEMS_DEPRECATED RTEMS_INLINE_ROUTINE uint32_t
650{
652}
653
671 rtems_id scheduler_id,
672 size_t cpusetsize,
673 cpu_set_t *cpuset
674);
675
696 rtems_id scheduler_id,
697 uint32_t cpu_index
698);
699
721 rtems_id scheduler_id,
722 uint32_t cpu_index
723);
724
736 rtems_id scheduler_id,
737 rtems_task_priority *priority
738);
739
753 rtems_id scheduler_id,
754 rtems_task_priority priority,
755 int *posix_priority
756);
757
771 rtems_id scheduler_id,
772 int posix_priority,
773 rtems_task_priority *priority
774);
775
778#ifdef __cplusplus
779}
780#endif
781
782#endif
783/* end of include file */
uint32_t rtems_attribute
Definition: attr.h:41
uint32_t rtems_mode
Definition: modes.h:41
rtems_status_code
Classic API Status.
Definition: status.h:43
bool(* rtems_task_visitor)(rtems_tcb *tcb, void *arg)
Task visitor.
Definition: tasks.h:507
rtems_status_code rtems_scheduler_remove_processor(rtems_id scheduler_id, uint32_t cpu_index)
Removes a processor from set of processors owned by the specified scheduler instance.
Definition: schedulerremoveprocessor.c:64
RTEMS_DEPRECATED RTEMS_INLINE_ROUTINE uint32_t rtems_get_processor_count(void)
Returns the processor maximum supported by the system.
Definition: tasks.h:649
rtems_status_code rtems_task_suspend(rtems_id id)
RTEMS Suspend Task.
Definition: tasksuspend.c:24
rtems_status_code rtems_task_set_scheduler(rtems_id task_id, rtems_id scheduler_id, rtems_task_priority priority)
Sets the scheduler instance of a task.
Definition: tasksetscheduler.c:23
RTEMS_DEPRECATED RTEMS_INLINE_ROUTINE uint32_t rtems_get_current_processor(void)
Returns the index of the current processor.
Definition: tasks.h:616
rtems_status_code rtems_task_set_affinity(rtems_id id, size_t cpusetsize, const cpu_set_t *cpuset)
Sets the processor affinity set of a task.
Definition: tasksetaffinity.c:26
#define rtems_scheduler_get_processor_maximum()
Returns the processor maximum supported by the system.
Definition: tasks.h:637
rtems_status_code rtems_scheduler_add_processor(rtems_id scheduler_id, uint32_t cpu_index)
Adds a processor to the set of processors owned by the specified scheduler instance.
Definition: scheduleraddprocessor.c:24
rtems_task(* rtems_task_entry)(rtems_task_argument)
Definition: tasks.h:111
rtems_status_code rtems_task_restart(rtems_id id, rtems_task_argument argument)
RTEMS Task Restart.
Definition: taskrestart.c:24
rtems_status_code rtems_scheduler_map_priority_from_posix(rtems_id scheduler_id, int posix_priority, rtems_task_priority *priority)
Map a POSIX thread priority to the corresponding task priority.
Definition: schedulermapfromposix.c:43
uint32_t rtems_name
Classic API object name type.
Definition: types.h:77
rtems_status_code rtems_task_resume(rtems_id id)
RTEMS Resume Task.
Definition: taskresume.c:24
rtems_status_code rtems_task_is_suspended(rtems_id id)
rtems_task_is_suspended
Definition: taskissuspended.c:25
rtems_status_code rtems_scheduler_get_processor_set(rtems_id scheduler_id, size_t cpusetsize, cpu_set_t *cpuset)
Gets the set of processors owned by the specified scheduler instance.
Definition: schedulergetprocessorset.c:22
rtems_status_code rtems_task_wake_after(rtems_interval ticks)
RTEMS Task Wake After.
Definition: taskwakeafter.c:25
void rtems_task_iterate(rtems_task_visitor visitor, void *arg)
Iterates over all tasks in the system.
Definition: taskiterate.c:23
rtems_status_code rtems_scheduler_ident_by_processor_set(size_t cpusetsize, const cpu_set_t *cpuset, rtems_id *id)
Identifies a scheduler by a processor set.
Definition: scheduleridentbyprocessorset.c:23
rtems_status_code rtems_scheduler_ident(rtems_name name, rtems_id *id)
Identifies a scheduler by its name.
Definition: schedulerident.c:22
rtems_status_code rtems_scheduler_map_priority_to_posix(rtems_id scheduler_id, rtems_task_priority priority, int *posix_priority)
Map a task priority to the corresponding POSIX thread priority.
Definition: schedulermaptoposix.c:43
rtems_status_code rtems_task_ident(rtems_name name, uint32_t node, rtems_id *id)
RTEMS Task Name to Id.
Definition: taskident.c:29
uint32_t rtems_task_priority
Definition: tasks.h:55
Objects_Id rtems_id
Used to manage and manipulate RTEMS object identifiers.
Definition: types.h:83
rtems_status_code rtems_scheduler_get_maximum_priority(rtems_id scheduler_id, rtems_task_priority *priority)
Gets the maximum task priority of the specified scheduler instance.
Definition: schedulergetmaxprio.c:35
rtems_status_code rtems_task_create(rtems_name name, rtems_task_priority initial_priority, size_t stack_size, rtems_mode initial_modes, rtems_attribute attribute_set, rtems_id *id)
RTEMS Task Create.
Definition: taskcreate.c:36
#define rtems_scheduler_get_processor()
Returns the index of the current processor.
Definition: tasks.h:604
rtems_status_code rtems_task_start(rtems_id id, rtems_task_entry entry_point, rtems_task_argument argument)
RTEMS Start Task.
Definition: taskstart.c:25
rtems_status_code rtems_task_get_priority(rtems_id task_id, rtems_id scheduler_id, rtems_task_priority *priority)
Gets the current priority of the specified task with respect to the specified scheduler instance.
Definition: taskgetpriority.c:23
rtems_status_code rtems_scheduler_ident_by_processor(uint32_t cpu_index, rtems_id *id)
Identifies a scheduler by a processor index.
Definition: scheduleridentbyprocessor.c:23
Watchdog_Interval rtems_interval
Used to manage and manipulate intervals specified by clock ticks.
Definition: types.h:127
rtems_status_code rtems_task_wake_when(rtems_time_of_day *time_buffer)
RTEMS Task Wake When.
Definition: taskwakewhen.c:27
rtems_status_code rtems_task_mode(rtems_mode mode_set, rtems_mode mask, rtems_mode *previous_mode_set)
RTEMS Task Mode.
Definition: taskmode.c:30
void rtems_task
Definition: tasks.h:101
rtems_status_code rtems_task_get_scheduler(rtems_id task_id, rtems_id *scheduler_id)
Gets the scheduler of a task.
Definition: taskgetscheduler.c:22
rtems_id rtems_task_self(void)
RTEMS Get Self Task Id.
Definition: taskself.c:23
rtems_status_code rtems_task_set_priority(rtems_id id, rtems_task_priority new_priority, rtems_task_priority *old_priority)
RTEMS Set Task Priority.
Definition: tasksetpriority.c:61
CPU_Uint32ptr rtems_task_argument
Definition: tasks.h:106
rtems_status_code rtems_task_get_affinity(rtems_id id, size_t cpusetsize, cpu_set_t *cpuset)
Gets the processor affinity set of a task.
Definition: taskgetaffinity.c:26
rtems_status_code rtems_task_delete(rtems_id id)
RTEMS Delete Task.
Definition: taskdelete.c:24
#define RTEMS_NO_RETURN
Definition: basedefs.h:102
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:66
uintptr_t CPU_Uint32ptr
Definition: cpu.h:662
SuperCore SMP Support API.
Definition: thread.h:732
Definition: tasks.h:121
rtems_task_entry entry_point
Definition: tasks.h:131
rtems_task_priority initial_priority
Definition: tasks.h:127
rtems_name name
Definition: tasks.h:123
rtems_mode mode_set
Definition: tasks.h:133
rtems_attribute attribute_set
Definition: tasks.h:129
size_t stack_size
Definition: tasks.h:125
rtems_task_argument argument
Definition: tasks.h:135
Data structure to manage and manipulate calendar time.
Definition: types.h:141