bsd-user: Implement shm_rename(2) system call

Signed-off-by: Kyle Evans <kevans@FreeBSD.org>
Signed-off-by: Karim Taha <kariem.taha2.7@gmail.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Message-Id: <20230925182709.4834-7-kariem.taha2.7@gmail.com>
This commit is contained in:
Kyle Evans 2023-09-25 21:26:52 +03:00 committed by Warner Losh
parent 0c3529888a
commit 182ea728e0
2 changed files with 30 additions and 0 deletions

View File

@ -70,5 +70,29 @@ static inline abi_long do_freebsd_shm_open2(abi_ulong pathptr, abi_ulong flags,
}
#endif /* __FreeBSD_version >= 1300048 */
#if defined(__FreeBSD_version) && __FreeBSD_version >= 1300049
/* shm_rename(2) */
static inline abi_long do_freebsd_shm_rename(abi_ulong fromptr, abi_ulong toptr,
abi_ulong flags)
{
int ret;
void *ufrom, *uto;
ufrom = lock_user_string(fromptr);
if (ufrom == NULL) {
return -TARGET_EFAULT;
}
uto = lock_user_string(toptr);
if (uto == NULL) {
unlock_user(ufrom, fromptr, 0);
return -TARGET_EFAULT;
}
ret = get_errno(shm_rename(ufrom, uto, flags));
unlock_user(ufrom, fromptr, 0);
unlock_user(uto, toptr, 0);
return ret;
}
#endif /* __FreeBSD_version >= 1300049 */
#endif /* OS_MISC_H */

View File

@ -807,6 +807,12 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1,
break;
#endif
#if defined(__FreeBSD_version) && __FreeBSD_version >= 1300049
case TARGET_FREEBSD_NR_shm_rename: /* shm_rename(2) */
ret = do_freebsd_shm_rename(arg1, arg2, arg3);
break;
#endif
/*
* sys{ctl, arch, call}
*/