函数mdelay()
在我的程序中使用,但在编译时,GCC给了我一个错误:
致命错误:linux / delay.h:没有这样的文件或目录
我试图解决这个问题,但没有任何效果。
我尝试了什么:
将文件delay.h复制到文件夹/ usr / linux中,但它会显示缺少另一个头文件(asm / delay.h)。
将文件delay.h(与上述不同)复制到文件夹/ usr / asm中,但它会显示丢失的许多头文件。
如何解决这个问题?
Envir:Ubuntu 12.04 LTS
答案 0 :(得分:1)
msleep
是内核函数。如果您希望c
程序使用sleep
或usleep
延迟。
我没有找到任何msleep
标准函数。您可以在usleep
的帮助下实现它。
#include <stdio.h>
#include <unistd.h>
int main(void)
{
long x = 1000000;
sleep(1); //1sec
usleep(1); //1usec
usleep(x); //1sec
x = 1000;
usleep(x); //1msec
return 0;
}
答案 1 :(得分:1)
如Linux Cross Reference所示,mdelay()
是linux内核源代码中的一个宏。
#ifndef mdelay
#define mdelay(n) (\
(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
#endif
因此,你不能简单地使用它。但是存在多种选择,例如:
sleep()
在unistd.h
中暂停N
秒。
{li> usleep()
在unistd.h
中暂停U
微秒
{li> nanosleep()
在time.h
中使线程休眠几纳秒。
据我所知,您正在搜索指定微秒睡眠间隔的函数。因此,请使用usleep()
。但请注意,该功能使用POSIX.1-2001标记为已弃用。 usleep()
使用nanosleep()
建议的联合帮助页。