summaryrefslogtreecommitdiffstats
path: root/sys/sys
diff options
context:
space:
mode:
authordchagin <dchagin@FreeBSD.org>2016-01-09 14:20:23 +0000
committerdchagin <dchagin@FreeBSD.org>2016-01-09 14:20:23 +0000
commit6aeea6cc62b1965e212c6447174c00e99ad17755 (patch)
tree1b0c98fbcfeb023d7def8d88bfc4c3907ed1f701 /sys/sys
parent939deb433656eadcd7e74873a32a38411367cdc8 (diff)
downloadFreeBSD-src-6aeea6cc62b1965e212c6447174c00e99ad17755.zip
FreeBSD-src-6aeea6cc62b1965e212c6447174c00e99ad17755.tar.gz
MFC r277610 (by jillies):
Add futimens and utimensat system calls.
Diffstat (limited to 'sys/sys')
-rw-r--r--sys/sys/capsicum.h4
-rw-r--r--sys/sys/stat.h8
-rw-r--r--sys/sys/syscallsubr.h5
3 files changed, 15 insertions, 2 deletions
diff --git a/sys/sys/capsicum.h b/sys/sys/capsicum.h
index 6ccb424..54b1c33 100644
--- a/sys/sys/capsicum.h
+++ b/sys/sys/capsicum.h
@@ -146,9 +146,9 @@
#define CAP_FSTATAT (CAP_FSTAT | CAP_LOOKUP)
/* Allows for fstatfs(2). */
#define CAP_FSTATFS CAPRIGHT(0, 0x0000000000100000ULL)
-/* Allows for futimes(2). */
+/* Allows for futimens(2) and futimes(2). */
#define CAP_FUTIMES CAPRIGHT(0, 0x0000000000200000ULL)
-/* Allows for futimes(2) and futimesat(2). */
+/* Allows for futimens(2), futimes(2), futimesat(2) and utimensat(2). */
#define CAP_FUTIMESAT (CAP_FUTIMES | CAP_LOOKUP)
/* Allows for linkat(2) and renameat(2) (destination directory descriptor). */
#define CAP_LINKAT (CAP_LOOKUP | 0x0000000000400000ULL)
diff --git a/sys/sys/stat.h b/sys/sys/stat.h
index 0f3284f..e6ff5a6 100644
--- a/sys/sys/stat.h
+++ b/sys/sys/stat.h
@@ -307,6 +307,11 @@ struct nstat {
#endif /* __BSD_VISIBLE */
+#if __POSIX_VISIBLE >= 200809
+#define UTIME_NOW -1
+#define UTIME_OMIT -2
+#endif
+
#ifndef _KERNEL
__BEGIN_DECLS
#if __BSD_VISIBLE
@@ -322,6 +327,9 @@ int fchmod(int, mode_t);
#endif
#if __POSIX_VISIBLE >= 200809
int fchmodat(int, const char *, mode_t, int);
+int futimens(int fd, const struct timespec times[2]);
+int utimensat(int fd, const char *path, const struct timespec times[2],
+ int flag);
#endif
int fstat(int, struct stat *);
#if __BSD_VISIBLE
diff --git a/sys/sys/syscallsubr.h b/sys/sys/syscallsubr.h
index f59bbb9..397a21a 100644
--- a/sys/sys/syscallsubr.h
+++ b/sys/sys/syscallsubr.h
@@ -106,6 +106,8 @@ int kern_fstatfs(struct thread *td, int fd, struct statfs *buf);
int kern_ftruncate(struct thread *td, int fd, off_t length);
int kern_futimes(struct thread *td, int fd, struct timeval *tptr,
enum uio_seg tptrseg);
+int kern_futimens(struct thread *td, int fd, struct timespec *tptr,
+ enum uio_seg tptrseg);
int kern_getdirentries(struct thread *td, int fd, char *buf, u_int count,
long *basep, ssize_t *residp, enum uio_seg bufseg);
int kern_getfsstat(struct thread *td, struct statfs **buf, size_t bufsize,
@@ -255,6 +257,9 @@ int kern_utimes(struct thread *td, char *path, enum uio_seg pathseg,
struct timeval *tptr, enum uio_seg tptrseg);
int kern_utimesat(struct thread *td, int fd, char *path,
enum uio_seg pathseg, struct timeval *tptr, enum uio_seg tptrseg);
+int kern_utimensat(struct thread *td, int fd, char *path,
+ enum uio_seg pathseg, struct timespec *tptr, enum uio_seg tptrseg,
+ int follow);
int kern_wait(struct thread *td, pid_t pid, int *status, int options,
struct rusage *rup);
int kern_wait6(struct thread *td, enum idtype idtype, id_t id, int *status,
OpenPOWER on IntegriCloud