#!/bin/sh
set +x
G_MML_FILE_PATH="/opt/huawei/snas/script/inspect_mml"
source $G_MML_FILE_PATH/CheckItems
CurInspectNum="111"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="${G_TMP_INSPECT_PATH}tmpResult${CurInspectFun}"
LOG_FILE="/var/log/inspect.log"

>${RESULTFILE}

function LOG
{
   local time=$(date)
   echo [${time}][$$][${CurInspectFun}]$@ >> ${LOG_FILE}
}

function CheckMemCfg
{
    local isPass=0
    local isArm=$(arch)
    if [ X"$isArm" = X"x86_64" ];then
        echo "mem_cmdline:no need check($isArm) ||mem_grubcfg:---||mem_base_use:---" >>${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
        return
    fi
    local mem_cmdline=$(cat /proc/cmdline | grep -Po '(?<=memmap=0x)[A-z0-9]*'| head -1)
    local grubFile=$(find /boot/ -name "grub.cfg")
    local mem_grubcfg=$(cat ${grubFile} | grep -Po '(?<=memmap=0x)[A-z0-9]*'| head -1)
    local mem_base_use=$(/usr/local/bin/MmlBatch 988 "mem show cfg"| grep -wA3 platform | grep -Po '(?<=Module MemSize: )[0-9]*')

    if [ "X${mem_cmdline}" != "X" ];then
        ((mem_cmdline=16#$mem_cmdline));
        mem_cmdline=$(echo "$mem_cmdline/(1024*1024)" | bc)
    else
        mem_cmdline=$(cat /proc/cmdline | grep -Po '(?<=memmap=)[0-9]*'| head -1)
    fi
    if [ -z "${grubFile}" ];then
        echo "mem_cmdline:${mem_cmdline}||mem_grubcfg:no file||mem_base_use:${mem_base_use}" >>${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
        return
    fi
    if [ "X${mem_grubcfg}" != "X" ];then
        ((mem_grubcfg=16#$mem_grubcfg));
        mem_grubcfg=$(echo "$mem_grubcfg/(1024*1024)" | bc)
    else
        mem_grubcfg=$(cat ${grubFile} | grep -Po '(?<=memmap=)[0-9]*' | head -1)
    fi
    #OS的预留内存配置与实际使用要求一致
    if [ "X${mem_cmdline}" != "X${mem_grubcfg}" ];then
        isPass=1
        echo "[ERR]MemSize(${mem_cmdline}) of cmdline is not equal with memSize(${mem_grubcfg}) in grub.cfg." >> ${RESULTFILE}
    fi
    #OS预留内存的配置与Base侧实际使用的配置:不大于grub中配置
    if [ ${mem_base_use:-0} -gt ${mem_grubcfg:-0} ];then
        isPass=1
        echo "[ERR]MemSize(${mem_base_use}) of platform is great than memSize(${mem_grubcfg}) in grub.cfg." >> ${RESULTFILE}
    fi
    echo "mem_cmdline:${mem_cmdline}||mem_grubcfg:${mem_grubcfg}||mem_base_use:${mem_base_use}" >>${RESULTFILE} 2>&1
    echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
}

CheckMemCfg
exit 0
