Le 23/01/2018 à 20:13, Palmer Dabbelt a écrit : > On Tue, 23 Jan 2018 06:48:07 PST (-0800), laur...@vivier.eu wrote: >> From: Andreas Schwab <sch...@suse.de> >> >> This is needed for new architectures like RISC-V which do not provide any >> other rename-like syscall. >> >> Signed-off-by: Andreas Schwab <sch...@suse.de> >> Reviewed-by: Laurent Vivier <laur...@vivier.eu> >> Message-Id: <mvm607su9qs....@suse.de> >> Signed-off-by: Laurent Vivier <laur...@vivier.eu> >> --- >> linux-user/syscall.c | 34 ++++++++++++++++++++++++++++++++++ >> 1 file changed, 34 insertions(+) >> >> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >> index 104408c050..74378947f0 100644 >> --- a/linux-user/syscall.c >> +++ b/linux-user/syscall.c >> @@ -600,6 +600,24 @@ static int sys_utimensat(int dirfd, const char >> *pathname, >> #endif >> #endif /* TARGET_NR_utimensat */ >> >> +#ifdef TARGET_NR_renameat2 >> +#if defined(__NR_renameat2) >> +#define __NR_sys_renameat2 __NR_renameat2 >> +_syscall5(int, sys_renameat2, int, oldfd, const char *, old, int, newfd, >> + const char *, new, unsigned int, flags) >> +#else >> +static int sys_renameat2(int oldfd, const char *old, >> + int newfd, const char *new, int flags) >> +{ >> + if (flags == 0) { >> + return renameat(oldfd, old, newfd, new); >> + } >> + errno = ENOSYS; >> + return -1; >> +} >> +#endif >> +#endif /* TARGET_NR_renameat2 */ >> + >> #ifdef CONFIG_INOTIFY >> #include <sys/inotify.h> >> >> @@ -8426,6 +8444,22 @@ abi_long do_syscall(void *cpu_env, int num, >> abi_long arg1, >> } >> break; >> #endif >> +#if defined(TARGET_NR_renameat2) >> + case TARGET_NR_renameat2: >> + { >> + void *p2; >> + p = lock_user_string(arg2); >> + p2 = lock_user_string(arg4); >> + if (!p || !p2) { >> + ret = -TARGET_EFAULT; >> + } else { >> + ret = get_errno(sys_renameat2(arg1, p, arg3, p2, arg5)); >> + } >> + unlock_user(p2, arg4, 0); >> + unlock_user(p, arg2, 0); >> + } >> + break; >> +#endif >> #ifdef TARGET_NR_mkdir >> case TARGET_NR_mkdir: >> if (!(p = lock_user_string(arg1))) > > Thanks! My patch got lost in the shuffle, but I think these are > functionally identical. Feel free to add my
I've seen your patch, but Andreas has implemented what was requested by Peter (use renameat() when flags == 0), so I took his one. > Reviewed-by: Palmer Dabbelt <pal...@sifive.com> To late for that (it's a pull request), sorry. Thank you, Laurent