コード例 #1
0
ファイル: compat.c プロジェクト: ChunHungLiu/xenomai
int sys32_get_timeval(struct timeval *tv,
		      const struct compat_timeval __user *ctv)
{
	return (ctv == NULL ||
		!access_rok(ctv, sizeof(*ctv)) ||
		__xn_get_user(tv->tv_sec, &ctv->tv_sec) ||
		__xn_get_user(tv->tv_usec, &ctv->tv_usec)) ? -EFAULT : 0;
}
コード例 #2
0
ファイル: compat.c プロジェクト: ChunHungLiu/xenomai
int sys32_get_timespec(struct timespec *ts,
		       const struct compat_timespec __user *cts)
{
	return (cts == NULL ||
		!access_rok(cts, sizeof(*cts)) ||
		__xn_get_user(ts->tv_sec, &cts->tv_sec) ||
		__xn_get_user(ts->tv_nsec, &cts->tv_nsec)) ? -EFAULT : 0;
}
コード例 #3
0
ファイル: compat.c プロジェクト: ChunHungLiu/xenomai
ssize_t sys32_get_fdset(fd_set *fds, const compat_fd_set __user *cfds,
			size_t cfdsize)
{
	int rdpos, wrpos, rdlim = cfdsize / sizeof(compat_ulong_t);

	if (cfds == NULL || !access_rok(cfds, cfdsize))
		return -EFAULT;

	for (rdpos = 0, wrpos = 0; rdpos < rdlim; rdpos++, wrpos++)
		if (__xn_get_user(fds->fds_bits[wrpos], cfds->fds_bits + rdpos))
			return -EFAULT;

	return (ssize_t)rdlim * sizeof(long);
}
コード例 #4
0
ファイル: syscall.c プロジェクト: JackieXie168/xenomai
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));
}