Files
qemu/bsd-user/bsd-mem.c
Warner Losh acdb0de9be bsd-user: Switch to SPDX-License-Expression
Two minor changes to the copyright and license marking for these files:
(1) Stacey D Son is used instead of variations of his name.
(2) The GPL boilerplate is replaced by SPDX markings. No change to the
terms of the license are intended, and this matches current QEMU practice.

There's no changes to the license or additional claims to any IP that
others may hold in these files. All the S-o-bs in this commit have given
me permission to do this to the extent they may hold rights. git blame
over multiple repos and branches suggests that only minimal other
material is present (much of it likely not subject to copyright
protection). The project's long and complex history as well as tooling
limitations make it hard to be 100% sure. Any omissions are
unintentional and I will correct them as they come to light.

Signed-off-by: Stacey Son <sson@FreeBSD.org>
Signed-off-by: Sean Bruno <sbruno@FreeBSD.org>
Signed-off-by: Mikaël Urankar <mikael.urankar@gmail.com>
Signed-off-by: Kyle Evans <kevans@FreeBSD.org>
Signed-off-by: Guy Yur <guyyur@gmail.com>
Signed-off-by: Alexander Kabaev <kan@FreeBSD.org>
Signed-off-by: Michal Meloun <mmel@FreeBSD.org>
Signed-off-by: Ed Schouten <ed@nuxi.nl>
Signed-off-by: Karim Taha <kariem.taha2.7@gmail.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Warner Losh <imp@bsdimp.com>
2026-05-06 20:10:36 -06:00

94 lines
3.1 KiB
C

/*
* memory management system conversion routines
*
* Copyright (c) 2013 Stacey D. Son
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "qemu/osdep.h"
#include "qemu.h"
#include "qemu-bsd.h"
struct bsd_shm_regions bsd_shm_regions[N_BSD_SHM_REGIONS];
abi_ulong target_brk;
abi_ulong initial_target_brk;
void target_set_brk(abi_ulong new_brk)
{
target_brk = TARGET_PAGE_ALIGN(new_brk);
initial_target_brk = target_brk;
}
void target_to_host_ipc_perm__locked(struct ipc_perm *host_ip,
struct target_ipc_perm *target_ip)
{
__get_user(host_ip->cuid, &target_ip->cuid);
__get_user(host_ip->cgid, &target_ip->cgid);
__get_user(host_ip->uid, &target_ip->uid);
__get_user(host_ip->gid, &target_ip->gid);
__get_user(host_ip->mode, &target_ip->mode);
__get_user(host_ip->seq, &target_ip->seq);
__get_user(host_ip->key, &target_ip->key);
}
abi_long target_to_host_shmid_ds(struct shmid_ds *host_sd,
abi_ulong target_addr)
{
struct target_shmid_ds *target_sd;
if (!lock_user_struct(VERIFY_READ, target_sd, target_addr, 1)) {
return -TARGET_EFAULT;
}
target_to_host_ipc_perm__locked(&(host_sd->shm_perm),
&(target_sd->shm_perm));
__get_user(host_sd->shm_segsz, &target_sd->shm_segsz);
__get_user(host_sd->shm_lpid, &target_sd->shm_lpid);
__get_user(host_sd->shm_cpid, &target_sd->shm_cpid);
__get_user(host_sd->shm_nattch, &target_sd->shm_nattch);
__get_user(host_sd->shm_atime, &target_sd->shm_atime);
__get_user(host_sd->shm_dtime, &target_sd->shm_dtime);
__get_user(host_sd->shm_ctime, &target_sd->shm_ctime);
unlock_user_struct(target_sd, target_addr, 0);
return 0;
}
void host_to_target_ipc_perm__locked(struct target_ipc_perm *target_ip,
struct ipc_perm *host_ip)
{
__put_user(host_ip->cuid, &target_ip->cuid);
__put_user(host_ip->cgid, &target_ip->cgid);
__put_user(host_ip->uid, &target_ip->uid);
__put_user(host_ip->gid, &target_ip->gid);
__put_user(host_ip->mode, &target_ip->mode);
__put_user(host_ip->seq, &target_ip->seq);
__put_user(host_ip->key, &target_ip->key);
}
abi_long host_to_target_shmid_ds(abi_ulong target_addr,
struct shmid_ds *host_sd)
{
struct target_shmid_ds *target_sd;
if (!lock_user_struct(VERIFY_WRITE, target_sd, target_addr, 0)) {
return -TARGET_EFAULT;
}
host_to_target_ipc_perm__locked(&(target_sd->shm_perm),
&(host_sd->shm_perm));
__put_user(host_sd->shm_segsz, &target_sd->shm_segsz);
__put_user(host_sd->shm_lpid, &target_sd->shm_lpid);
__put_user(host_sd->shm_cpid, &target_sd->shm_cpid);
__put_user(host_sd->shm_nattch, &target_sd->shm_nattch);
__put_user(host_sd->shm_atime, &target_sd->shm_atime);
__put_user(host_sd->shm_dtime, &target_sd->shm_dtime);
__put_user(host_sd->shm_ctime, &target_sd->shm_ctime);
unlock_user_struct(target_sd, target_addr, 1);
return 0;
}