更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
swtmr_shellcmd.c 文件参考

浏览源代码.

函数

STATIC VOID OsPrintSwtmrMsg (const SWTMR_CTRL_S *swtmr)
 
STATIC INLINE VOID OsPrintSwtmrMsgHead (VOID)
 
STATIC UINT32 SwtmrBaseInfoGet (UINT32 timerID)
 shell命令之swtmr 命令用于查询系统软件定时器相关信息。 更多...
 
STATIC VOID OsSwtmrTimeInfoShow (VOID)
 
LITE_OS_SEC_TEXT_MINOR UINT32 OsShellCmdSwtmrInfoGet (INT32 argc, const CHAR **argv)
 
 SHELLCMD_ENTRY (swtmr_shellcmd, CMD_TYPE_EX, "swtmr", 1,(CmdCallBackFunc) OsShellCmdSwtmrInfoGet)
 

变量

LITE_OS_SEC_DATA_MINOR STATIC CHAR g_shellSwtmrMode [][SWTMR_STRLEN]
 
LITE_OS_SEC_DATA_MINOR STATIC CHAR g_shellSwtmrStatus [][SWTMR_STRLEN]
 

函数说明

◆ OsPrintSwtmrMsg()

STATIC VOID OsPrintSwtmrMsg ( const SWTMR_CTRL_S swtmr)

在文件 swtmr_shellcmd.c55 行定义.

56{
57 UINT32 ticks = 0;
58 (VOID)LOS_SwtmrTimeGet(swtmr->usTimerID, &ticks);
59
60 PRINTK("%7u%10s%8s%12u%7u%#12x%#12x\n",
61 swtmr->usTimerID % LOSCFG_BASE_CORE_SWTMR_LIMIT, //软件定时器ID。
62 g_shellSwtmrStatus[swtmr->ucState], //软件定时器状态,状态可能为:"UnUsed", "Created", "Ticking"。
63 g_shellSwtmrMode[swtmr->ucMode], //软件定时器模式。模式可能为:"Once", "Period", "NSD(单次定时器,定时结束后不会自动删除)"
64 swtmr->uwInterval, //软件定时器使用的Tick数。
65 ticks,
66 swtmr->uwArg, //传入的参数。
67 swtmr->pfnHandler); //回调函数的地址。
68}
LITE_OS_SEC_TEXT UINT32 LOS_SwtmrTimeGet(UINT16 swtmrID, UINT32 *tick)
接口函数 获得软件定时器剩余Tick数 通过 *tick 带走
Definition: los_swtmr.c:848
unsigned int UINT32
Definition: los_typedef.h:57
UINT8 ucState
Definition: los_swtmr.h:269
UINT16 usTimerID
Definition: los_swtmr.h:271
UINTPTR uwArg
Definition: los_swtmr.h:276
UINT8 ucMode
Definition: los_swtmr.h:270
UINT32 uwInterval
Definition: los_swtmr.h:274
SWTMR_PROC_FUNC pfnHandler
Definition: los_swtmr.h:278
LITE_OS_SEC_DATA_MINOR STATIC CHAR g_shellSwtmrMode[][SWTMR_STRLEN]
LITE_OS_SEC_DATA_MINOR STATIC CHAR g_shellSwtmrStatus[][SWTMR_STRLEN]
函数调用图:
这是这个函数的调用关系图:

◆ OsPrintSwtmrMsgHead()

STATIC INLINE VOID OsPrintSwtmrMsgHead ( VOID  )

在文件 swtmr_shellcmd.c70 行定义.

71{
72 PRINTK("\r\nSwTmrID State Mode Interval Count Arg handlerAddr\n");
73}
这是这个函数的调用关系图:

◆ OsShellCmdSwtmrInfoGet()

LITE_OS_SEC_TEXT_MINOR UINT32 OsShellCmdSwtmrInfoGet ( INT32  argc,
const CHAR **  argv 
)

在文件 swtmr_shellcmd.c146 行定义.

147{
148 UINT32 timerID;
149 CHAR *endPtr = NULL;
150
151 if (argc > 1) {
152 goto SWTMR_HELP;
153 }
154
155 if (argc == 0) {
156 timerID = OS_ALL_SWTMR_MASK;
157#ifdef LOSCFG_SWTMR_DEBUG
158 } else if (strcmp("-t", argv[0]) == 0) {
160 return LOS_OK;
161#endif
162 } else {
163 timerID = strtoul(argv[0], &endPtr, 0);
164 if ((endPtr == NULL) || (*endPtr != 0) || (timerID > LOSCFG_BASE_CORE_SWTMR_LIMIT)) {
165 PRINTK("\nswtmr ID can't access %s.\n", argv[0]);
166 return LOS_NOK;
167 }
168 }
169
170 return SwtmrBaseInfoGet(timerID);
171SWTMR_HELP:
172 PRINTK("Usage:\n");
173 PRINTK(" swtmr --- Information about all created software timers.\n");
174 PRINTK(" swtmr ID --- Specifies information about a software timer.\n");
175 return LOS_OK;
176}
char CHAR
Definition: los_typedef.h:63
STATIC VOID OsSwtmrTimeInfoShow(VOID)
STATIC UINT32 SwtmrBaseInfoGet(UINT32 timerID)
shell命令之swtmr 命令用于查询系统软件定时器相关信息。
函数调用图:

◆ OsSwtmrTimeInfoShow()

STATIC VOID OsSwtmrTimeInfoShow ( VOID  )

在文件 swtmr_shellcmd.c115 行定义.

116{
117 UINT8 mode;
118 SwtmrDebugData data;
119
120 PRINTK("SwtmrID Cpuid Mode Period(us) WaitTime(us) WaitMax(us) RTime(us) RTimeMax(us) ReTime(us)"
121 " ReTimeMax(us) RunCount LostNum Handler\n");
122 for (UINT32 index = 0; index < LOSCFG_BASE_CORE_SWTMR_LIMIT; index++) {
123 if (!OsSwtmrDebugDataUsed(index)) {
124 continue;
125 }
126
127 UINT32 ret = OsSwtmrDebugDataGet(index, &data, sizeof(SwtmrDebugData), &mode);
128 if (ret != LOS_OK) {
129 break;
130 }
131
132 SwtmrDebugBase *base = &data.base;
133 UINT64 waitTime = ((base->waitTime / base->waitCount) * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
134 UINT64 waitTimeMax = (base->waitTimeMax * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
135 UINT64 runTime = ((base->runTime / base->runCount) * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
136 UINT64 runTimeMax = (base->runTimeMax * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
137 UINT64 readyTime = ((base->readyTime / base->runCount) * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
138 UINT64 readyTimeMax = (base->readyTimeMax * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
139 PRINTK("%4u%10u%7s%14u%13llu%12llu%10llu%13llu%10llu%14llu%15llu%11u%#12x\n",
140 index, data.cpuid, g_shellSwtmrMode[mode], data.period * OS_US_PER_TICK, waitTime, waitTimeMax,
141 runTime, runTimeMax, readyTime, readyTimeMax, base->runCount, base->times, data.handler);
142 }
143}
UINT32 OsSwtmrDebugDataGet(UINT32 swtmrID, SwtmrDebugData *data, UINT32 len, UINT8 *mode)
Definition: los_swtmr.c:142
BOOL OsSwtmrDebugDataUsed(UINT32 swtmrID)
Definition: los_swtmr.c:133
long unsigned int UINT64
Definition: los_typedef.h:66
unsigned char UINT8
Definition: los_typedef.h:55
SWTMR_PROC_FUNC handler
SwtmrDebugBase base
函数调用图:
这是这个函数的调用关系图:

◆ SHELLCMD_ENTRY()

SHELLCMD_ENTRY ( swtmr_shellcmd  ,
CMD_TYPE_EX  ,
"swtmr"  ,
,
(CmdCallBackFunc OsShellCmdSwtmrInfoGet 
)

◆ SwtmrBaseInfoGet()

STATIC UINT32 SwtmrBaseInfoGet ( UINT32  timerID)

shell命令之swtmr 命令用于查询系统软件定时器相关信息。

在文件 swtmr_shellcmd.c76 行定义.

77{
80 UINT16 index;
81 UINT16 num = 0;
82
83 for (index = 0; index < LOSCFG_BASE_CORE_SWTMR_LIMIT; index++, swtmr1++) {
84 if (swtmr1->ucState == 0) {
85 num = num + 1;
86 }
87 }
88
89 if (num == LOSCFG_BASE_CORE_SWTMR_LIMIT) {
90 PRINTK("\r\nThere is no swtmr was created!\n");
91 return LOS_NOK;
92 }
93
94 if (timerID == OS_ALL_SWTMR_MASK) {
96 for (index = 0; index < LOSCFG_BASE_CORE_SWTMR_LIMIT; index++, swtmr++) {
97 if (swtmr->ucState != 0) {
98 OsPrintSwtmrMsg(swtmr);
99 }
100 }
101 } else {
102 for (index = 0; index < LOSCFG_BASE_CORE_SWTMR_LIMIT; index++, swtmr++) {
103 if ((timerID == (size_t)(swtmr->usTimerID % LOSCFG_BASE_CORE_SWTMR_LIMIT)) && (swtmr->ucState != 0)) {
105 OsPrintSwtmrMsg(swtmr);
106 return LOS_OK;
107 }
108 }
109 PRINTK("\r\nThe SwTimerID is not exist.\n");
110 }
111 return LOS_OK;
112}
LITE_OS_SEC_BSS SWTMR_CTRL_S * g_swtmrCBArray
Definition: los_swtmr.c:112
unsigned short UINT16
Definition: los_typedef.h:56
STATIC INLINE VOID OsPrintSwtmrMsgHead(VOID)
STATIC VOID OsPrintSwtmrMsg(const SWTMR_CTRL_S *swtmr)
函数调用图:
这是这个函数的调用关系图:

变量说明

◆ g_shellSwtmrMode

LITE_OS_SEC_DATA_MINOR STATIC CHAR g_shellSwtmrMode[][SWTMR_STRLEN]
初始值:
= {
"Once",
"Period",
"NSD",
"OPP",
}

在文件 swtmr_shellcmd.c42 行定义.

◆ g_shellSwtmrStatus

LITE_OS_SEC_DATA_MINOR STATIC CHAR g_shellSwtmrStatus[][SWTMR_STRLEN]
初始值:
= {
"UnUsed",
"Created",
"Ticking",
}

在文件 swtmr_shellcmd.c49 行定义.