summaryrefslogtreecommitdiffstats
path: root/c_user/example_application.rst
diff options
context:
space:
mode:
authorAmar Takhar <amar@rtems.org>2016-01-17 19:19:43 -0500
committerAmar Takhar <verm@darkbeer.org>2016-05-02 20:51:24 -0400
commitfd6dc8c8de4dbc7ecf8a82a597cd5b43476fc8e3 (patch)
tree50fdc708f26d94fbdc844602ad7c212588b7904e /c_user/example_application.rst
parentFix markup. (diff)
downloadrtems-docs-fd6dc8c8de4dbc7ecf8a82a597cd5b43476fc8e3.tar.bz2
Split document into seperate files by section.
Diffstat (limited to 'c_user/example_application.rst')
-rw-r--r--c_user/example_application.rst66
1 files changed, 66 insertions, 0 deletions
diff --git a/c_user/example_application.rst b/c_user/example_application.rst
new file mode 100644
index 0000000..dcec917
--- /dev/null
+++ b/c_user/example_application.rst
@@ -0,0 +1,66 @@
+Example Application
+###################
+
+.. code:: c
+
+ /*
+ * This file contains an example of a simple RTEMS
+ * application. It instantiates the RTEMS Configuration
+ * Information using confdef.h and contains two tasks:
+ * a user initialization task and a simple task.
+ \*/
+ #include <rtems.h>
+ rtems_task user_application(rtems_task_argument argument);
+ rtems_task init_task(
+ rtems_task_argument ignored
+ )
+ {
+ rtems_id tid;
+ rtems_status_code status;
+ rtems_name name;
+ name = rtems_build_name( 'A', 'P', 'P', '1' )
+ status = rtems_task_create(
+ name, 1, RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_NO_PREEMPT, RTEMS_FLOATING_POINT, &tid
+ );
+ if ( status != RTEMS_STATUS_SUCCESSFUL ) {
+ printf( "rtems_task_create failed with status of %d.\\n", status );
+ exit( 1 );
+ }
+ status = rtems_task_start( tid, user_application, 0 );
+ if ( status != RTEMS_STATUS_SUCCESSFUL ) {
+ printf( "rtems_task_start failed with status of %d.\\n", status );
+ exit( 1 );
+ }
+ status = rtems_task_delete( SELF ); /* should not return \*/
+ printf( "rtems_task_delete returned with status of %d.\\n", status );
+ exit( 1 );
+ }
+ rtems_task user_application(rtems_task_argument argument)
+ {
+ /* 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.
+ \*/
+ }
+ }
+ /* The Console Driver supplies Standard I/O. \*/
+ #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+ /* The Clock Driver supplies the clock tick. \*/
+ #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+ #define CONFIGURE_MAXIMUM_TASKS 2
+ #define CONFIGURE_INIT_TASK_NAME rtems_build_name( 'E', 'X', 'A', 'M' )
+ #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+ #define CONFIGURE_INIT
+ #include <rtems/confdefs.h>
+
+.. COMMENT: COPYRIGHT (c) 1989-2011.
+
+.. COMMENT: On-Line Applications Research Corporation (OAR).
+
+.. COMMENT: All rights reserved.
+