diff options
Diffstat (limited to '')
-rw-r--r-- | private/posix/filereqs.psx | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/private/posix/filereqs.psx b/private/posix/filereqs.psx new file mode 100644 index 000000000..1f827c7f7 --- /dev/null +++ b/private/posix/filereqs.psx @@ -0,0 +1,104 @@ +Gary, + +Here's some excerpts from the standard and the specifics for each relevant +POSIX function. I put astericks next to statements that are of importance +for the implementation. The situation is better than I had thought due to +the possibility of delaying file times updates. + +----------------------------------------------------- + +POSIX Requirements for File Times Updates + +Each file has 3 time values that are updated when + +1. atime - file data has been accessed (i.e. read) +2. mtime - file data has been modified (i.e. write) +3. ctime - file status has been changed (i.e. chmod) + +For each of the functions listed below, the appropriate time-related +fields are noted as "marked for update". + +**** An implementation may update fields that are marked for update +immediately, or may update such fields periodically.**** + +When the fields are updated, they are set to the current time and the +update marks are cleared. All files that are marked for update shall +be updated when the file is no longer open by any process, +or when a stat or fstat (NtQueryInformationFile) is done. Other times +at which updates are done are unspecified. + +**** Updates are not done for files on read-only file systems. **** + +By function: + +DONE + +readdir - + atime of DIRECTORY updated each time is actually read. + NtQueryDirectoryFile for FileNamesInformation + +open - + If O_CREAT and file didn't previously exist, update atime, ctime, + and mtime of FILE and PARENT DIRECTORY. + + NtCreateFile - + DesiredAccess=SYNCHRONIZE|READ_CONTROL|FILE_READ_ATTRIBUTES|FILE_READ_EA + or'ed with FILE_READ_DATA, FILE_WRITE_DATA, or both, or + FILE_APPEND_DATA. + ShareAccess = FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE + FileAttributes = FILE_ATTRIBUTE_NORMAL. + + If O_TRUNC and file did exist, update ctime and mtime of FILE. + + NtOpenFile with access same as above. + +creat - Same as open with O_CREAT and O_TRUNC. + +mkdir - Update atime, ctime, and mtime of DIRECTORY; update ctime and + mtime of PARENT DIRECTORY. + + NtCreateFile - + DesiredAccess = 0L; ShareAccess = 0L. + FileAttributes = FILE_ATTRIBUTE_NORMAL. + +mkfifo - Update atime, ctime, mtime of FILE. Update ctime, mtime of PARENT + DIRECTORY. + + NtCreateFile - + DesiredAccess = FILE_READ_DATA; ShareAccess = 0L. + FileAttributes = FILE_ATTRIBUTE_SYSTEM. + +pipe - atime, ctime, and mtime of pipe + Done in psx subsystem now - may take explicit setting of times. + +------------------------------------- +TO BE DONE (should be complete before December 15 - I will update at that time) + +link - Update ctime of FILE, ctime and mtime of PARENT DIRECTORY containing + new entry. + NtSetInformationFile + +unlink - Update ctime of FILE unless link count goes to 0, ctime and mtime + of PARENT DIRECTORY. + NtSetInformationFile + +rmdir - ctime and mtime of PARENT DIRECTORY. + NtSetInformationFile + +rename - Update ctime and mtime of PARENT DIRECTORY of each file. + NtSetInformationFile + +chmod - ctime of FILE. + NtSetInformationFile + +chown - ctime of FILE. + NtSetInformationFile + +utime - ctime of FILE + NtSetInformationFile + +read - atime of FILE + NtReadFile + +write - ctime and mtime of FILE. + NtWriteFile |