mirror of
				https://gitlab.com/qemu-project/qemu.git
				synced 2025-10-30 07:57:14 +08:00 
			
		
		
		
	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:
		| @ -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; | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Stacey Son
					Stacey Son