42#define timeval64 timeval
43#define gettimeofday64 gettimeofday
46#ifdef LOSCFG_SHELL_CMD_DEBUG
57#define WATCH_COUNT_MAX 0xFFFFFF
58#define WATCH_INTERTVAL_MAX 0xFFFFFF
62 struct timeval64 stNowTime = {0};
65 PRINTK(
"%s", ctime64(&(stNowTime.tv_sec)));
75 while (watchItem->
count--) {
77 if (watchItem->
title) {
94 PRINTK(
"\nUsage: watch\n");
95 PRINTK(
"watch [options] command\n");
104 PRINT_ERR(
"Write event failed in %s,%d\n", __FUNCTION__, __LINE__);
109 PRINTK(
"No watch task to turn off.\n");
120 while (argv[*argoff][0] ==
'-') {
126 if ((strcmp(argv[*argoff],
"-n") == 0) || (strcmp(argv[*argoff],
"--interval") == 0)) {
131 tmpVal = (
long)strtoul(argv[*argoff + 1], &strPtr, 0);
132 if ((*strPtr != 0) || (tmpVal <= 0) || (tmpVal > WATCH_INTERTVAL_MAX)) {
133 PRINTK(
"\ninterval time is invalid\n");
140 }
else if ((strcmp(argv[*argoff],
"-t") == 0) || (strcmp(argv[*argoff],
"-no-title") == 0)) {
141 watchItem->
title = FALSE;
144 }
else if ((strcmp(argv[*argoff],
"-c") == 0) || (strcmp(argv[*argoff],
"--count") == 0)) {
149 tmpVal = (
long)strtoul(argv[*argoff + 1], &strPtr, 0);
150 if ((*strPtr != 0) || (tmpVal <= 0) || (tmpVal > WATCH_COUNT_MAX)) {
151 PRINTK(
"\ncount is invalid\n");
159 PRINTK(
"Unknown option.\n");
169 if ((argc - argoff) == 0) {
170 PRINT_ERR(
"no watch command!\n");
173 while (argc - argoff) {
174 err = strcat_s(watchItem->
cmdbuf,
sizeof(watchItem->
cmdbuf), argv[argoff]);
176 PRINT_ERR(
"%s, %d strcat_s failed!\n", __FUNCTION__, __LINE__);
179 err = strcat_s(watchItem->
cmdbuf,
sizeof(watchItem->
cmdbuf),
" ");
181 PRINT_ERR(
"%s, %d strcat_s failed!\n", __FUNCTION__, __LINE__);
197 PRINT_ERR(
"Watch event init failed in %s, %d\n", __FUNCTION__, __LINE__);
205 initParam.
pcName =
"shellcmd_watch";
206 initParam.
uwResved = LOS_TASK_STATUS_DETACHED;
210 PRINT_ERR(
"Watch task init failed in %s, %d\n", __FUNCTION__, __LINE__);
233 if ((argc == 1) && (strcmp(argv[0],
"--over") == 0)) {
239 PRINTK(
"Please turn off previous watch before to start a new watch.\n");
244 if (watchItem == NULL) {
245 PRINTK(
"Malloc error!\n");
249 watchItem->
title = TRUE;
250 watchItem->
count = WATCH_COUNT_MAX;
@ CMD_TYPE_EX
不支持标准命令参数输入,会把用户填写的命令关键字屏蔽掉,例如:输入ls /ramfs,传入给注册函数的参数只有/ramfs,而ls命令关键字并不会被传入。
LITE_OS_SEC_DATA_INIT UINT32 g_tickPerSecond
每秒Tick数,鸿蒙默认是每秒100次,即:10ms
LITE_OS_SEC_TEXT_INIT UINT32 LOS_EventDestroy(PEVENT_CB_S eventCB)
销毁指定的事件控制块
LITE_OS_SEC_TEXT UINT32 LOS_EventRead(PEVENT_CB_S eventCB, UINT32 eventMask, UINT32 mode, UINT32 timeout)
读取指定事件类型,超时时间为相对时间:单位为Tick
LITE_OS_SEC_TEXT UINT32 LOS_EventWrite(PEVENT_CB_S eventCB, UINT32 events)
写指定的事件类型
LITE_OS_SEC_TEXT_INIT UINT32 LOS_EventInit(PEVENT_CB_S eventCB)
初始化一个事件控制块
LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskCreate(UINT32 *taskID, TSK_INIT_PARAM_S *initParam)
创建任务,并使该任务进入ready状态,如果就绪队列中没有更高优先级的任务,则运行该任务
VOID *(* TSK_ENTRY_FUNC)(UINTPTR param1, UINTPTR param2, UINTPTR param3, UINTPTR param4)
Define the type of a task entrance function.
void * malloc(size_t size)
动态分配内存块大小
void free(void *ptr)
释放ptr所指向的内存空间
UINT32 ShellMsgParse(const VOID *msg)
命令内容解析
TSK_ENTRY_FUNC pfnTaskEntry
ARG_NUM_3 ARG_NUM_1 ARG_NUM_2 ARG_NUM_2 ARG_NUM_3 ARG_NUM_1 ARG_NUM_4 ARG_NUM_2 ARG_NUM_2 ARG_NUM_5 ARG_NUM_2 ARG_NUM_0 ARG_NUM_2 ARG_NUM_1 ARG_NUM_2 ARG_NUM_3 ARG_NUM_7 ARG_NUM_2 ARG_NUM_3 ARG_NUM_2 ARG_NUM_4 ARG_NUM_5 ARG_NUM_6 ARG_NUM_3 ARG_NUM_5 ARG_NUM_7 ARG_NUM_1 ARG_NUM_4 ARG_NUM_5 ARG_NUM_4 ARG_NUM_7 ARG_NUM_2 ARG_NUM_3 ARG_NUM_7 ARG_NUM_7 ARG_NUM_3 ARG_NUM_3 ARG_NUM_3 ARG_NUM_7 ARG_NUM_3 ARG_NUM_2 char ARG_NUM_2 ARG_NUM_1 ARG_NUM_0 ARG_NUM_0 ARG_NUM_3 void ARG_NUM_1 ARG_NUM_0 unsigned ARG_NUM_0 ARG_NUM_2 ARG_NUM_3 ARG_NUM_2 ARG_NUM_5 ARG_NUM_3 ARG_NUM_3 ARG_NUM_4 ARG_NUM_1 ARG_NUM_1 ARG_NUM_3 ARG_NUM_2 ARG_NUM_1 ARG_NUM_4 ARG_NUM_4 ARG_NUM_5 ARG_NUM_3 ARG_NUM_2 void ARG_NUM_6 unsigned ARG_NUM_0 unsigned ARG_NUM_0 ARG_NUM_3 ARG_NUM_3 ARG_NUM_2 ARG_NUM_2 ARG_NUM_1 ARG_NUM_2 ARG_NUM_1 char ARG_NUM_0 ARG_NUM_4 ARG_NUM_1 ARG_NUM_2 ARG_NUM_2 ARG_NUM_4 ARG_NUM_5 ARG_NUM_2 ARG_NUM_3 ARG_NUM_3 ARG_NUM_3 ARG_NUM_3 ARG_NUM_6 ARG_NUM_6 ARG_NUM_5 ARG_NUM_3 void ARG_NUM_3 ARG_NUM_3 ARG_NUM_5 ARG_NUM_1 unsigned ARG_NUM_3 long
int gettimeofday64(struct timeval64 *tv, struct timezone *tz)
u32_t(* CmdCallBackFunc)(u32_t argc, const char **argv)
STATIC UINT32 OsWatchOverFunc(VOID)
INT32 OsWatchOptionParsed(UINT32 argc, UINT32 *argoff, const CHAR **argv, WatchCB *watchItem)
STATIC INLINE VOID OsWatchCmdUsage(VOID)
INT32 OsWatchCmdSplice(UINT32 argc, UINT32 argoff, const CHAR **argv, WatchCB *watchItem)
UINT32 OsShellCmdWatch(UINT32 argc, const CHAR **argv)
STATIC VOID OsShellCmdDoWatch(UINTPTR arg1)
STATIC WatchCB * g_watchCmd
SHELLCMD_ENTRY(watch_shellcmd, CMD_TYPE_EX, "watch", XARGS,(CmdCallBackFunc) OsShellCmdWatch)
UINT32 OsWatchTaskCreate(WatchCB *watchItem)
STATIC VOID PrintTime(VOID)