summaryrefslogtreecommitdiffstats
path: root/private/posix/filereqs.psx
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/posix/filereqs.psx104
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