#include "shell.h" #include "cons_cli.h" #include "u_sig.h" #include "pm_cli.h" #include #include #include #include #include #include #include #include #include #ifdef CONFIG_USING_SIG static int sig_cn; static int shell_sig_call_back(pid_t pid, umword_t sig_val) { /*TODO:这个消息是init发送的,这里不能给init发送消息,否导致卡死除非init增加多进程支持*/ cons_write_str("test sig.\n"); sig_cn++; return 0; } int shell_test_sig(int argc, char *argv[]) { int ret; if (argc < 2) { return -1; } pm_sig_func_set(shell_sig_call_back); pid_t pid = atoi(argv[1]); ret = pm_sig_watch(pid, 0 /*TODO:现在只有kill */); printf("sig_cn:%d\n", sig_cn); return ret; } SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), test_sig, shell_test_sig, shell_test_sig command); int shell_float_test(int argc, char *argv[]) { float a = 1.1, b = 1.2; printf("%f\n", a + b); return 0; } SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), ftest, shell_float_test, ftest command); int shell_div0(int argc, char *argv[]) { int a = 1, b = 0; *((char *)(0)) = 0; printf("%d\n", a / b); return 0; } SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), div0, shell_div0, div0 command); int shell_fapp(int argc, char *argv[]) { int ret; if (argc < 2) { printf("example: fapp 2048\n"); return -1; } ret = pm_run_app(NULL, 0, 0x1 /*FIXME:*/, -1, NULL, atol(argv[1]), NULL, 0); //!< 创建一个dummy task return ret; } SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), fapp, shell_fapp, fapp command); #endif