aborts

1.aborts 介绍

该命令会显示系统当前内存访问异常、 内存分配错误、 分配物理页错误和页面映射错误次数。

2.命令参数

aborts没有命令参数,执行效果如下:

[root@sylixos:/root]# aborts
vmm abort statistics infomation show >>
vmm abort (memory access error) counter : 0
vmm page fail (alloc success) counter   : 0
vmm alloc physical page error counter   : 0
vmm page map error counter              : 0

3.技术实现

aborts命令通过libsylixos\SylixOS\shell\ttinyShell\ttinyShellSysCmd.c中的,__tshellSysCmdInit函数将其加入到系统shell命令中,可以通过LW_CFG_VMM_EN进行使能或者关闭。
aborts的实现函数是调用__tshellSysCmdAborts,最终通过调用API_VmmAbortShow进行信息显示,代码如下所示。

VOID  API_VmmAbortShow (VOID)
{
    LW_VMM_STATUS  vmms;
    
    API_VmmAbortStatus(&vmms);

    printf("vmm abort statistics infomation show >>\n");
    printf("vmm abort (memory access error) counter : %lld\n", vmms.VMMS_i64AbortCounter);
    printf("vmm page fail (alloc success) counter   : %lld\n", vmms.VMMS_i64PageFailCounter);
    printf("vmm alloc physical page error counter   : %lld\n", vmms.VMMS_i64PageLackCounter);
    printf("vmm page map error counter              : %lld\n", vmms.VMMS_i64MapErrCounter);
    
    printf("\n");
}

API_VmmAbortStatus函数主要就是将vmm当前的统计状态进行显示,它是通过全局变量_K_vmmStatus进行记录,在文件libsylixos\SylixOS\kernel\vmm\vmmAbort.c中定义。

/*********************************************************************************************************
  统计变量
*********************************************************************************************************/
static LW_VMM_STATUS      _K_vmmStatus;

_K_vmmStatus通过不通的变量记录了系统启动到当前发生的所有关于vmm的错误和状态。

/*********************************************************************************************************
  vmm 当前状态
*********************************************************************************************************/

typedef struct __lw_vmm_status {
    INT64                    VMMS_i64AbortCounter;                      /*  异常中止次数                */
    INT64                    VMMS_i64PageFailCounter;                   /*  缺页中断正常处理次数        */
    INT64                    VMMS_i64PageLackCounter;                   /*  系统缺少物理页面次数        */
    INT64                    VMMS_i64MapErrCounter;                     /*  映射错误次数                */
    INT64                    VMMS_i64SwpCounter;                        /*  交换次数                    */
    INT64                    VMMS_i64Reseve[8];
} LW_VMM_STATUS;
typedef LW_VMM_STATUS       *PLW_VMM_STATUS;

4.命令测试

我们可以通过内存分配后,使用aborts查看一下相关的vmm状态信息。

[root@sylixos:/apps]# ./mem_test 1 1
Test: size 1 MB, sleep 1 s
Memory allocation sucessful, 1 MB
Test exit
[root@sylixos:/apps]#   
[root@sylixos:/apps]# 
[root@sylixos:/apps]# aborts
vmm abort statistics infomation show >>
vmm abort (memory access error) counter : 1
vmm page fail (alloc success) counter   : 1
vmm alloc physical page error counter   : 0
vmm page map error counter              : 0

vmm相关知识可以参考后续的内存管理分析系列文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值