diff options
author | Gunnar Beutner <gunnar@beutner.name> | 2021-04-17 09:35:46 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-04-17 11:12:42 +0200 |
commit | c33592d28cac46a4193c1d727f6b3a34aebea978 (patch) | |
tree | ff713e179c7d14ea769629174d94e5817a3a18a8 /Kernel | |
parent | e6b396c24832daf771c1b06a0daf04b898b3af13 (diff) | |
download | serenity-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.h | 9 | ||||
-rw-r--r-- | Kernel/UnixTypes.h | 36 |
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, |