2009年2月15日星期日

用SKYEYE来模拟uClinux

2009/02/23
发现之前做的网络提速工作有问题,其实速度主要和skyeye模拟ARM指令有关,skyeye里面有两套模拟ARM指令的方法;一个是ARMul_Emulate32, 另一个是ARMul_Emulate32_dbct, 我有拜读过dbct的算法,打算从dbct入手看看为何我用skyeye模拟网络速度这么慢的问题,不过编译skyeye提示我的gcc不支持inline x86 asm. 查看skyeye README说需要gcc3.3 / gcc3.4,于是我上网下载并编译了gcc3.4, skyeye还是提示我的gcc3.4不支持inline x86 asm,今天写了一段x86 asm的代码在我Office的Fedora6下编译过了, 回家看看ubunut下的gcc能否编译过, 要是过的话, 看来skyeye在检查inline x86 asm这个特性上有问题.
int main(void)
{
int x = 10, y;

__asm ("movl %1, %%eax;"
"movl %%eax, %0;"
:"=r"(y) /* y is output operand */
:"r"(x) /* x is input operand */
:"%eax"); /* %eax is clobbered register */
printf("x=%d, y=%d\n", x, y);
return 0;
}
PS: 晚上发现我的ubuntu gcc果然支持inline x86 asm,是skyeye的check-x86-asm.sh检测代码有问题,直接exit 0绕过检测,顺利编译带有dbct的skyeye,初步感觉效率有一点点提高吧 :-)

2009/02/15
kernel/softirq.c : 367
+// Anders 2009_0215,raise rx & tx riq priority
+if ((nr == NET_RX_SOFTIRQ) || (nr == NET_TX_SOFTIRQ))
+ raise_softirq(nr);
sudo nice -n -20 skyeye -e linux 本来ping可以控制在1s内有echo了,telnet也进去了,可以重新来过又是不行了,昙花一现的成功 :-(