致命错误:linux / delay.h:没有这样的文件或目录

时间:2014-01-29 06:49:49

标签: c linux delay

函数mdelay()在我的程序中使用,但在编译时,GCC给了我一个错误:

  

致命错误:linux / delay.h:没有这样的文件或目录

我试图解决这个问题,但没有任何效果。

我尝试了什么:

  • 将文件delay.h复制到文件夹/ usr / linux中,但它会显示缺少另一个头文件(asm / delay.h)。

  • 将文件delay.h(与上述不同)复制到文件夹/ usr / asm中,但它会显示丢失的许多头文件。

如何解决这个问题?

Envir:Ubuntu 12.04 LTS

2 个答案:

答案 0 :(得分:1)

msleep是内核函数。如果您希望c程序使用sleepusleep延迟。

我没有找到任何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

因此,你不能简单地使用它。但是存在多种选择,例如:

    {li> sleep()unistd.h中暂停N秒。 {li> usleep()unistd.h中暂停U微秒 {li> nanosleep()time.h中使线程休眠几纳秒。

据我所知,您正在搜索指定微秒睡眠间隔的函数。因此,请使用usleep()。但请注意,该功能使用POSIX.1-2001标记为已弃用usleep()使用nanosleep()建议的联合帮助页。