The function mdelay()
is used in my program, but when compiling, GCC gave me an error:
在我的程序中使用了函数mdelay(),但是在编译时,GCC给了我一个错误:
fatal error: linux/delay.h: No such file or directory
致命错误:linux /延迟。h:没有这样的文件或目录。
I tried to solve this problem, but nothing worked.
我试图解决这个问题,但没有成功。
What I've tried:
我试着什么:
-
copy the file, delay.h, into the folder /usr/linux, but it'll show up another header file (asm/delay.h) missing.
复制文件,延迟。在文件夹/usr/linux中,但它会显示另一个头文件(asm/delay.h)。
-
copy the file, delay.h (different from the above), into the folder /usr/asm, but it'll show up many header files missing.
复制文件,延迟。h(不同于上面),进入文件夹/usr/asm,但它会显示许多头文件丢失。
How to solve this problem?
如何解决这个问题?
Envir: Ubuntu 12.04 LTS
Envir:Ubuntu 12.04 LTS
2 个解决方案
#1
1
As shown in the Linux Cross Reference, mdelay()
is a macro within the linux kernel source code.
如Linux交叉引用所示,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
Thus, you cannot simply use it. But there exist multiple alternatives, e.g.:
因此,您不能简单地使用它。但是存在多种选择,例如:
-
sleep()
inunistd.h
for sleepingN
seconds. - 在unistd睡眠()。h表示睡眠时间。
-
usleep()
inunistd.h
for sleepingU
microseconds - 在unistd usleep()。h用于睡眠U微秒。
-
nanosleep()
intime.h
for making a thread sleep some nanoseconds. - nanosleep()。让一个线程休眠几纳秒。
As I understand, you are searching for a function to specify a microseconds sleep interval. Thus, use usleep()
. Note however that the function is marked as deprecated with POSIX.1-2001. The manpage for usleep()
advices to use nanosleep()
instead.
据我所知,您正在搜索一个函数来指定微秒睡眠时间间隔。因此,使用usleep()。但是注意,该函数被标记为POSIX.1-2001。usleep()的manpage建议使用nanosleep()。
#2
1
msleep
is kernel function. If you want delay from c
program use sleep
or usleep
.
msleep是内核函数。如果你想延迟c程序使用睡眠或usleep。
I didn't found any msleep
standard function. You can implement it by the help of 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
As shown in the Linux Cross Reference, mdelay()
is a macro within the linux kernel source code.
如Linux交叉引用所示,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
Thus, you cannot simply use it. But there exist multiple alternatives, e.g.:
因此,您不能简单地使用它。但是存在多种选择,例如:
-
sleep()
inunistd.h
for sleepingN
seconds. - 在unistd睡眠()。h表示睡眠时间。
-
usleep()
inunistd.h
for sleepingU
microseconds - 在unistd usleep()。h用于睡眠U微秒。
-
nanosleep()
intime.h
for making a thread sleep some nanoseconds. - nanosleep()。让一个线程休眠几纳秒。
As I understand, you are searching for a function to specify a microseconds sleep interval. Thus, use usleep()
. Note however that the function is marked as deprecated with POSIX.1-2001. The manpage for usleep()
advices to use nanosleep()
instead.
据我所知,您正在搜索一个函数来指定微秒睡眠时间间隔。因此,使用usleep()。但是注意,该函数被标记为POSIX.1-2001。usleep()的manpage建议使用nanosleep()。
#2
1
msleep
is kernel function. If you want delay from c
program use sleep
or usleep
.
msleep是内核函数。如果你想延迟c程序使用睡眠或usleep。
I didn't found any msleep
standard function. You can implement it by the help of 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;
}