highmem test

1. 下面是使能highmem 和添加 highmem memory region的一个补丁:

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 428e767..25c8499 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -69,6 +69,7 @@ config BCM5621X
        select CSRC_R4K
        select DMA_NONCOHERENT
        select IRQ_CPU
+       select SYS_SUPPORTS_HIGHMEM
        select SYS_HAS_CPU_MIPS32_R1
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_BIG_ENDIAN
diff --git a/arch/mips/bcm5621x/prom.c b/arch/mips/bcm5621x/prom.c
index 6a716ff..bf17fc0 100644
--- a/arch/mips/bcm5621x/prom.c
+++ b/arch/mips/bcm5621x/prom.c
@@ -175,6 +175,12 @@ static __init void prom_meminit(void)
                                  BOOT_MEM_RESERVED);
        }
 #endif
+
+       /*
+       * Due to the physical liner address space 128M~256M used for I/O space in BCM956218 core sheet.
+       * So we need to map the 128M~256M DDR space to HIGHMEM space to use. Xiaoqiang.Jia@WindRiver.com
+       */
+       add_memory_region(0x88000000UL,0x8000000,BOOT_MEM_RAM);
 }
 
 #ifdef CONFIG_BLK_DEV_INITRD

2. 这是一个test highmem的简单程序: 

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
//#include "string.h"

#define SIZE_128M_RAM 128*1024*1024

int main(int argc ,char**argv[])
{
        char *p256m = NULL;


        //分配128M内存,并初始化
        p256m= malloc(SIZE_128M_RAM);
  
        memset(p256m, 0 , SIZE_128M_RAM);

        // 让他一直在运行
        while(1);

        return 0;

}


3. 运行测试程序:

# cat /proc/meminfo 

MemTotal:       223756 kB

MemFree:        190136 kB

Buffers:           112 kB

Cached:           2364 kB

SwapCached:          0 kB

Active:            984 kB

Inactive:         1656 kB

HighTotal:      131072 kB

HighFree:       100072 kB

LowTotal:        92684 kB

LowFree:         90064 kB

SwapTotal:           0 kB

SwapFree:            0 kB

Dirty:               4 kB

Writeback:           0 kB

AnonPages:         180 kB

Mapped:            784 kB

Slab:             1860 kB

SReclaimable:      152 kB

SUnreclaim:       1708 kB

PageTables:         60 kB

NFS_Unstable:        0 kB

Bounce:              0 kB

WritebackTmp:        0 kB

CommitLimit:    111876 kB

Committed_AS:      876 kB

VmallocTotal:  1015800 kB

VmallocUsed:       444 kB

VmallocChunk:  1015356 kB

# chmod 777 /bin/test_128m_ram 

# ./bin/test_128m_ram &

++++++++++test for highmem........start alloc 128M ram space +++++++++++++++++++++++++++++++++

++++++++++test for highmem.......memset 128M ram space to really used higmem++++++++++++++++++

# ++++++++++test for highmem......alloc successfully++++++++++++++++++++++++++++++++++++++++++++

 

# jobs

[1] + Running                    ./bin/test_128m_ram

# cat /proc/meminfo 

MemTotal:       223756 kB

MemFree:         57816 kB

Buffers:           112 kB

Cached:           2380 kB

SwapCached:          0 kB

Active:         132124 kB

Inactive:         1656 kB

HighTotal:      131072 kB

HighFree:          448 kB

LowTotal:        92684 kB

LowFree:         57368 kB

SwapTotal:           0 kB

SwapFree:            0 kB

Dirty:              20 kB

Writeback:           0 kB

AnonPages:      131308 kB

Mapped:            796 kB

Slab:             2888 kB

SReclaimable:      156 kB

SUnreclaim:       2732 kB

PageTables:        208 kB

NFS_Unstable:        0 kB

Bounce:              0 kB

WritebackTmp:        0 kB

CommitLimit:    111876 kB

Committed_AS:   132172 kB

VmallocTotal:  1015800 kB

VmallocUsed:       444 kB

VmallocChunk:  1015356 kB

# ps

  PID USER       VSZ STAT COMMAND

    1 root      3196 S    init       

    2 root         0 SW<  [kthreadd]

    3 root         0 SW<  [ksoftirqd/0]

    4 root         0 SW<  [watchdog/0]

    5 root         0 SW<  [events/0]

    6 root         0 SW<  [khelper]

   27 root         0 SW<  [kblockd/0]

   48 root         0 SW   [pdflush]

   50 root         0 SW<  [kswapd0]

   92 root         0 SW<  [aio/0]

  100 root         0 SW<  [unionfs_siod/0]

  101 root         0 SW<  [nfsiod]

  699 root         0 SW<  [bond0]

  710 root         0 SW<  [mtdblockd]

  744 root         0 SW<  [rpciod/0]

  748 root         0 SW   [pdflush]

  755 root      3372 R    -/bin/sh 

  759 root      129m R    ./bin/test_128m_ram 

  761 root      3372 R    ps 

# jobs

[1] + Running                    ./bin/test_128m_ram

# fg

./bin/test_128m_ram

^C

# jobs

# cat /proc/meminfo 

MemTotal:       223756 kB

MemFree:        189956 kB

Buffers:           112 kB

Cached:           2380 kB

SwapCached:          0 kB

Active:           1112 kB

Inactive:         1540 kB

HighTotal:      131072 kB

HighFree:        99988 kB

LowTotal:        92684 kB

LowFree:         89968 kB

SwapTotal:           0 kB

SwapFree:            0 kB

Dirty:              36 kB

Writeback:           0 kB

AnonPages:         180 kB

Mapped:            788 kB

Slab:             1892 kB

SReclaimable:      172 kB

SUnreclaim:       1720 kB

PageTables:         60 kB

NFS_Unstable:        0 kB

Bounce:              0 kB

WritebackTmp:        0 kB

CommitLimit:    111876 kB

Committed_AS:      876 kB

VmallocTotal:  1015800 kB

VmallocUsed:       444 kB

VmallocChunk:  1015356 kB

#


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值