Linux 内存绑定在局部存储器的实现
3.2.1 Linux 内存绑定在局部存储器的实现总体步骤
总体步骤:
l 采用方案三,在在原来分析的基础上,以及已知Linux系统内存的初始化的情况,对内核代码进行修改,主要包括确定新区的范围,建立新区,重新对分配内存的分配机制进行设置。
l 新区划分后,对新建的两个区进行一定程度上的延迟;
l 建立系统调用,系统调用将提供用户进行手动设置访问方式。
l 对内核进行配置,并进行相关调式。
l 用户程序进行最终的测试,并验证相关结论。
3.2.2 Linux 内核绑定在局部存储器代码实现
(一)、修改代码:
1) 在init/main.c这个文件中,在这一段代码
#ifdef CONFIG_X86_LOCAL_APIC
#include <asm/smp.h>
#endif
的下面增加这段代码:
unsigned long max_normal_low_pfn=0;
EXPORT_SYMBOL(max_normal_low_pfn);
这里使用EXPORT_SYMBOL是声明max_normal_low_pfn是全局变量,所有的文件都可以使用,它的用处是为了标记新区ZONE_NORMAL_LOW的最大可用的页框号。
2) arch/x86/kernel/setup.c这个文件:
l 在struct boot_params boot_params;
#endif之后添加,声明该变量已经在别的文件有定义了
extern unsigned long max_normal_low_pfn;
l 在setup_arch()这个函数中,在find_low_pfn_range()这个之后,增加这一句:
max_normal_low_pfn = max_low_pfn/2;
该句用于计算新区(ZONE_NORMAL_LOW)的最大可用页框号。
3) 在arch/x86/mm/init_32.c文件
l 在unsigned long max_low_pfn_mapped; unsigned long max_pfn_mapped;之后添加extern unsigned long max_normal_low_pfn;
l 在static void __init zone_sizes_init(void)这个函数中增加这句代
相关文档:
总览
用iptables -ADC 来指定链的规
则
,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX ......
在实现驱动程序的mmap函数时,要注意映射地址的转换问题,见代码。
定义一个设备结构体:
struct leedriver
{
struct cdev cdev;
unsigned char mem[MEMSIZE];
};
这里面这个MEMSIZE,最小都要是4096,因为内存映射是以页为单位的。
在实现simple_remap_mmap函数时,代码如下
static int simple_remap_mmap(stru ......
1、直接用export命令:
#export PATH=$PATH:自定义路径
查看是否已经设好,可用命令export查看:
[root@localhost bin]# export
PATH=$PATH:自定义路径
2、修改profile文件:
#vi /etc/profile
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
3. 修改.bashrc文件:
# vi /root/. ......
3.2.1 Linux 内存绑定在局部存储器的实现总体步骤
总体步骤:
l 采用方案三,在在原来分析的基础上,以及已知Linux系统内存的初始化的情况,对内核代码进行修改,主要包括确定新区的范围,建立新区,重新对分配内存的分配机制进行设置。
l &n ......
3.2.1 Linux 内存绑定在局部存储器的实现总体步骤
总体步骤:
l 采用方案三,在在原来分析的基础上,以及已知Linux系统内存的初始化的情况,对内核代码进行修改,主要包括确定新区的范围,建立新区,重新对分配内存的分配机制进行设置。
l &n ......