From 98138634aafb9c5fdd246ef243f7f5ca9485c8a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 25 Nov 2002 23:51:03 +0000 Subject: [PATCH] Added the private ioctl calls to get the 64-bit create and modified time. Most probably these are used by the kernel to identify changes in a shared library or something like this. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2088 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/fsproto.h | 5 ++++- .../file_systems/bfs/kernel_interface.cpp | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/file_systems/bfs/fsproto.h b/src/add-ons/kernel/file_systems/bfs/fsproto.h index 9daf6ff0c5..f86df8abd8 100644 --- a/src/add-ons/kernel/file_systems/bfs/fsproto.h +++ b/src/add-ons/kernel/file_systems/bfs/fsproto.h @@ -56,6 +56,9 @@ typedef ino_t vnode_id; // missing ioctl() call added #define IOCTL_FILE_UNCACHED_IO 10000 +#define IOCTL_CREATE_TIME 10002 +#define IOCTL_MODIFIED_TIME 10003 + // B_CUR_FS_API_VERSION is 2 for R5, but 3 on Dano, because of the // added calls for power management - so it's set to 3 here because @@ -258,4 +261,4 @@ extern _IMPEXP_KERNEL int is_vnode_removed(nspace_id nsid, vnode_id vnid); extern _EXPORT vnode_ops fs_entry; extern _EXPORT int32 api_version; -#endif +#endif /* _FSPROTO_H */ diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp index 388040a1e6..8a30d59de6 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -584,6 +584,24 @@ bfs_ioctl(void *_ns, void *_node, void *_cookie, int cmd, void *buffer, size_t b inode->Node()->flags |= INODE_NO_CACHE; return status; } + case IOCTL_CREATE_TIME: + { + if (inode == NULL || buffer == NULL) + return B_BAD_VALUE; + + off_t *creationTime = (off_t *)buffer; + *creationTime = inode->Node()->create_time; + return B_OK; + } + case IOCTL_MODIFIED_TIME: + { + if (inode == NULL || buffer == NULL) + return B_BAD_VALUE; + + off_t *modifiedTime = (off_t *)buffer; + *modifiedTime = inode->LastModified(); + return B_OK; + } case BFS_IOCTL_VERSION: { uint32 *version = (uint32 *)buffer;