c5c84d1651
An include file that pulls in all the definitions needed for the file related system calls. This also includes the host definitions to implement the system calls and some helper routines to lock/unlock different aspects of the system call arguments. Signed-off-by: Warner Losh <imp@bsdimp.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
93 lines
2.4 KiB
C
93 lines
2.4 KiB
C
/*
|
|
* BSD syscalls
|
|
*
|
|
* Copyright (c) 2003-2008 Fabrice Bellard
|
|
* Copyright (c) 2013-2014 Stacey D. Son
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/*
|
|
* We need the FreeBSD "legacy" definitions. Rust needs the FreeBSD 11 system
|
|
* calls since it doesn't use libc at all, so we have to emulate that despite
|
|
* FreeBSD 11 being EOL'd.
|
|
*/
|
|
#define _WANT_FREEBSD11_STAT
|
|
#define _WANT_FREEBSD11_STATFS
|
|
#define _WANT_FREEBSD11_DIRENT
|
|
#define _WANT_KERNEL_ERRNO
|
|
#define _WANT_SEMUN
|
|
#include "qemu/osdep.h"
|
|
#include "qemu/cutils.h"
|
|
#include "qemu/path.h"
|
|
#include <sys/syscall.h>
|
|
#include <sys/param.h>
|
|
#include <sys/sysctl.h>
|
|
#include <utime.h>
|
|
|
|
#include "qemu.h"
|
|
#include "qemu-common.h"
|
|
#include "signal-common.h"
|
|
#include "user/syscall-trace.h"
|
|
|
|
#include "bsd-file.h"
|
|
|
|
void target_set_brk(abi_ulong new_brk)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* errno conversion.
|
|
*/
|
|
abi_long get_errno(abi_long ret)
|
|
{
|
|
if (ret == -1) {
|
|
return -host_to_target_errno(errno);
|
|
} else {
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
int host_to_target_errno(int err)
|
|
{
|
|
/*
|
|
* All the BSDs have the property that the error numbers are uniform across
|
|
* all architectures for a given BSD, though they may vary between different
|
|
* BSDs.
|
|
*/
|
|
return err;
|
|
}
|
|
|
|
bool is_error(abi_long ret)
|
|
{
|
|
return (abi_ulong)ret >= (abi_ulong)(-4096);
|
|
}
|
|
|
|
/*
|
|
* do_syscall() should always have a single exit point at the end so that
|
|
* actions, such as logging of syscall results, can be performed. All errnos
|
|
* that do_syscall() returns must be -TARGET_<errcode>.
|
|
*/
|
|
abi_long do_freebsd_syscall(void *cpu_env, int num, abi_long arg1,
|
|
abi_long arg2, abi_long arg3, abi_long arg4,
|
|
abi_long arg5, abi_long arg6, abi_long arg7,
|
|
abi_long arg8)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void syscall_init(void)
|
|
{
|
|
}
|