summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/thread.h
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1996-02-21 14:44:11 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1996-02-21 14:44:11 +0000
commitadf98bd423cabd47466b13d3432284da0d532176 (patch)
tree617673fc0cd37ebff3661097b40260ca7e2a434e /cpukit/score/include/rtems/score/thread.h
parentDispersal of internal thread handler resulted in IDLE thread becoming (diff)
downloadrtems-adf98bd423cabd47466b13d3432284da0d532176.tar.bz2
Removed the internal thread objects and dispersed its contents to
the thread handler (IDLE), MPCI object (SYSI now MP Receive) and initialize_executive_early (IO initialization). The SYSI task no longer exists in a single processor configuration. This reduces single processor Workspace requirements by a TCB and a stack which is often larger than the minimum stack size. Moving the IO initialization plus accompanying BSP hooks eliminated an initialization ordering problem in which a global task could be created before the MPCI was initialized.
Diffstat (limited to '')
-rw-r--r--cpukit/score/include/rtems/score/thread.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h
index 654dddc825..d904df439b 100644
--- a/cpukit/score/include/rtems/score/thread.h
+++ b/cpukit/score/include/rtems/score/thread.h
@@ -161,6 +161,28 @@ typedef struct {
} Thread_Control;
/*
+ * The following constants define the stack size requirements for
+ * the idle thread.
+ */
+
+
+#define THREAD_IDLE_STACK_SIZE STACK_MINIMUM_SIZE
+
+/*
+ * The following defines the information control block used to
+ * manage this class of objects.
+ */
+
+EXTERN Objects_Information _Thread_Internal_information;
+
+/*
+ * The following define the thread control pointers used to access
+ * and manipulate the idle thread.
+ */
+
+EXTERN Thread_Control *_Thread_Idle;
+
+/*
* The following context area contains the context of the "thread"
* which invoked the start multitasking routine. This context is
* restored as the last action of the stop multitasking routine. Thus
@@ -238,6 +260,18 @@ void _Thread_Handler_initialization (
);
/*
+ * _Thread_Create_idle
+ *
+ * DESCRIPTION:
+ *
+ * This routine creates the idle thread.
+ *
+ * WARNING!! No thread should be created before this one.
+ */
+
+void _Thread_Create_idle( void );
+
+/*
* _Thread_Start_multitasking
*
* DESCRIPTION:
@@ -756,6 +790,42 @@ STATIC INLINE boolean _Thread_Is_proxy_blocking (
unsigned32 code
);
+/*
+ * _Thread_Internal_allocate
+ *
+ * DESCRIPTION:
+ *
+ * This routine allocates an internal thread.
+ */
+
+STATIC INLINE Thread_Control *_Thread_Internal_allocate( void );
+
+/*
+ * _Thread_Internal_free
+ *
+ * DESCRIPTION:
+ *
+ * This routine frees an internal thread.
+ */
+
+STATIC INLINE void _Thread_Internal_free (
+ Thread_Control *the_task
+);
+
+/*
+ * _Thread_Idle_body
+ *
+ * DESCRIPTION:
+ *
+ * This routine is the body of the system idle thread.
+ */
+
+#if (CPU_PROVIDES_IDLE_THREAD_BODY == FALSE)
+Thread _Thread_Idle_body(
+ unsigned32 ignored
+);
+#endif
+
#include <rtems/score/thread.inl>
#include <rtems/score/threadmp.h>