static RTAI_SYSCALL_MODE int sys_rtdm_sendmsg(long fd, const struct msghdr *msg, long flags) { struct msghdr krnl_msg; struct task_struct *curr = current; if (unlikely(!__xn_access_ok(curr, VERIFY_READ, msg, sizeof(krnl_msg)))) { return -EFAULT; } __xn_copy_from_user(curr, &krnl_msg, msg, sizeof(krnl_msg)); return __rt_dev_sendmsg(curr, fd, &krnl_msg, flags); }
static int sys_rtdm_sendmsg(struct pt_regs *regs) { struct task_struct *p = current; struct msghdr krnl_msg; if (unlikely(!access_rok(__xn_reg_arg2(regs), sizeof(krnl_msg)) || __xn_copy_from_user(&krnl_msg, (void __user *)__xn_reg_arg2(regs), sizeof(krnl_msg)))) return -EFAULT; return __rt_dev_sendmsg(p, __xn_reg_arg1(regs), &krnl_msg, __xn_reg_arg3(regs)); }