2014-01-29 2308 views
0

功能mdelay()在我的程序中使用,但在编译时,GCC给了我一个错误:致命错误:LINUX/delay.h:没有这样的文件或目录

fatal error: linux/delay.h: No such file or directory

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

我已经试过什么:

  • 副本的文件,delay.h,进入该文件夹的/ usr/Linux操作系统,但它会出现另一个头文件(ASM/delay.h)失踪。

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

如何解决这个问题?

ENVIR:Ubuntu的LTS 12.04

+0

准确地说你想要建立什么?正如我所看到的那样,您想要构建一些与Linux内核源(如驱动程序)相关的东西。是对的吗? – evnu

+0

@evnu不是一个驱动程序,我只是想让我的简单C代码像在Windows中使用的那样延迟一段时间('Sleep()')。 –

+1

使用'睡眠'的'usleep' – sujin

回答

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 

因此,你不能简单地使用它。但是,在unistd.h存在多个备选方案,例如:

  • sleep()睡觉N秒。
  • unistd.husleep()睡觉U微秒
  • nanosleep()time.h制作一个线程睡眠一些纳秒。

据我所知,你正在寻找一个函数来指定一个微秒的睡眠时间间隔。因此,使用usleep()。但请注意,该功能被标记为已弃用与POSIX.1-2001。 usleep()的手册页建议使用nanosleep()代替。

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; 
} 
相关问题