- 論壇徽章:
- 0
|
接觸linux不久,對ioremap的返回空間有些疑問。。。
環(huán)境arm, linux2.6
在設(shè)備上察看vmallocinfo,結(jié)果如下:
[root@FriendlyARM /proc]# cat vmallocinfo
0xc4808000-0xc480a000 8192 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc480c000-0xc480e000 8192 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc4810000-0xc4812000 8192 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc4814000-0xc4816000 8192 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc4818000-0xc481a000 8192 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc481c000-0xc481e000 8192 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc4820000-0xc4822000 8192 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc4824000-0xc4826000 8192 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc4a00000-0xc4b01000 1052672 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc4c00000-0xc4d01000 1052672 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc4e00000-0xc4f01000 1052672 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc5000000-0xc5101000 1052672 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc5200000-0xc5301000 1052672 __arm_ioremap_pfn+0x78/0x330 ioremap
0xc5400000-0xc5501000 1052672 __arm_ioremap_pfn+0x78/0x330 ioremap
[root@FriendlyARM /proc]#
其中紅色部分,就是連續(xù)執(zhí)行了addr1=ioremap(0x20000000,4); addr2=ioremap(0x20000004,4);的結(jié)果。
問題:
1、個人理解,既然是只分配4個字節(jié),那么ioremap返回一個page就夠了阿。為什么會返回8K空間(2個page)呢?
2、addr1和addr2分別是0xc4810000,0xc4814000。既然每個地址空間的分配只占了8K,那中間間隔的那8K呢,做什么用?比如從0xc4812000到0xc4814000這段空間,空閑著嗎?為什么不是連續(xù)分配給addr1和addr2呢?
3、實際上addr1和addr2 map的物理空間是連續(xù)的,那么如果訪問addr1+4是否就等于訪問addr2呢?
多謝各位! |
|