Hi, Jinesh. > Use kbuild. See http://tldp.org/LDP/lkmpg/2.6/html/index.html Thank you. But I meant compiling a userland program. I'want to run a userland program that tests the following system calls. I couldn't find the definitions of _syscall?() macros. The following code can be compiled for RHL9, FC3, FC4, FC5, CentOS 4.4, OpenSuSE 10.1, Debian Sarge, but can't be compiled for FC6 due to the lack of "#define _syscall?()" in /usr/include/asm/unistd.h . static _syscall0(pid_t, gettid); pid_t gettid(); static _syscall1(int, uselib, const char *, library); int uselib(const char *library); static _syscall2(caddr_t, create_module, const char *, name, size_t, size); caddr_t create_module(const char *name, size_t size); static _syscall2(int, pivot_root, const char *, new_root, const char *, put_old); int pivot_root(const char *new_root, const char *put_old); static _syscall2(int, tkill, int, tid, int, sig); int tkill(int tid, int sig); #ifdef __NR_tgkill static _syscall3(int, tgkill, int, tgid, int, tid, int, sig); int tgkill(int tgid, int tid, int sig); #endif #ifdef __NR_compat_sys_ioctl static _syscall3(long, compat_sys_ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg); long compat_sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); #endif #ifdef __NR_sys_kexec_load struct kexec_segment; static _syscall4(long, sys_kexec_load, unsigned long, entry, unsigned long, nr_segments, struct kexec_segment *, segments, unsigned long, flags); long sys_kexec_load(unsigned long entry, unsigned long nr_segments, struct kexec_segment *segments, unsigned long flags); #endif -- Tetsuo Handa -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/