当前位置: 技术问答>linux和unix
Linux Kernel problem
来源: 互联网 发布时间:2016-03-20
本文导语: 大家好,我最近被老大要求修改Linux(内核为:2.6.9-11.ELsmp)内核下面的"HZ"宏定义 的值(应该是控制系统的时钟频率的),关于它所在的头文件,已经找到,并将其值修改 为了10000(以前默认是100的),修改如下: #ifndef _ASMi3...
大家好,我最近被老大要求修改Linux(内核为:2.6.9-11.ELsmp)内核下面的"HZ"宏定义
的值(应该是控制系统的时钟频率的),关于它所在的头文件,已经找到,并将其值修改
为了10000(以前默认是100的),修改如下:
#ifndef _ASMi386_PARAM_H
#define _ASMi386_PARAM_H
#ifdef __KERNEL__
# define HZ 1000 /* Internal kernel timer frequency */ //the first appear place
# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
#endif
#ifndef HZ
#define HZ 10000 //修改过后的值 the second appear place
#endif
#define EXEC_PAGESIZE 4096
#ifndef NOGROUP
#define NOGROUP (-1)
#endif
#define MAXHOSTNAMELEN 64 /* max length of hostname */
#define COMMAND_LINE_SIZE 256
#endif
首先,请问大家,小弟我修改的地方是不是正确的?
再次,因为要想修改之后生效的话,就得重新编译以前的内核,对吧?
由于小弟刚刚接触Linux不久,所以没有什么经验,在网上搜了很多资料,
照着做了,结果都没有如愿所偿啊!一般都是些命令敲进去之后,没有反应,
或者报错。
所以,请教知道的朋友们解惑啊!非常感激!
附:我在网上看了一些资料,只改动一点点,重新编译的时候,是不是有什么
简单的方法,请详细介绍。
的值(应该是控制系统的时钟频率的),关于它所在的头文件,已经找到,并将其值修改
为了10000(以前默认是100的),修改如下:
#ifndef _ASMi386_PARAM_H
#define _ASMi386_PARAM_H
#ifdef __KERNEL__
# define HZ 1000 /* Internal kernel timer frequency */ //the first appear place
# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
#endif
#ifndef HZ
#define HZ 10000 //修改过后的值 the second appear place
#endif
#define EXEC_PAGESIZE 4096
#ifndef NOGROUP
#define NOGROUP (-1)
#endif
#define MAXHOSTNAMELEN 64 /* max length of hostname */
#define COMMAND_LINE_SIZE 256
#endif
首先,请问大家,小弟我修改的地方是不是正确的?
再次,因为要想修改之后生效的话,就得重新编译以前的内核,对吧?
由于小弟刚刚接触Linux不久,所以没有什么经验,在网上搜了很多资料,
照着做了,结果都没有如愿所偿啊!一般都是些命令敲进去之后,没有反应,
或者报错。
所以,请教知道的朋友们解惑啊!非常感激!
附:我在网上看了一些资料,只改动一点点,重新编译的时候,是不是有什么
简单的方法,请详细介绍。
|
在Linux内核里面,软件时钟以变量jiffy作为单位.
HZ为jiffy的倒数,HZ的可能值跟内核的版本以及硬件平台相关.
如果是i386的话:
2.4.x 以及之前的版本下,HZ固定为100,jiffy为0.01秒.
2.6.0 以后,HZ 增加到1000,jiffy 为 0.001 秒.
2.6.13 以后、HZ 改成可以用参数设定, 有100, 250 (默认), 1000 三个备选.
这样 jiffy 値相对应有 0.01, 0.004, 0.001 秒这三种情况.
2.6.20 以后,HZ也可以设定为300
2.6.9版本下HZ的值只有100和1000两个值可以设定,
并且只能通过修改宏定义(也就是楼主现在的方法)来进行修改.
HZ为jiffy的倒数,HZ的可能值跟内核的版本以及硬件平台相关.
如果是i386的话:
2.4.x 以及之前的版本下,HZ固定为100,jiffy为0.01秒.
2.6.0 以后,HZ 增加到1000,jiffy 为 0.001 秒.
2.6.13 以后、HZ 改成可以用参数设定, 有100, 250 (默认), 1000 三个备选.
这样 jiffy 値相对应有 0.01, 0.004, 0.001 秒这三种情况.
2.6.20 以后,HZ也可以设定为300
2.6.9版本下HZ的值只有100和1000两个值可以设定,
并且只能通过修改宏定义(也就是楼主现在的方法)来进行修改.
|
CONFIG_HZ是你的make menuconfig时有一个选项可以修改的,你仔细找找
如果是make menuconfig之后,在include/linux/下会生成一个autoconf.h的文件,在那里面找
如果是make menuconfig之后,在include/linux/下会生成一个autoconf.h的文件,在那里面找
|
should be under "Kernel Features"
But you need to re-consider the change from 100 to 10000.
It may probably cause a series of problem
But you need to re-consider the change from 100 to 10000.
It may probably cause a series of problem
|
简单编译的话要自己写脚本
|
如果你是在make menuconfig之后改的,那只要简单make就行了。
直接改HZ?好像改一个叫CONFIG_HZ这样的配置值要好点。
直接改HZ?好像改一个叫CONFIG_HZ这样的配置值要好点。