//val: bit[23:0]立即数,该val用来判断用户函数需要调用哪个内核函数
2)然后CPU会跳到异常向量入口vector_swi处,根据swi指令后面的val值,在某个数组表里找到对应的sys_write...ldrcc pc, [tbl, scno, lsl #2] @ call sys_* routine //pc=(tbl+scno)<<2,实现调用sys_write...()
//tbl:数组表基地址, scno:要调用的sys_write()的索引值 lsl #2:左移2位,一个函数指针占据4个字节
从上面代码可以看出,2440的val基值为0x900000...count : 100);
ker_buf[99]='\0';
printk("sys_hello:%s\n",ker_buf);
}
}
3.4 include\linux...hello("www.100ask.net", 15);//这个函数会调用内核的sys_hello()
return 0;
}
4.1 其中asm ()是一个内嵌汇编(参考linux