summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1995-09-21 20:55:07 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1995-09-21 20:55:07 +0000
commit7af35da5ff4331086e60d66c8bb8466cd6925a40 (patch)
treef63e74f2e6231eda0b1c3861a2bbe7d4af205787 /cpukit/score
parentMore file movement (diff)
downloadrtems-7af35da5ff4331086e60d66c8bb8466cd6925a40.tar.bz2
More file movement required api extension to be added to score
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/include/rtems/score/apiext.h86
-rw-r--r--cpukit/score/src/apiext.c84
2 files changed, 170 insertions, 0 deletions
diff --git a/cpukit/score/include/rtems/score/apiext.h b/cpukit/score/include/rtems/score/apiext.h
new file mode 100644
index 0000000000..07ac4b4a93
--- /dev/null
+++ b/cpukit/score/include/rtems/score/apiext.h
@@ -0,0 +1,86 @@
+/* apiext.h
+ *
+ * XXX
+ *
+ * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
+ * On-Line Applications Research Corporation (OAR).
+ * All rights assigned to U.S. Government, 1994.
+ *
+ * This material may be reproduced by or for the U.S. Government pursuant
+ * to the copyright license under the clause at DFARS 252.227-7013. This
+ * notice must appear in all copies of this file and its derivatives.
+ *
+ * $Id$
+ */
+
+
+#ifndef __API_EXTENSIONS_h
+#define __API_EXTENSIONS_h
+
+#include <rtems/core/chain.h>
+
+/*
+ * The control structure which defines the points at which an API
+ * can add an extension to the system initialization thread.
+ */
+
+typedef void (*API_extensions_Predriver_hook)(void);
+typedef void (*API_extensions_Postdriver_hook)(void);
+
+typedef struct {
+ Chain_Node Node;
+ API_extensions_Predriver_hook predriver_hook;
+ API_extensions_Postdriver_hook postdriver_hook;
+} API_extensions_Control;
+
+/*
+ * This is the list of API extensions to the system initialization.
+ */
+
+EXTERN Chain_Control _API_extensions_List;
+
+/*
+ * _API_extensions_Initialization
+ *
+ * DESCRIPTION:
+ *
+ * This routine initializes the API extension handler.
+ *
+ */
+
+void _API_extensions_Initialization( void );
+
+/*
+ * _API_extensions_Add
+ *
+ * DESCRIPTION:
+ *
+ * XXX
+ */
+
+void _API_extensions_Add(
+ API_extensions_Control *the_extension
+);
+
+/*
+ * _API_extensions_Run_predriver
+ *
+ * DESCRIPTION:
+ *
+ * XXX
+ */
+
+void _API_extensions_Run_predriver( void );
+
+/*
+ * _API_extensions_Run_postdriver
+ *
+ * DESCRIPTION:
+ *
+ * XXX
+ */
+
+void _API_extensions_Run_postdriver( void );
+
+#endif
+/* end of include file */
diff --git a/cpukit/score/src/apiext.c b/cpukit/score/src/apiext.c
new file mode 100644
index 0000000000..60de0540f9
--- /dev/null
+++ b/cpukit/score/src/apiext.c
@@ -0,0 +1,84 @@
+/* apiext.c
+ *
+ * XXX
+ *
+ * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
+ * On-Line Applications Research Corporation (OAR).
+ * All rights assigned to U.S. Government, 1994.
+ *
+ * This material may be reproduced by or for the U.S. Government pursuant
+ * to the copyright license under the clause at DFARS 252.227-7013. This
+ * notice must appear in all copies of this file and its derivatives.
+ *
+ * $Id$
+ */
+
+
+#include <rtems/system.h>
+#include <rtems/core/apiext.h>
+
+/*PAGE
+ *
+ * _API_extensions_Initialization
+ */
+
+void _API_extensions_Initialization( void )
+{
+ _Chain_Initialize_empty( &_API_extensions_List );
+}
+
+/*PAGE
+ *
+ * _API_extensions_Add
+ */
+
+void _API_extensions_Add(
+ API_extensions_Control *the_extension
+)
+{
+ _Chain_Append( &_API_extensions_List, &the_extension->Node );
+}
+
+/*PAGE
+ *
+ * _API_extensions_Run_predriver
+ */
+
+void _API_extensions_Run_predriver( void )
+{
+ Chain_Node *the_node;
+ API_extensions_Control *the_extension;
+
+ for ( the_node = _API_extensions_List.first ;
+ !_Chain_Is_tail( &_API_extensions_List, the_node ) ;
+ the_node = the_node->next ) {
+
+ the_extension = (API_extensions_Control *) the_node;
+
+ if ( the_extension->predriver_hook )
+ (*the_extension->predriver_hook)();
+ }
+}
+
+/*PAGE
+ *
+ * _API_extensions_Run_postdriver
+ */
+
+void _API_extensions_Run_postdriver( void )
+{
+ Chain_Node *the_node;
+ API_extensions_Control *the_extension;
+
+ for ( the_node = _API_extensions_List.first ;
+ !_Chain_Is_tail( &_API_extensions_List, the_node ) ;
+ the_node = the_node->next ) {
+
+ the_extension = (API_extensions_Control *) the_node;
+
+ if ( the_extension->postdriver_hook )
+ (*the_extension->postdriver_hook)();
+ }
+}
+
+/* end of file */