summaryrefslogtreecommitdiff
path: root/Kernel
diff options
context:
space:
mode:
authorGunnar Beutner <gunnar@beutner.name>2021-04-17 09:35:46 +0200
committerAndreas Kling <kling@serenityos.org>2021-04-17 11:12:42 +0200
commitc33592d28cac46a4193c1d727f6b3a34aebea978 (patch)
treeff713e179c7d14ea769629174d94e5817a3a18a8 /Kernel
parente6b396c24832daf771c1b06a0daf04b898b3af13 (diff)
downloadserenity-c33592d28cac46a4193c1d727f6b3a34aebea978.zip
Kernel+LibC: Update struct stat to use struct timespec instead of time_t
Some programs unconditionally expect struct stat to have nanosecond support.
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/FileSystem/InodeMetadata.h9
-rw-r--r--Kernel/UnixTypes.h36
2 files changed, 24 insertions, 21 deletions
diff --git a/Kernel/FileSystem/InodeMetadata.h b/Kernel/FileSystem/InodeMetadata.h
index 9eead33719..18d093eb96 100644
--- a/Kernel/FileSystem/InodeMetadata.h
+++ b/Kernel/FileSystem/InodeMetadata.h
@@ -117,9 +117,12 @@ struct InodeMetadata {
buffer.st_size = size;
buffer.st_blksize = block_size;
buffer.st_blocks = block_count;
- buffer.st_atime = atime;
- buffer.st_mtime = mtime;
- buffer.st_ctime = ctime;
+ buffer.st_atim.tv_sec = atime;
+ buffer.st_atim.tv_nsec = 0;
+ buffer.st_mtim.tv_sec = mtime;
+ buffer.st_mtim.tv_nsec = 0;
+ buffer.st_ctim.tv_sec = ctime;
+ buffer.st_ctim.tv_nsec = 0;
return KSuccess;
}
diff --git a/Kernel/UnixTypes.h b/Kernel/UnixTypes.h
index 3846dbe10e..b0614e5375 100644
--- a/Kernel/UnixTypes.h
+++ b/Kernel/UnixTypes.h
@@ -451,20 +451,25 @@ struct termios {
speed_t c_ospeed;
};
+struct timespec {
+ time_t tv_sec; /* Seconds */
+ long tv_nsec; /* Nanoseconds */
+};
+
struct stat {
- dev_t st_dev; /* ID of device containing file */
- ino_t st_ino; /* inode number */
- mode_t st_mode; /* protection */
- nlink_t st_nlink; /* number of hard links */
- uid_t st_uid; /* user ID of owner */
- gid_t st_gid; /* group ID of owner */
- dev_t st_rdev; /* device ID (if special file) */
- off_t st_size; /* total size, in bytes */
- blksize_t st_blksize; /* blocksize for file system I/O */
- blkcnt_t st_blocks; /* number of 512B blocks allocated */
- time_t st_atime; /* time of last access */
- time_t st_mtime; /* time of last modification */
- time_t st_ctime; /* time of last status change */
+ dev_t st_dev; /* ID of device containing file */
+ ino_t st_ino; /* inode number */
+ mode_t st_mode; /* protection */
+ nlink_t st_nlink; /* number of hard links */
+ uid_t st_uid; /* user ID of owner */
+ gid_t st_gid; /* group ID of owner */
+ dev_t st_rdev; /* device ID (if special file) */
+ off_t st_size; /* total size, in bytes */
+ blksize_t st_blksize; /* blocksize for file system I/O */
+ blkcnt_t st_blocks; /* number of 512B blocks allocated */
+ struct timespec st_atim; /* time of last access */
+ struct timespec st_mtim; /* time of last modification */
+ struct timespec st_ctim; /* time of last status change */
};
#define POLLIN (1u << 0)
@@ -575,11 +580,6 @@ struct timeval {
suseconds_t tv_usec;
};
-struct timespec {
- time_t tv_sec;
- long tv_nsec;
-};
-
typedef enum {
P_ALL = 1,
P_PID,