mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-05 15:15:44 +00:00
106 lines
2.9 KiB
Plaintext
106 lines
2.9 KiB
Plaintext
@c
|
|
@c COPYRIGHT (c) 1988-1998.
|
|
@c On-Line Applications Research Corporation (OAR).
|
|
@c All rights reserved.
|
|
@c
|
|
@c $Id$
|
|
@c
|
|
|
|
@ifinfo
|
|
@node Example Application, Glossary, Directive Status Codes, Top
|
|
@end ifinfo
|
|
@chapter Example Application
|
|
|
|
@example
|
|
/* example.c
|
|
*
|
|
* This file contains an example of a simple RTEMS
|
|
* application. It contains a Configuration Table, a
|
|
* user initialization task, and a simple task.
|
|
*
|
|
* This example assumes that a board support package exists
|
|
* and invokes the initialize_executive() directive.
|
|
*/
|
|
|
|
#include "rtems.h"
|
|
|
|
rtems_task init_task();
|
|
|
|
#define INIT_NAME rtems_build_name( 'A', 'B', 'C', ' ' ' )
|
|
|
|
rtems_initialization_tasks_table init_task = @{
|
|
@{ INIT_NAME, /* init task name "ABC" */
|
|
1024, /* init task stack size */
|
|
1, /* init task priority */
|
|
DEFAULT_ATTRIBUTES, /* init task attributes */
|
|
init_task, /* init task entry point */
|
|
TIMESLICE, /* init task initial mode */
|
|
0 /* init task argument */
|
|
@}
|
|
@};
|
|
|
|
rtems_configuration_table User_Configuration_Table = @{
|
|
NULL, /* filled in by the BSP */
|
|
65536, /* executive RAM size */
|
|
2, /* maximum tasks */
|
|
0, /* maximum timers */
|
|
0, /* maximum semaphores */
|
|
0, /* maximum message queues */
|
|
0, /* maximum messages */
|
|
0, /* maximum partitions */
|
|
0, /* maximum regions */
|
|
0, /* maximum ports */
|
|
0, /* maximum periods */
|
|
0, /* maximum extensions */
|
|
RTEMS_MILLISECONDS_TO_MICROSECONDS(10), /* number of ms in a tick */
|
|
1, /* num of ticks in a timeslice */
|
|
1, /* number of user init tasks */
|
|
init_task_tbl, /* user init task(s) table */
|
|
0, /* number of device drivers */
|
|
NULL, /* ptr to driver address table */
|
|
NULL, /* ptr to extension table */
|
|
NULL /* ptr to MP config table */
|
|
@};
|
|
|
|
task user_application(
|
|
rtems_task_argument ignored
|
|
);
|
|
|
|
#define USER_APP_NAME 1 /* any 32-bit name; unique helps */
|
|
|
|
rtems_task init_task(
|
|
rtems_task_argument ignored
|
|
)
|
|
@{
|
|
rtems_id tid;
|
|
|
|
/* example assumes SUCCESSFUL return value */
|
|
|
|
(void) rtems_task_create( USER_APP_NAME, 1, 1024,
|
|
RTEMS_NO_PREEMPT, RTEMS_FLOATING_POINT, &tid );
|
|
(void) rtems_task_start( tid, user_application, 0 );
|
|
(void) rtems_task_delete( SELF );
|
|
@}
|
|
|
|
|
|
|
|
rtems_task user_application()
|
|
|
|
@{
|
|
/* application specific initialization goes here */
|
|
|
|
while ( 1 ) @{ /* infinite loop */
|
|
|
|
/* APPLICATION CODE GOES HERE
|
|
*
|
|
* This code will typically include at least one
|
|
* directive which causes the calling task to
|
|
* give up the processor.
|
|
*/
|
|
@}
|
|
@}
|
|
@end example
|
|
|
|
|
|
|