马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在linux中学习命令的最好办法是学习Shell脚本编程,Shell脚本比起其他语言来学习简单,但是功能却十分强大.通过学习Shell编程,能让你掌握大量的linux命令。
Linux内核中有良多c中利用汇编的情形,好比原子操纵。内联汇编一般用上面的格局:
asm volatile("InstructionList":Output:Input:Clobber/Modify);
固然,大概写作以下格局(Output、Input、Clobber/Modify都是可选的),也就是三个冒号,4个部分:
asm volatile("InstructionList"
:Output
:Input
:Clobber/Modify);
为了了解便利,以屏障当地irq相干函数的代码为例子:
<p>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
staticinlineunsignedlongnative_save_fl(void)
{
unsignedlongflags;
/*
*"=rm"issafehere,because"pop"adjuststhestackbefore
*itevaluatesitseffectiveaddress--thisispartofthe
*documentedbehaviorofthe"pop"instruction.
*/
asmvolatile("#__raw_save_flagsnt"
"pushf;pop%0"
:"=rm"(flags)
:/*noinput*/
:"memory");
returnflags;
}
staticinlinevoidnative_restore_fl(unsignedlongflags)
{
asmvolatile("push%0;popf"
:/*nooutput*/
:"g"(flags)
:"memory","cc");
}
staticinlinevoidnative_irq_disable(void)
{
asmvolatile("cli":::"memory");
}
<p>staticinlinevoidnative_irq_enable(void |