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;