更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
los_stackinfo_pri.h
浏览该文件的文档.
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#ifndef _LOS_STACK_INFO_PRI_H
33#define _LOS_STACK_INFO_PRI_H
34
35#include "los_typedef.h"
36#include "arch_config.h"
37
38#ifdef __cplusplus
39#if __cplusplus
40extern "C" {
41#endif /* __cplusplus */
42#endif /* __cplusplus */
43
44/*! \struct StackInfo
45* 栈信息
46*/
47typedef struct {
48 VOID *stackTop; ///< 栈顶
49 UINT32 stackSize; ///< 栈大小
50 CHAR *stackName; ///< 栈名称
51} StackInfo;
52
53#define OS_INVALID_WATERLINE 0xFFFFFFFF
54#define OS_STACK_MAGIC_CHECK(topstack) (*(UINTPTR *)(topstack) == OS_STACK_MAGIC_WORD) /* 1:magic valid 0:unvalid */
55
56extern VOID OsExcStackInfo(VOID);
57extern VOID OsExcStackInfoReg(const StackInfo *stackInfo, UINT32 stackNum);
58extern VOID OsStackInit(VOID *stacktop, UINT32 stacksize);
59
60/**
61 * @ingroup los_task
62 * @brief Get stack waterline.
63 *
64 * @par Description:
65 * This API is used to get stack waterline size and check stack whether overflow.
66 *
67 * @attention None
68 *
69 * @param stackBottom [IN] Type #const UINTPTR * pointer to stack bottom.
70 * @param stackTop [IN] Type #const UINTPTR * pointer to stack top.
71 * @param peakUsed [OUT] Type #UINT32 * stack waterline.
72 *
73 * @retval #LOS_NOK stack overflow
74 * @retval #LOS_OK stack is normal, not overflow
75 * @par Dependency:
76 * <ul><li>los_stackinfo_pri.h: the header file that contains the API declaration.</li></ul>
77 * @see
78 */
79extern UINT32 OsStackWaterLineGet(const UINTPTR *stackBottom, const UINTPTR *stackTop, UINT32 *peakUsed);
80
81#ifdef __cplusplus
82#if __cplusplus
83}
84#endif /* __cplusplus */
85#endif /* __cplusplus */
86
87#endif /* _LOS_STACK_INFO_PRI_H */
macro EXC_SP_SET stackBottom
Definition: asm.h:50
UINT32 OsStackWaterLineGet(const UINTPTR *stackBottom, const UINTPTR *stackTop, UINT32 *peakUsed)
Get stack waterline.
Definition: los_stackinfo.c:70
VOID OsExcStackInfoReg(const StackInfo *stackInfo, UINT32 stackNum)
注册栈信息
VOID OsStackInit(VOID *stacktop, UINT32 stacksize)
task栈的初始化,设置固定的值. 0xcccccccc 和 0xcacacaca
VOID OsExcStackInfo(VOID)
打印栈的信息 把每个CPU的栈信息打印出来
unsigned long UINTPTR
Definition: los_typedef.h:68
unsigned int UINT32
Definition: los_typedef.h:57
char CHAR
Definition: los_typedef.h:63
UINT32 stackSize
栈大小
VOID * stackTop
栈顶
CHAR * stackName
栈名称