UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += faccessat-4
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fallocate-4
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chdir-1
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchdir-1
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chmod-2
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchmod-2
UK_TRACEPOINT(trace_vfs_fchdir_ret, "");
UK_TRACEPOINT(trace_vfs_fchdir_err, "%d", int);
-int fchdir(int fd)
+UK_SYSCALL_R_DEFINE(int, fchdir, int, fd)
{
trace_vfs_fchdir(fd);
struct task *t = main_task;
error = fget(fd, &fp);
if (error)
- goto out_errno;
+ goto out_error;
error = __do_fchdir(fp, t);
if (error) {
fdrop(fp);
- goto out_errno;
+ goto out_error;
}
trace_vfs_fchdir_ret();
return 0;
- out_errno:
+ out_error:
trace_vfs_fchdir_err(error);
- errno = error;
- return -1;
+ return -error;
}
UK_TRACEPOINT(trace_vfs_link, "\"%s\" \"%s\"", const char*, const char*);