1 /* 2 * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. 3 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright notice, this list of 9 * conditions and the following disclaimer. 10 * 11 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 * of conditions and the following disclaimer in the documentation and/or other materials 13 * provided with the distribution. 14 * 15 * 3. Neither the name of the copyright holder nor the names of its contributors may be used 16 * to endorse or promote products derived from this software without specific prior written 17 * permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 /** 33 * @defgroup los_exchook Exception hooks 34 * @ingroup kernel 35 */ 36 37 #ifndef _LOS_EXCHOOK_H 38 #define _LOS_EXCHOOK_H 39 40 #include "los_tick.h" 41 #include "los_debug.h" 42 #include "los_arch_interrupt.h" 43 #include "los_interrupt.h" 44 #include "los_task.h" 45 #include "los_queue.h" 46 47 #ifdef __cplusplus 48 #if __cplusplus 49 extern "C" { 50 #endif /* __cplusplus */ 51 #endif /* __cplusplus */ 52 53 /** 54 * @ingroup los_exchook 55 * @brief: System exception hooks register function. 56 * 57 * @par Description: 58 * This API is used to register exception hooks. 59 * Hooks will be invoked in reverse order. 60 * 61 * @attention: 62 * <ul><li>This function should not be call in excHookFn.</li></ul> 63 * 64 * @param: None. 65 * 66 * @retval: LOS_OK success. 67 * LOS_ERRNO_SYS_HOOK_IS_FULL too many hooks registered. @see LOSCFG_BASE_EXC_HOOK_LIMIT 68 * LOS_ERRNO_SYS_PTR_NULL excHookFn is null or invalid excType. 69 * 70 * @par Dependency: 71 * <ul><li>los_exchook.h: the header file that contains the API declaration.</li></ul> 72 * @see None. 73 * 74 * */ 75 extern UINT32 LOS_RegExcHook(EXC_TYPE excType, ExcHookFn excHookFn); 76 77 /** 78 * @ingroup los_exchook 79 * @brief: System exception hooks unregister function. 80 * 81 * @par Description: 82 * This API is used to unregister exception hooks. 83 * 84 * @attention: 85 * <ul><li>This function should not be call in excHookFn.</li></ul> 86 * 87 * @param: None. 88 * 89 * @retval: LOS_OK success. 90 * LOS_ERRNO_SYS_PTR_NULL excHookFn is null or invalid excType. 91 * 92 * @par Dependency: 93 * <ul><li>los_exchook.h: the header file that contains the API declaration.</li></ul> 94 * @see None. 95 * 96 * */ 97 extern UINT32 LOS_UnRegExcHook(EXC_TYPE excType, ExcHookFn excHookFn); 98 99 #ifdef __cplusplus 100 #if __cplusplus 101 } 102 #endif /* __cplusplus */ 103 #endif /* __cplusplus */ 104 105 #endif /* _LOS_EXCHOOK_H */ 106