segundo script microsegundos microsegundo hora fecha como abreviatura abrevia linux-kernel delay sleep

linux kernel - script - Sueño de Microsegundo en kernel de Linux



microsegundos abreviatura (0)

udelay() , mdelay() , usleep_range() todos están dando errores de tiempo de ejecución:

symbol lookup error: undefined symbol: __const_udelay

Estoy intentando con ns3-DCE-linux , por lo tanto, puedo ver el error, pero en Kernel de Linux, me da un ataque de kernel.

Desde aquí, udelay() se define como una macro.

#define udelay(n) / ({ / if (__builtin_constant_p(n)) { / if ((n) / 20000 >= 1) / __bad_udelay(); / else / __const_udelay((n) * 0x10c7ul); / } else { / __udelay(n); / } / })

Desde aquí mdelay() se define como una macro que usa udelay() .

#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

usleep_range() también usa udelay() después de un seguimiento largo.

Puedo ver claramente la definición de __const_udelay() aquí .

inline void __const_udelay(unsigned long xloops) { int d0; xloops *= 4; asm("mull %%edx" :"=d" (xloops), "=&a" (d0) :"1" (xloops), "" (this_cpu_read(cpu_info.loops_per_jiffy) * (HZ/4))); __delay(++xloops); } EXPORT_SYMBOL(__const_udelay);

e incluido como extern aquí .

extern void __const_udelay(unsigned long xloops);

Lo único que funciona es msleep() .

¿Hay alguna forma de que pueda dar un sueño de unos microsegundos en Kernel? (demora o duerme. Pero dormir es preferible).

¿Cuál es la razón del error anterior? ¿Es este hardware dependiente? ¿Cómo resolver el error?