19 #ifndef _COBALT_ASM_GENERIC_SYSCALL_H 20 #define _COBALT_ASM_GENERIC_SYSCALL_H 22 #include <linux/types.h> 23 #include <asm/uaccess.h> 24 #include <asm/xenomai/features.h> 25 #include <asm/xenomai/wrappers.h> 26 #include <asm/xenomai/machine.h> 27 #include <cobalt/uapi/asm-generic/syscall.h> 29 #define access_rok(addr, size) access_ok(VERIFY_READ, (addr), (size)) 30 #define access_wok(addr, size) access_ok(VERIFY_WRITE, (addr), (size)) 32 #define __xn_reg_arglist(regs) \ 33 __xn_reg_arg1(regs), \ 34 __xn_reg_arg2(regs), \ 35 __xn_reg_arg3(regs), \ 36 __xn_reg_arg4(regs), \ 39 #define __xn_copy_from_user(dstP, srcP, n) __copy_from_user_inatomic(dstP, srcP, n) 40 #define __xn_copy_to_user(dstP, srcP, n) __copy_to_user_inatomic(dstP, srcP, n) 41 #define __xn_put_user(src, dstP) __put_user_inatomic(src, dstP) 42 #define __xn_get_user(dst, srcP) __get_user_inatomic(dst, srcP) 43 #define __xn_strncpy_from_user(dstP, srcP, n) strncpy_from_user(dstP, srcP, n) 45 static inline int cobalt_copy_from_user(
void *dst,
const void __user *src,
48 return (!access_rok(src, size) ||
49 __xn_copy_from_user(dst, src, size)) ? -EFAULT : 0;
52 static inline int cobalt_copy_to_user(
void __user *dst,
const void *src,
55 return (!access_wok(dst, size) ||
56 __xn_copy_to_user(dst, src, size)) ? -EFAULT : 0;
59 static inline int cobalt_strncpy_from_user(
char *dst,
const char __user *src,
62 if (unlikely(!access_rok(src, 1)))
65 return __xn_strncpy_from_user(dst, src, count);
69 #define __COBALT_COMPAT_BIT 0x1 71 #define __COBALT_COMPATX_BIT 0x2