相关讨论
ldd中延时,
我在文件系统ext3中,调用用mdelay()可以,但调用msleep()为何调用不了.
头文件相关了加了;;;,
不知道,msleep如何调用.
另外mdelay是忙等待,等待时间内占用cpu,那么如果分配给该进程的时间片用完了,它实现应该还是会让出cpu是吧,在再次调用它之前的时间内也算在忙等待时间内吗?
而msleep好像不是忙等待,它里面会调用到schedule(),也就是它会主动让出cpu,不等它的...
我在内核中启用了两个线程;
然后两个线程都采用无限循环如下:
while(1)
{
udelay(100);
printk("...........\n");
}
发现CUP一直被占用,从来没有机会执行其它东西.
我想问一下,是不是在内核中延时,都不会释放CPU,如用udelay,mdelay,msleep等
比如hz为1000 也就是1ms一个时钟中断 在内核里面调用mdelay(10) , 时钟中断到了检查时间片发现用完了或者其他情况会继续delay完还是切换? 我这里不是很清楚
怎么才能在程序中调用mdelay/udelay/ndelay函数? 还应该include哪些head文件?
// main.c
#include
#include
#include
#include
int main()
{
fprintf(stdout,"delay start.\n");
mdelay(100);
fprintf(stdout,"delay end.\n");
return 1;
}
// compile main.c
xxx@xxx:~/workspace/mdelay$ gcc -I/usr/src/linux-headers-2.6.27-14-generic/include -...
by
pommy
-
C/C++
-
2009-07-04 19:09:32 阅读(6348) 回复(5)