增加cpu占用率支持
This commit is contained in:
@@ -147,4 +147,15 @@ int shell_mem_info(int argc, char *argv[])
|
||||
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), free, shell_mem_info, free command);
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), free, shell_mem_info, free command);
|
||||
|
||||
int shell_sys_info(int argc, char *argv[])
|
||||
{
|
||||
size_t total;
|
||||
size_t free;
|
||||
|
||||
printf("sys:\n");
|
||||
printf("\tcpu usage:%2.1f\n", sys_read_cpu_usage() / 10.0f);
|
||||
return 0;
|
||||
}
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), sys, shell_sys_info, sys command);
|
||||
|
||||
@@ -55,8 +55,8 @@ add_custom_target(
|
||||
c_dump ALL
|
||||
COMMAND
|
||||
${CMAKE_OBJCOPY} -O binary -S libc.so libc.bin
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy libc.bin ${CMAKE_SOURCE_DIR}/build/output/cpio/libc
|
||||
# COMMAND
|
||||
# ${CMAKE_COMMAND} -E copy libc.bin ${CMAKE_SOURCE_DIR}/build/output/cpio/libc
|
||||
# COMMAND
|
||||
# cp libc.so ${CMAKE_SOURCE_DIR}/build/output/libc.so
|
||||
# COMMAND
|
||||
|
||||
@@ -12,6 +12,7 @@ typedef struct sys_info
|
||||
typedef struct sys_info2
|
||||
{
|
||||
umword_t resv_dtbo;
|
||||
umword_t cpu_usage_cur; //!< 当前cpu占用率
|
||||
} sys_info2_t;
|
||||
|
||||
#define SYS_FLAGS_MAP_CPIO_FS 0x01
|
||||
@@ -43,3 +44,9 @@ static inline umword_t sys_read_dtbo(void)
|
||||
sys_read_info2(SYS_PROT, &info, 0);
|
||||
return info.resv_dtbo;
|
||||
}
|
||||
static inline umword_t sys_read_cpu_usage(void)
|
||||
{
|
||||
sys_info2_t info;
|
||||
sys_read_info2(SYS_PROT, &info, 0);
|
||||
return info.cpu_usage_cur;
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ msg_tag_t sys_read_info2(obj_handler_t obj, sys_info2_t *info, umword_t flags)
|
||||
if (info)
|
||||
{
|
||||
info->resv_dtbo = r1;
|
||||
info->cpu_usage_cur = r2;
|
||||
}
|
||||
|
||||
return msg_tag_init(r0);
|
||||
|
||||
@@ -32,8 +32,11 @@ typedef struct meta
|
||||
int rpc_meta_init(obj_handler_t th, obj_handler_t *ret_ipc_hd);
|
||||
void meta_unreg_svr_obj_raw(meta_t *meta, umword_t prot);
|
||||
void meta_unreg_svr_obj(umword_t prot);
|
||||
rpc_svr_obj_t *meta_find_svr_obj(umword_t prot);
|
||||
int meta_reg_svr_obj(rpc_svr_obj_t *svr_obj, umword_t prot);
|
||||
int meta_reg_svr_obj_raw(meta_t *meta, rpc_svr_obj_t *svr_obj, umword_t prot);
|
||||
int rpc_creaite_bind_ipc(obj_handler_t th, void *obj, obj_handler_t *ipc_hd);
|
||||
void rpc_loop(void);
|
||||
#if 0
|
||||
int rpc_mtd_loop(void);
|
||||
#endif
|
||||
|
||||
@@ -140,7 +140,7 @@ int app_load(const char *name, uenv_t *cur_env, pid_t *pid,
|
||||
#endif
|
||||
int type;
|
||||
umword_t addr;
|
||||
int ret;
|
||||
int ret = 0;
|
||||
|
||||
#if IS_ENABLED(CONFIG_CPIO_SUPPORT)
|
||||
ret = cpio_find_file((umword_t)sys_info.bootfs_start_addr, (umword_t)(-1), name, NULL, &type, &addr);
|
||||
|
||||
@@ -6,9 +6,12 @@
|
||||
#include <u_rpc_svr.h>
|
||||
#include <u_rpc_buf.h>
|
||||
#include <u_hd_man.h>
|
||||
#include <rpc_prot.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#define MAGIC_NS_USERPID 0xbabababa
|
||||
|
||||
int fast_ipc_setsp(int i, void *stack);
|
||||
|
||||
#define FAST_IPC_MAIN_STACK_SIZE 512
|
||||
@@ -57,6 +60,16 @@ static msg_tag_t process_ipc(int j, umword_t obj, long tag)
|
||||
ret_tag = msg_tag_init4(0, 0, 0, -EACCES);
|
||||
goto end;
|
||||
}
|
||||
if (svr_obj == (void *)MAGIC_NS_USERPID)
|
||||
{
|
||||
/*获取ns的user id*/
|
||||
svr_obj = meta_find_svr_obj(NS_PROT);
|
||||
}
|
||||
if (svr_obj == NULL)
|
||||
{
|
||||
ret_tag = msg_tag_init4(0, 0, 0, -EACCES);
|
||||
goto end;
|
||||
}
|
||||
if (svr_obj->dispatch)
|
||||
{
|
||||
ret_tag = svr_obj->dispatch(svr_obj, msg_tag_init(tag), msg);
|
||||
|
||||
@@ -48,6 +48,10 @@ static rpc_svr_obj_t *meta_svr_find(meta_t *meta, umword_t prot)
|
||||
pthread_spin_unlock(&meta->lock);
|
||||
return NULL;
|
||||
}
|
||||
rpc_svr_obj_t *meta_find_svr_obj(umword_t prot)
|
||||
{
|
||||
return meta_svr_find(&meta_obj, prot);
|
||||
}
|
||||
void meta_unreg_svr_obj_raw(meta_t *meta, umword_t prot)
|
||||
{
|
||||
pthread_spin_lock(&meta->lock);
|
||||
@@ -82,6 +86,7 @@ int meta_reg_svr_obj_raw(meta_t *meta, rpc_svr_obj_t *svr_obj, umword_t prot)
|
||||
pthread_spin_unlock(&meta->lock);
|
||||
return i < META_PROT_NR;
|
||||
}
|
||||
|
||||
int meta_reg_svr_obj(rpc_svr_obj_t *svr_obj, umword_t prot)
|
||||
{
|
||||
return meta_reg_svr_obj_raw(&meta_obj, svr_obj, prot);
|
||||
@@ -185,14 +190,18 @@ void rpc_loop(void)
|
||||
continue;
|
||||
}
|
||||
svr_obj = (rpc_svr_obj_t *)obj;
|
||||
if (svr_obj->dispatch)
|
||||
if (svr_obj != NULL && svr_obj->dispatch)
|
||||
{
|
||||
tag = svr_obj->dispatch(svr_obj, tag, msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
tag = msg_tag_init4(0, 0, 0, -ENOSYS);
|
||||
}
|
||||
thread_ipc_reply(tag, ipc_timeout_create2(0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
#define RPC_MTD_TH_STACK_SIZE (1024 + 256)
|
||||
typedef struct mtd_params
|
||||
{
|
||||
@@ -342,3 +351,4 @@ int rpc_mtd_loop(void)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user