forked from Qortal/Brooklyn
* 0day explit mitigation * Memory corruption prevention * Privilege escalation prevention * Buffer over flow prevention * File System corruption defense * Thread escape prevention This may very well be the most intensive inclusion to BrooklynR. This will not be part of an x86 suite nor it will be released as tool kit. The security core toolkit will remain part of kernel base.
45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
#ifndef __ASM_GENERIC_DELAY_H
|
|
#define __ASM_GENERIC_DELAY_H
|
|
|
|
/* Undefined functions to get compile-time errors */
|
|
extern void __bad_udelay(void);
|
|
extern void __bad_ndelay(void);
|
|
|
|
extern void __udelay(unsigned long usecs);
|
|
extern void __ndelay(unsigned long nsecs);
|
|
extern void __const_udelay(unsigned long xloops);
|
|
extern void __delay(unsigned long loops);
|
|
|
|
/*
|
|
* The weird n/20000 thing suppresses a "comparison is always false due to
|
|
* limited range of data type" warning with non-const 8-bit arguments.
|
|
*/
|
|
|
|
/* 0x10c7 is 2**32 / 1000000 (rounded up) */
|
|
#define udelay(n) \
|
|
({ \
|
|
if (__builtin_constant_p(n)) { \
|
|
if ((n) / 20000 >= 1) \
|
|
__bad_udelay(); \
|
|
else \
|
|
__const_udelay((n) * 0x10c7ul); \
|
|
} else { \
|
|
__udelay(n); \
|
|
} \
|
|
})
|
|
|
|
/* 0x5 is 2**32 / 1000000000 (rounded up) */
|
|
#define ndelay(n) \
|
|
({ \
|
|
if (__builtin_constant_p(n)) { \
|
|
if ((n) / 20000 >= 1) \
|
|
__bad_ndelay(); \
|
|
else \
|
|
__const_udelay((n) * 5ul); \
|
|
} else { \
|
|
__ndelay(n); \
|
|
} \
|
|
})
|
|
|
|
#endif /* __ASM_GENERIC_DELAY_H */
|