- 论坛徽章:
- 0
|
每个固定映射的线性地址都由定义于enum fixed_addresses数据结构中的整型索引来表示:
enum fixed_addresses {
FIX_HOLE,
FIX_VSYSCALL,
FIX_APIC_BASE,
FIX_IO_APIC_BASE_0,
[...]
__end_of_fixed_addresses
};
上面枚举类型中的元素(FIX_HOLE,FIX_VSYSCALL)等事实上是从0开始逐渐加1的值,请问他们表示什么意思呢?
fix_to_virt( )函数计算从给定索引开始的常量线性地址:
inline unsigned long fix_to_virt(const unsigned int idx)
{
if (idx >= _ _end_of_fixed_addresses)
__this_fixmap_does_not_exist( );
return (0xfffff000UL - (idx << PAGE_SHIFT));
}
请问上面0xfffff000表示什么呢?idx << PAGE_SHIFT表示什么?整个表达式又是什么意思呢?
还有到底什么叫固定映射? |
|