bsd-user: Implement shmid_ds conversion between host and target.
Signed-off-by: Stacey Son <sson@FreeBSD.org> Signed-off-by: Karim Taha <kariem.taha2.7@gmail.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230925182709.4834-11-kariem.taha2.7@gmail.com>
This commit is contained in:
parent
86fbb4436b
commit
bd2b73182f
@ -43,6 +43,30 @@ void target_to_host_ipc_perm__locked(struct ipc_perm *host_ip,
|
||||
__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)
|
||||
{
|
||||
@ -55,3 +79,26 @@ void host_to_target_ipc_perm__locked(struct target_ipc_perm *target_ip,
|
||||
__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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user