![]() |
|
|||
File indexing completed on 2025-05-11 08:24:22
0001 /* SPDX-License-Identifier: BSD-2-Clause */ 0002 0003 /** 0004 * @file 0005 * 0006 * @ingroup RTEMSImplClassicUserExt 0007 * 0008 * @brief This source file contains the implementation of 0009 * rtems_extension_create() and the User Extensions Manager system 0010 * initialization. 0011 */ 0012 0013 /* 0014 * COPYRIGHT (c) 1989-2007. 0015 * On-Line Applications Research Corporation (OAR). 0016 * 0017 * Redistribution and use in source and binary forms, with or without 0018 * modification, are permitted provided that the following conditions 0019 * are met: 0020 * 1. Redistributions of source code must retain the above copyright 0021 * notice, this list of conditions and the following disclaimer. 0022 * 2. Redistributions in binary form must reproduce the above copyright 0023 * notice, this list of conditions and the following disclaimer in the 0024 * documentation and/or other materials provided with the distribution. 0025 * 0026 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 0027 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 0028 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 0029 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 0030 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 0031 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 0032 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 0033 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 0034 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 0035 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 0036 * POSSIBILITY OF SUCH DAMAGE. 0037 */ 0038 0039 #ifdef HAVE_CONFIG_H 0040 #include "config.h" 0041 #endif 0042 0043 #include <rtems/extensionimpl.h> 0044 #include <rtems/rtems/support.h> 0045 #include <rtems/score/userextimpl.h> 0046 #include <rtems/sysinit.h> 0047 0048 rtems_status_code rtems_extension_create( 0049 rtems_name name, 0050 const rtems_extensions_table *extension_table, 0051 rtems_id *id 0052 ) 0053 { 0054 Extension_Control *the_extension; 0055 0056 if ( !rtems_is_name_valid( name ) ) { 0057 return RTEMS_INVALID_NAME; 0058 } 0059 0060 if ( extension_table == NULL ) { 0061 return RTEMS_INVALID_ADDRESS; 0062 } 0063 0064 if ( id == NULL ) { 0065 return RTEMS_INVALID_ADDRESS; 0066 } 0067 0068 the_extension = _Extension_Allocate(); 0069 0070 if ( the_extension == NULL ) { 0071 _Objects_Allocator_unlock(); 0072 return RTEMS_TOO_MANY; 0073 } 0074 0075 _User_extensions_Add_set_with_table( &the_extension->Extension, extension_table ); 0076 0077 *id = _Objects_Open_u32( 0078 &_Extension_Information, 0079 &the_extension->Object, 0080 name 0081 ); 0082 _Objects_Allocator_unlock(); 0083 return RTEMS_SUCCESSFUL; 0084 } 0085 0086 static void _Extension_Manager_initialization( void ) 0087 { 0088 _Objects_Initialize_information( &_Extension_Information); 0089 } 0090 0091 RTEMS_SYSINIT_ITEM( 0092 _Extension_Manager_initialization, 0093 RTEMS_SYSINIT_USER_EXTENSIONS, 0094 RTEMS_SYSINIT_ORDER_MIDDLE 0095 );
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |