Implement linux_fadvise64() and linux_fadvise64_64() using
kern_posix_fadvise(). Reviewed by: silence on emulation@ MFC after: 2 weeks
This commit is contained in:
parent
b77dd854a8
commit
dd01579cde
@ -596,6 +596,16 @@ int linux_ioctl_unregister_handler(struct linux_ioctl_handler *h);
|
||||
#define LINUX_F_WRLCK 1
|
||||
#define LINUX_F_UNLCK 2
|
||||
|
||||
/*
|
||||
* posix_fadvise advice
|
||||
*/
|
||||
#define LINUX_POSIX_FADV_NORMAL 0
|
||||
#define LINUX_POSIX_FADV_RANDOM 1
|
||||
#define LINUX_POSIX_FADV_SEQUENTIAL 2
|
||||
#define LINUX_POSIX_FADV_WILLNEED 3
|
||||
#define LINUX_POSIX_FADV_DONTNEED 4
|
||||
#define LINUX_POSIX_FADV_NOREUSE 5
|
||||
|
||||
/*
|
||||
* mount flags
|
||||
*/
|
||||
|
@ -59,7 +59,6 @@ DUMMY(setfsuid);
|
||||
DUMMY(setfsgid);
|
||||
DUMMY(pivot_root);
|
||||
DUMMY(mincore);
|
||||
DUMMY(fadvise64);
|
||||
DUMMY(ptrace);
|
||||
DUMMY(lookup_dcookie);
|
||||
DUMMY(epoll_create);
|
||||
@ -72,7 +71,6 @@ DUMMY(timer_gettime);
|
||||
DUMMY(timer_getoverrun);
|
||||
DUMMY(timer_delete);
|
||||
DUMMY(fstatfs64);
|
||||
DUMMY(fadvise64_64);
|
||||
DUMMY(mbind);
|
||||
DUMMY(get_mempolicy);
|
||||
DUMMY(set_mempolicy);
|
||||
|
@ -419,7 +419,8 @@
|
||||
247 AUE_NULL UNIMPL linux_io_getevents
|
||||
248 AUE_NULL UNIMPL linux_io_submit
|
||||
249 AUE_NULL UNIMPL linux_io_cancel
|
||||
250 AUE_NULL STD { int linux_fadvise64(void); }
|
||||
250 AUE_NULL STD { int linux_fadvise64(int fd, l_loff_t offset, \
|
||||
l_size_t len, int advice); }
|
||||
251 AUE_NULL UNIMPL
|
||||
252 AUE_EXIT STD { int linux_exit_group(int error_code); }
|
||||
253 AUE_NULL STD { int linux_lookup_dcookie(void); }
|
||||
@ -443,7 +444,9 @@
|
||||
270 AUE_NULL STD { int linux_tgkill(int tgid, int pid, int sig); }
|
||||
271 AUE_UTIMES STD { int linux_utimes(char *fname, \
|
||||
struct l_timeval *tptr); }
|
||||
272 AUE_NULL STD { int linux_fadvise64_64(void); }
|
||||
272 AUE_NULL STD { int linux_fadvise64_64(int fd, \
|
||||
l_loff_t offset, l_loff_t len, \
|
||||
int advice); }
|
||||
273 AUE_NULL UNIMPL
|
||||
274 AUE_NULL STD { int linux_mbind(void); }
|
||||
275 AUE_NULL STD { int linux_get_mempolicy(void); }
|
||||
|
@ -1530,3 +1530,48 @@ linux_lchown(struct thread *td, struct linux_lchown_args *args)
|
||||
LFREEPATH(path);
|
||||
return (error);
|
||||
}
|
||||
|
||||
static int
|
||||
convert_fadvice(int advice)
|
||||
{
|
||||
switch (advice) {
|
||||
case LINUX_POSIX_FADV_NORMAL:
|
||||
return (POSIX_FADV_NORMAL);
|
||||
case LINUX_POSIX_FADV_RANDOM:
|
||||
return (POSIX_FADV_RANDOM);
|
||||
case LINUX_POSIX_FADV_SEQUENTIAL:
|
||||
return (POSIX_FADV_SEQUENTIAL);
|
||||
case LINUX_POSIX_FADV_WILLNEED:
|
||||
return (POSIX_FADV_WILLNEED);
|
||||
case LINUX_POSIX_FADV_DONTNEED:
|
||||
return (POSIX_FADV_DONTNEED);
|
||||
case LINUX_POSIX_FADV_NOREUSE:
|
||||
return (POSIX_FADV_NOREUSE);
|
||||
default:
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
linux_fadvise64(struct thread *td, struct linux_fadvise64_args *args)
|
||||
{
|
||||
int advice;
|
||||
|
||||
advice = convert_fadvice(args->advice);
|
||||
if (advice == -1)
|
||||
return (EINVAL);
|
||||
return (kern_posix_fadvise(td, args->fd, args->offset, args->len,
|
||||
advice));
|
||||
}
|
||||
|
||||
int
|
||||
linux_fadvise64_64(struct thread *td, struct linux_fadvise64_64_args *args)
|
||||
{
|
||||
int advice;
|
||||
|
||||
advice = convert_fadvice(args->advice);
|
||||
if (advice == -1)
|
||||
return (EINVAL);
|
||||
return (kern_posix_fadvise(td, args->fd, args->offset, args->len,
|
||||
advice));
|
||||
}
|
||||
|
@ -572,6 +572,16 @@ int linux_ioctl_unregister_handler(struct linux_ioctl_handler *h);
|
||||
#define LINUX_F_WRLCK 1
|
||||
#define LINUX_F_UNLCK 2
|
||||
|
||||
/*
|
||||
* posix_fadvise advice
|
||||
*/
|
||||
#define LINUX_POSIX_FADV_NORMAL 0
|
||||
#define LINUX_POSIX_FADV_RANDOM 1
|
||||
#define LINUX_POSIX_FADV_SEQUENTIAL 2
|
||||
#define LINUX_POSIX_FADV_WILLNEED 3
|
||||
#define LINUX_POSIX_FADV_DONTNEED 4
|
||||
#define LINUX_POSIX_FADV_NOREUSE 5
|
||||
|
||||
/*
|
||||
* mount flags
|
||||
*/
|
||||
|
@ -62,14 +62,12 @@ DUMMY(setfsuid);
|
||||
DUMMY(setfsgid);
|
||||
DUMMY(pivot_root);
|
||||
DUMMY(mincore);
|
||||
DUMMY(fadvise64);
|
||||
DUMMY(lookup_dcookie);
|
||||
DUMMY(epoll_create);
|
||||
DUMMY(epoll_ctl);
|
||||
DUMMY(epoll_wait);
|
||||
DUMMY(remap_file_pages);
|
||||
DUMMY(fstatfs64);
|
||||
DUMMY(fadvise64_64);
|
||||
DUMMY(mbind);
|
||||
DUMMY(get_mempolicy);
|
||||
DUMMY(set_mempolicy);
|
||||
|
@ -421,7 +421,8 @@
|
||||
247 AUE_NULL UNIMPL linux_io_getevents
|
||||
248 AUE_NULL UNIMPL linux_io_submit
|
||||
249 AUE_NULL UNIMPL linux_io_cancel
|
||||
250 AUE_NULL STD { int linux_fadvise64(void); }
|
||||
250 AUE_NULL STD { int linux_fadvise64(int fd, l_loff_t offset, \
|
||||
l_size_t len, int advice); }
|
||||
251 AUE_NULL UNIMPL
|
||||
252 AUE_EXIT STD { int linux_exit_group(int error_code); }
|
||||
253 AUE_NULL STD { int linux_lookup_dcookie(void); }
|
||||
@ -447,7 +448,9 @@
|
||||
270 AUE_NULL STD { int linux_tgkill(int tgid, int pid, int sig); }
|
||||
271 AUE_UTIMES STD { int linux_utimes(char *fname, \
|
||||
struct l_timeval *tptr); }
|
||||
272 AUE_NULL STD { int linux_fadvise64_64(void); }
|
||||
272 AUE_NULL STD { int linux_fadvise64_64(int fd, \
|
||||
l_loff_t offset, l_loff_t len, \
|
||||
int advice); }
|
||||
273 AUE_NULL UNIMPL
|
||||
274 AUE_NULL STD { int linux_mbind(void); }
|
||||
275 AUE_NULL STD { int linux_get_mempolicy(void); }
|
||||
|
Loading…
x
Reference in New Issue
Block a user