1/**
2 * @file hi_os_stat.h
3 *
4 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/**
19 * @defgroup os_stat OS Status
20 * @ingroup osa
21 */
22
23#ifndef __HI_OS_STAT_H__
24#define __HI_OS_STAT_H__
25
26#include <hi_types_base.h>
27
28#define HI_OS_STAT_MSG_WAIT_FAIL     0x1   /**< Used in the interrupt context.CNcomment:中断上下文使用CNend */
29#define HI_OS_STAT_MSG_SEND_FAIL     0x2   /**< The timeout period of the interrupt context configuration is not 0,
30                                              and the queue is full.CNcomment:中断上下文配置超时时间不为0,
31                                              队列满 CNend */
32#define HI_OS_STAT_SEM_WAIT_FAIL     0x4   /**< Used in the interrupt context.CNcomment:中断上下文使用CNend */
33#define HI_OS_STAT_SEM_SIGNAL_FAIL   0x8   /**< Repeated release.CNcomment:重复释放CNend */
34#define HI_OS_STAT_MUX_PEND_FAIL     0x10  /**< Used in the interrupt context.CNcomment:中断上下文使用CNend  */
35#define HI_OS_STAT_MUX_POST_FAIL     0x20  /**< Cross-task use, not created.CNcomment:跨任务使用,未创建CNend  */
36#define HI_OS_STAT_EVENT_WAIT_FAIL   0x40  /**< Used in the interrupt context.CNcomment:中断上下文使用 CNend */
37#define HI_OS_STAT_EVENT_SEND_FAIL   0x80  /**< Initialized EVT resources used up.
38                                              CNcomment:初始化EVT资源已经用完 CNend */
39#define HI_OS_STAT_EVENT_CLR_FAIL    0x100 /**< Invalid input argument.CNcomment:入参错误 CNend */
40#define HI_OS_STAT_SLEEP_FAIL        0x200 /**< Used in the interrupt context.CNcomment:中断上下文使用CNend  */
41#define HI_OS_STAT_START_TIMER_FAIL  0x400 /**< Invalid input argument.CNcomment:入参错误 CNend */
42#define HI_OS_STAT_CREATE_TIMER_FAIL 0x800 /**< WorkQueue used up.CNcomment:创建定时器句柄失败 CNend */
43
44/**
45 * @ingroup os_stat
46 * System resource usage statistic.CNcomment:系统资源使用统计量。CNend
47 */
48typedef struct {
49    hi_u8 timer_usage;  /**< Number of used system timers.CNcomment:当前使用系统定时器个数 CNend */
50    hi_u8 task_usage;   /**< Number of used tasks.CNcomment:当前使用任务个数 CNend */
51    hi_u8 sem_usage;    /**< Number of used semaphores.CNcomment:当前使用信号量个数 CNend */
52    hi_u8 queue_usage;  /**< Number of used message queues.CNcomment:当前使用消息队列个数 CNend */
53    hi_u8 mux_usage;    /**< Number of used mutexes.CNcomment:当前使用互斥锁个数 CNend */
54    hi_u8 event_usage;  /**< Number of used events.CNcomment:当前使用事件个数 CNend */
55    hi_u16 err_info;    /**< Error statistic HI_OS_STAT_XXX, used to log occurred errors.
56                           CNcomment:错误统计量HI_OS_STAT_XXX,用于记录曾经出现过的错误 CNend */
57}hi_os_resource_use_stat;
58
59/**
60* @ingroup  os_stat
61* @brief  Obtains the system resource usage.CNcomment:获取当前系统资源使用情况。CNend
62*
63* @par 描述:
64*           Obtains the system resource usage.CNcomment:获取当前系统资源使用情况。CNend
65*
66* @attention None
67* @param  os_resource_stat [OUT] type #hi_os_resource_use_stat*,System resource usage statistic.
68CNcomment:系统资源使用统计量。CNend
69*
70* @retval #0               Success.
71* @retval #Other           Failure. For details, see hi_errno.h
72* @par 依赖:
73*            @li hi_os_stat.h:Describes system resource usage APIs.
74CNcomment:文件用于描述定时器相关接口。CNend
75* @see  None
76*/
77hi_u32 hi_os_get_resource_status(hi_os_resource_use_stat *os_resource_stat);
78
79#endif
80
81