From c3db01d0f37921ba809825e9c6b7fbe86b8fae5d Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 9 May 2007 18:27:26 +0000 Subject: 2007-05-09 Joel Sherrill * libcsupport/include/rtems/libcsupport.h, libcsupport/src/newlibc.c, sapi/Makefile.am, sapi/include/confdefs.h, sapi/src/exinit.c, score/Makefile.am, score/preinstall.am, score/include/rtems/score/userext.h, score/src/chain.c, score/src/userext.c: Switch to newlib reentrancy extension being installed in the initial set instead of using rtems_extension_create. While implementing this, noticed that user extensions and chain code had multiple functions in a single file which is not desirable in the SuperCore and API portions of RTEMS, so split these into multiple files with one function per file. Also noticed that some of user extension code was inlined for no particular reason so moved that to C bodies. Split executive shutdown from initialization since not every application shuts down. Moved __fini call to executive shutdown to be more symmetrical with where it is called at startup. * sapi/src/exshutdown.c, score/src/chainappend.c, score/src/chainextract.c, score/src/chainget.c, score/src/chaininsert.c, score/src/userextaddapiset.c, score/src/userextaddset.c, score/src/userextremoveset.c, score/src/userextthreadbegin.c, score/src/userextthreadcreate.c, score/src/userextthreaddelete.c, score/src/userextthreadrestart.c, score/src/userextthreadstart.c, score/src/userextthreadswitch.c: New files. * score/inline/rtems/score/userext.inl: Removed. --- cpukit/score/src/userextaddset.c | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 cpukit/score/src/userextaddset.c (limited to 'cpukit/score/src/userextaddset.c') diff --git a/cpukit/score/src/userextaddset.c b/cpukit/score/src/userextaddset.c new file mode 100644 index 0000000000..516477a50e --- /dev/null +++ b/cpukit/score/src/userextaddset.c @@ -0,0 +1,46 @@ +/* + * COPYRIGHT (c) 1989-2007. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +/** + * This routine is used to add a user extension set to the active list. + * + * @note Must be before _User_extensions_Handler_initialization to + * ensure proper inlining. + */ + +void _User_extensions_Add_set ( + User_extensions_Control *the_extension, + User_extensions_Table *extension_table +) +{ + the_extension->Callouts = *extension_table; + + _Chain_Append( &_User_extensions_List, &the_extension->Node ); + + /* + * If a switch handler is present, append it to the switch chain. + */ + + if ( extension_table->thread_switch != NULL ) { + the_extension->Switch.thread_switch = extension_table->thread_switch; + _Chain_Append( + &_User_extensions_Switches_list, + &the_extension->Switch.Node + ); + } +} -- cgit v1.2.3