增加reboot&mem info命令
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include <sys/time.h>
|
||||
#include <pthread.h>
|
||||
#include <errno.h>
|
||||
#include "u_sys.h"
|
||||
int ls(int argc, char *agrv[])
|
||||
{
|
||||
DIR *dir;
|
||||
@@ -80,3 +81,22 @@ int shell_symlink(int argc, char *argv[])
|
||||
return symlink(argv[1], argv[2]);
|
||||
}
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), symlink, shell_symlink, symlink command);
|
||||
|
||||
int shell_reboot(int argc, char *argv[])
|
||||
{
|
||||
printf("sys reboot.\n");
|
||||
sys_reboot(SYS_PROT);
|
||||
return 0;
|
||||
}
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), reboot, shell_reboot, reboot command);
|
||||
|
||||
int shell_mem_info(int argc, char *argv[])
|
||||
{
|
||||
size_t total;
|
||||
size_t free;
|
||||
|
||||
sys_mem_info(SYS_PROT, &total, &free);
|
||||
printf("sys mem:\ntotal:%dB\nfree:%dB\n", total, free);
|
||||
return 0;
|
||||
}
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), mem, shell_mem_info, mem command);
|
||||
@@ -9,6 +9,8 @@ typedef struct sys_info
|
||||
} sys_info_t;
|
||||
|
||||
msg_tag_t sys_read_info(obj_handler_t obj, sys_info_t *info);
|
||||
msg_tag_t sys_reboot(obj_handler_t obj);
|
||||
msg_tag_t sys_mem_info(obj_handler_t obj, umword_t *total, umword_t *free);
|
||||
|
||||
static inline umword_t sys_read_tick(void)
|
||||
{
|
||||
|
||||
@@ -11,6 +11,7 @@ enum sys_op
|
||||
{
|
||||
SYS_INFO_GET,
|
||||
REBOOT,
|
||||
MEM_INFO,
|
||||
};
|
||||
|
||||
msg_tag_t sys_read_info(obj_handler_t obj, sys_info_t *info)
|
||||
@@ -20,17 +21,17 @@ msg_tag_t sys_read_info(obj_handler_t obj, sys_info_t *info)
|
||||
register volatile umword_t r2 asm("r2");
|
||||
|
||||
mk_syscall(syscall_prot_create(SYS_INFO_GET, SYS_PROT, obj).raw,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
msg_tag_t tag = msg_tag_init(r0);
|
||||
|
||||
asm __volatile__(""
|
||||
:
|
||||
: :"r0", "r1", "r2");
|
||||
: : "r0", "r1", "r2");
|
||||
if (info)
|
||||
{
|
||||
info->sys_tick = r1;
|
||||
@@ -39,3 +40,54 @@ msg_tag_t sys_read_info(obj_handler_t obj, sys_info_t *info)
|
||||
|
||||
return tag;
|
||||
}
|
||||
msg_tag_t sys_reboot(obj_handler_t obj)
|
||||
{
|
||||
register volatile umword_t r0 asm("r0");
|
||||
register volatile umword_t r1 asm("r1");
|
||||
register volatile umword_t r2 asm("r2");
|
||||
|
||||
mk_syscall(syscall_prot_create(REBOOT, SYS_PROT, obj).raw,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
msg_tag_t tag = msg_tag_init(r0);
|
||||
|
||||
asm __volatile__(""
|
||||
:
|
||||
: : "r0", "r1", "r2");
|
||||
|
||||
return tag;
|
||||
}
|
||||
msg_tag_t sys_mem_info(obj_handler_t obj, umword_t *total, umword_t *free)
|
||||
{
|
||||
register volatile umword_t r0 asm("r0");
|
||||
register volatile umword_t r1 asm("r1");
|
||||
register volatile umword_t r2 asm("r2");
|
||||
|
||||
mk_syscall(syscall_prot_create(MEM_INFO, SYS_PROT, obj).raw,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
msg_tag_t tag = msg_tag_init(r0);
|
||||
|
||||
asm __volatile__(""
|
||||
:
|
||||
: : "r0", "r1", "r2");
|
||||
|
||||
if (total)
|
||||
{
|
||||
*total = r1;
|
||||
}
|
||||
if (free)
|
||||
{
|
||||
*free = r2;
|
||||
}
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* @copyright Copyright (c) 2023
|
||||
*
|
||||
*/
|
||||
#define HEAP_SIZE ((1024 + 256) * 3 + 1024)
|
||||
#define HEAP_SIZE 1024
|
||||
#define STACK_SIZE (1024 + 256)
|
||||
|
||||
#if defined(__CC_ARM)
|
||||
|
||||
Reference in New Issue
Block a user