On Wed, Nov 8, 2017 at 6:55 AM, Greentime Hu <green.hu@xxxxxxxxx> wrote: > + > +static inline void __delay(unsigned long loops) > +{ > + __asm__ __volatile__(".align 2\n" > + "1:\n" > + "\taddi\t%0, %0, -1\n" > + "\tbgtz\t%0, 1b\n" > + :"=r"(loops) > + :"0"(loops)); > +} Does the architecture define a high-resolution clock source? If yes, then it's better to use that to get exact timing than to rely on the loop calibration. > +/* > + * This file is generally used by user-level software, so you need to > + * be a little careful about namespace pollution etc. Also, we cannot > + * assume GCC is being used. > + */ > + > +typedef unsigned short __kernel_mode_t; > +#define __kernel_mode_t __kernel_mode_t > + > +typedef unsigned short __kernel_ipc_pid_t; > +#define __kernel_ipc_pid_t __kernel_ipc_pid_t > + > +typedef unsigned short __kernel_uid_t; > +typedef unsigned short __kernel_gid_t; > +#define __kernel_uid_t __kernel_uid_t > + > +typedef unsigned short __kernel_old_dev_t; > +#define __kernel_old_dev_t __kernel_old_dev_t > + > +#include <asm-generic/posix_types.h> I don't understand why you would want to override any of those. Changing them unfortunately means rebuilding all of your user space, but I think it would be better to do that now than to suffer from this later on. Arnd