diff options
author | Thomas Schwinge <thomas@schwinge.name> | 2010-12-13 17:11:51 +0100 |
---|---|---|
committer | Thomas Schwinge <thomas@schwinge.name> | 2010-12-13 17:11:51 +0100 |
commit | 2d75167da62e3486836e5f1773e5f1ab06e43fe8 (patch) | |
tree | e44fc83e0b1419836d1b21652ad1d38b8d0af2c4 /hurd/interface/fs | |
parent | 217998d56f5b6424a685f8c87f2c0e924d1c89da (diff) | |
parent | 5c5c16e265d8ef56b71f319885f32bf144bdea23 (diff) |
Merge branch 'master' into external_pager_mechanism
Conflicts:
microkernel/mach/external_pager_mechanism.mdwn
Diffstat (limited to 'hurd/interface/fs')
32 files changed, 827 insertions, 0 deletions
diff --git a/hurd/interface/fs/00.mdwn b/hurd/interface/fs/00.mdwn new file mode 100644 index 00000000..29b93731 --- /dev/null +++ b/hurd/interface/fs/00.mdwn @@ -0,0 +1,30 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_exec"]] + + routine file_exec ( + exec_file: file_t; + RPT + exec_task: task_t; + flags: int; + argv: data_t SCP; + envp: data_t SCP; + fdarray: portarray_t SCP; + portarray: portarray_t SCP; + intarray: intarray_t SCP; + deallocnames: mach_port_name_array_t SCP; + destroynames: mach_port_name_array_t SCP); + +Overlay a task with a file. Necessary initialization, including authentication +changes associated with set[ug]id execution must be handled by the filesystem. +Filesystems normally implement this by using [[`exec_newtask`|exec_newtask]] or +[[`exec_loadtask`|exec_loadtask]] as appropriate. diff --git a/hurd/interface/fs/01.mdwn b/hurd/interface/fs/01.mdwn new file mode 100644 index 00000000..7b9c7a31 --- /dev/null +++ b/hurd/interface/fs/01.mdwn @@ -0,0 +1,20 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_chown"]] + + routine file_chown ( + chown_file: file_t; + RPT + new_owner: uid_t; + new_group: gid_t); + +Change owner and/or group. diff --git a/hurd/interface/fs/02.mdwn b/hurd/interface/fs/02.mdwn new file mode 100644 index 00000000..3158d2c6 --- /dev/null +++ b/hurd/interface/fs/02.mdwn @@ -0,0 +1,36 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_chauthor"]] + + routine file_chauthor ( + chauth_file: file_t; + RPT + new_author: uid_t); + + Whan that Aprill with hith thoureth thoote + The droghte of March hath perthed to the roote, + And bathed every veyne in thwith licour, + Of which vertu engendred is the flour; + Whan Zephiruth eek with hith thweete breeth + Inthpired hath in every holt and heeth + The tender croppeth, and the yonge thonne + Hath in the Ram his halve courth yronne, + And thmale foweleth maken melodye, + That thlepen all the nyght with open ye + (Tho Priketh hem Nature in hir corageth), + Thanne longen folk to goon on pligrimageth, + And palmereth for to theken thtraunge thtrondeth, + To ferne halweth, kowthe in thondry londeth: + And thpethially, from every thireth ende + Of Engelond to Cantebury they wende, + The hooly blithful martyr for to theke, + That hem hath holpen whan that they were theeke. diff --git a/hurd/interface/fs/03.mdwn b/hurd/interface/fs/03.mdwn new file mode 100644 index 00000000..d697ec90 --- /dev/null +++ b/hurd/interface/fs/03.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_chmod"]] + + routine file_chmod ( + chmod_file: file_t; + RPT + new_mode: mode_t); + +Change mode bits. diff --git a/hurd/interface/fs/04.mdwn b/hurd/interface/fs/04.mdwn new file mode 100644 index 00000000..d0386eab --- /dev/null +++ b/hurd/interface/fs/04.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_chflags"]] + + routine file_chflags ( + chflags_file: file_t; + RPT + new_flags: int); + +Change file flags. diff --git a/hurd/interface/fs/05.mdwn b/hurd/interface/fs/05.mdwn new file mode 100644 index 00000000..184e2ffd --- /dev/null +++ b/hurd/interface/fs/05.mdwn @@ -0,0 +1,23 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_utimes"]] + + routine file_utimes ( + utimes_file: file_t; + RPT + new_atime: time_value_t; + new_mtime: time_value_t); + +Change access and modify times. + +If the microseconds value is -1 (all bits on) then the time should be set to +the current time and the remainder of the `time_value_t` ignored. diff --git a/hurd/interface/fs/06.mdwn b/hurd/interface/fs/06.mdwn new file mode 100644 index 00000000..393f1a9b --- /dev/null +++ b/hurd/interface/fs/06.mdwn @@ -0,0 +1,21 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_set_size"]] + + routine file_set_size ( + trunc_file: file_t; + RPT + new_size: loff_t); + +Change the size of the file. If the size increases, new blocks are +zero-filled. After successful return, it is safe to reference mapped areas of +the file up to `new_size`. diff --git a/hurd/interface/fs/07.mdwn b/hurd/interface/fs/07.mdwn new file mode 100644 index 00000000..d6408763 --- /dev/null +++ b/hurd/interface/fs/07.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_lock"]] + + routine file_lock ( + lock_file: file_t; + RPT + flags: int); + +Apply/manipulate advisory lock. diff --git a/hurd/interface/fs/08.mdwn b/hurd/interface/fs/08.mdwn new file mode 100644 index 00000000..fbb3d53b --- /dev/null +++ b/hurd/interface/fs/08.mdwn @@ -0,0 +1,21 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_lock_stat"]] + + routine file_lock_stat ( + lock_file: file_t; + RPT + out mystatus: int; + out otherstatus: int); + +Return current lock status. `mystatus` tells what kind of lock the caller has; +`otherstatus` tells what kind of lock anyone has (including the caller). diff --git a/hurd/interface/fs/09.mdwn b/hurd/interface/fs/09.mdwn new file mode 100644 index 00000000..02c778c2 --- /dev/null +++ b/hurd/interface/fs/09.mdwn @@ -0,0 +1,24 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_check_access"]] + + routine file_check_access ( + file: file_t; + RPT + out allowed: int); + +Find out what kind of access this file permits the current user (regardless of +the current open modes for this port). `allowed` is a bitwise *or* of +`O_READ`, `O_WRITE`, and `O_EXEC`. This is not necessarily the same as what an +`open` or `exec` would allow; `O_EXEC` is set for *root* even if no executable +bits are on (in which case [[`file_exec`|file_exec]] should fail) and `O_WRITE` +is set a directory can be modified, even though it can't be written directly. diff --git a/hurd/interface/fs/10.mdwn b/hurd/interface/fs/10.mdwn new file mode 100644 index 00000000..56ce204f --- /dev/null +++ b/hurd/interface/fs/10.mdwn @@ -0,0 +1,20 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_notice_changes"]] + + routine file_notice_changes ( + file: file_t; + RPT + port: mach_port_send_t); + +Notice changes to file `file`. Send notification messages (see +[[`fs_notify.defs`|fs_notify]]) to `port` as they occur. diff --git a/hurd/interface/fs/11.mdwn b/hurd/interface/fs/11.mdwn new file mode 100644 index 00000000..94aa4ee0 --- /dev/null +++ b/hurd/interface/fs/11.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_getcontrol"]] + + routine file_getcontrol ( + file: file_t; + RPT + out control: mach_port_send_t); + +Return control port for this filesystem. diff --git a/hurd/interface/fs/12.mdwn b/hurd/interface/fs/12.mdwn new file mode 100644 index 00000000..b69b591b --- /dev/null +++ b/hurd/interface/fs/12.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_statfs"]] + + routine file_statfs ( + file: file_t; + RPT + out info: fsys_statfsbuf_t); + +Return filesystem status. diff --git a/hurd/interface/fs/13.mdwn b/hurd/interface/fs/13.mdwn new file mode 100644 index 00000000..2e06e0c4 --- /dev/null +++ b/hurd/interface/fs/13.mdwn @@ -0,0 +1,60 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_sync"]] + + routine file_sync ( + file: file_t; + RPT + wait: int; + omit_metadata: int); + +Sync the individual file. If `omit_metadata` is set, then it is only necessary +for the server to updated the actual contents of the file, not any associated +metadata. + +# Implementation Examples + +Servers that either don't keep any unsynchronized state (or don't have a +backing store at all) can simply `return 0`. Examples: [[translator/nfs]]. + +## [[libtrivfs]] + +Pass the call through to the underlying node. + +### [[storeio]] / [[streamio]] + +Instead of to the underlying node, pass the call through to the backend +(device). + +## [[libnetfs]] + +Invoke `netfs_attempt_sync`. + +## [[libdiskfs]] + +Invoke `diskfs_file_update`. + +# Usage Examples + +## [[glibc]] + + * `fdatasync` + + `file_syncfs (FD, true, true)` -- invoke it on the passed file descriptor, + do wait for completion, do allow omitting to update the associated + metadata. + + * `fsync` + + `file_syncfs (FD, true, false)` -- invoke it on the passed file descriptor, + do wait for completion, don't allow omitting to update the associated + metadata. diff --git a/hurd/interface/fs/14.mdwn b/hurd/interface/fs/14.mdwn new file mode 100644 index 00000000..a13c0bd8 --- /dev/null +++ b/hurd/interface/fs/14.mdwn @@ -0,0 +1,67 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_syncfs"]] + + routine file_syncfs ( + file: file_t; + RPT + wait: int; + do_children: int); + +Synchronize the entire filesystem. + +This function has a companion in [[`fsys_syncfs`|fsys_syncfs]], which is +invoked on the server's control port instead of an arbitrary node. Both of +them are usually implemented in equivalent ways. + +# Implementation Examples + +Servers that either don't keep any unsynchronized state (or don't have a +backing store at all) can simply `return 0`. Examples: [[translator/nfs]]. + +The implementation typically doesn't care on which specific node (as exported +by the implementing server) [[`file_syncfs`|file_syncfs]] is being invoked on. + +## [[libtrivfs]] + +Invoke [[`file_sync`|file_sync]] on the underlying node. Rationale: the +underlying node represents this filesystem's backend, and once this node is +synchronized, the whole [[libtrivfs]]-based filesystem is to be considered +synchronized. + +### [[storeio]] / [[streamio]] + +Instead of the to underlying node, pass the call through to the backend +(device). + +## [[libnetfs]] + +Invoke `netfs_attempt_syncfs`. + +## [[libdiskfs]] + +Invoke [[`fsys_syncfs`|fsys_syncfs]] on all active children, and invoke +`diskfs_sync_everything` and `diskfs_set_hypermetadata`. + +# Usage Examples + +## [[glibc]] + + * `sync` + + `file_syncfs ("/", false, true)` -- invoke it on the process' root directory + (`INIT_PORT_CRDIR`), don't wait for completion, do synchronize child + filesystems. + +## [[Hurd]] + + * [[`syncfs`|syncfs]] diff --git a/hurd/interface/fs/15.mdwn b/hurd/interface/fs/15.mdwn new file mode 100644 index 00000000..50dcce1b --- /dev/null +++ b/hurd/interface/fs/15.mdwn @@ -0,0 +1,23 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_get_storage_info"]] + + routine file_get_storage_info ( + file: file_t; + RPT + out ports: portarray_t, dealloc; + out ints: intarray_t, dealloc; + out offsets: off_array_t, dealloc; + out data: data_t, dealloc); + +Return information on the storage used to hold this file. See the comment for +`enum file_storage_class` in `<hurd/hurd_types.h>` the details. diff --git a/hurd/interface/fs/16.mdwn b/hurd/interface/fs/16.mdwn new file mode 100644 index 00000000..8ba776c1 --- /dev/null +++ b/hurd/interface/fs/16.mdwn @@ -0,0 +1,20 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_getlinknode"]] + + routine file_getlinknode ( + file: file_t; + RPT + out linknode: mach_port_send_t); + +Return the node for hard links to this potentially translated file. This +returns a potentially unauthenticated node. diff --git a/hurd/interface/fs/17.mdwn b/hurd/interface/fs/17.mdwn new file mode 100644 index 00000000..8895434a --- /dev/null +++ b/hurd/interface/fs/17.mdwn @@ -0,0 +1,41 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_getfh"]] + + routine file_getfh ( + file: file_t; + RPT + out filehandle: data_t, dealloc); + +Return a file handle for this file. This can be used by NFS and such. It is +not guaranteed that this call will work; if it doesn't, then this filesystem +cannot be NFS mounted. + +Currently file handles are only used by `nfsd` with the purpose of +having some stable representation of nodes (TODO: Add references). +The only translator library that implements `file_getfh` and the +complementary [[`fsys_getfile`|fsys_getfile]] is `libdiskfs`, so if +you are linking against a different library you should expect that the +filesystem exported by your translator will not be supported by `nfsd` +by default. + +If you would like your non-`libdiskfs` translator to be supported by +`nfsd`, you should implement these two RPCs on your own. The idea is +that to each node exported by your translator you should put in +correspondence a unique file handle. A file handle is a 28-byte +value. The first 4 bytes are not used. Then comes a 4-byte number +which should identify your node somehow (`libdiskfs` uses the index +into the internally maintained node cache). After it there comes a +4-byte number which should bear a similar function to the `st_gen` +field of a `stat` structure. Following this specification, you should +be able to implement `file_getfh` and `fsys_getfile` in a proper way +to get `nfsd` support. diff --git a/hurd/interface/fs/18.mdwn b/hurd/interface/fs/18.mdwn new file mode 100644 index 00000000..dbe606f3 --- /dev/null +++ b/hurd/interface/fs/18.mdwn @@ -0,0 +1,34 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="dir_lookup"]] + + routine dir_lookup ( + start_dir: file_t; + RPT + file_name: string_t; + flags: int; + mode: mode_t; + out do_retry: retry_type; + out retry_name: string_t; + out result: mach_port_send_t); + +Translate a file name, following all symlinks. Upon return, if `do_retry` is +`FS_RETRY_MAGICAL` then `retry_name` specifies what to do, the list of +possibilities is documented in `<hurd/hurd_types.h>`; if `FS_RETRY_REAUTH`, +then `result` should be reauthenticated before being used. If `retry_name` is +the empty string and the retry type is `FS_RETRY_NORMAL`, then no further +[[`dir_lookup`|dir_lookup]] calls are required; `result` is the port to use. +Otherwise the [[`dir_lookup`|dir_lookup]] call should be repeated, sent to +`result` (or the reauthenticated port) with `retry_name` passed for +`file_name`. This call is required to be supported by all files (even +non-directories) if the filename is null, and should function in that case as a +re-open of the file. diff --git a/hurd/interface/fs/19.mdwn b/hurd/interface/fs/19.mdwn new file mode 100644 index 00000000..86625d44 --- /dev/null +++ b/hurd/interface/fs/19.mdwn @@ -0,0 +1,29 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="dir_readdir"]] + + routine dir_readdir ( + dir: file_t; + RPT + out data: data_t, dealloc[]; + entry: int; + nentries: int; + bufsiz: vm_size_t; + out amount: int); + +Read entries from the directory. Each entry is identified by an index number +starting at 0 and running through the file. This call fetches `nentries` (or +any convenient number if `nentries` is -1) entries starting at `entry`, +returning an array of struct directs in `data`. The number of entries +successfully read is returned in `amount`. If `entry` is bigger than the index +of the last entry, then 0 is returned in `amount`. If `bufsize` is nonzero, +never return more than `bufsize` bytes of data regardless. diff --git a/hurd/interface/fs/20.mdwn b/hurd/interface/fs/20.mdwn new file mode 100644 index 00000000..da57f0b5 --- /dev/null +++ b/hurd/interface/fs/20.mdwn @@ -0,0 +1,20 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="dir_mkdir"]] + + routine dir_mkdir ( + directory: file_t; + RPT + name: string_t; + mode: mode_t); + +Create directory. diff --git a/hurd/interface/fs/21.mdwn b/hurd/interface/fs/21.mdwn new file mode 100644 index 00000000..c562333a --- /dev/null +++ b/hurd/interface/fs/21.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="dir_rmdir"]] + + routine dir_rmdir ( + directory: file_t; + RPT + name: string_t); + +Remove directory. diff --git a/hurd/interface/fs/22.mdwn b/hurd/interface/fs/22.mdwn new file mode 100644 index 00000000..24fcdd9e --- /dev/null +++ b/hurd/interface/fs/22.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="dir_unlink"]] + + routine dir_unlink ( + directory: file_t; + RPT + name: string_t); + +Remove non-directory. diff --git a/hurd/interface/fs/23.mdwn b/hurd/interface/fs/23.mdwn new file mode 100644 index 00000000..44621d37 --- /dev/null +++ b/hurd/interface/fs/23.mdwn @@ -0,0 +1,27 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="dir_link"]] + + routine dir_link ( + dir: file_t; + RPT + file: file_t; + name: string_t; + excl: int); + +Create a hard link. + +If `dir` and `file` are not implemented by the same filesystem, `EXDEV` should +be returned. If the two filesystems, however can inter-operate and guarantee +the appropriate POSIX semantics, they can communicate by a private protocol and +allow hard links between them. If `excl` is set, then fail if `name` already +exists in `dir`. diff --git a/hurd/interface/fs/24.mdwn b/hurd/interface/fs/24.mdwn new file mode 100644 index 00000000..aac2df60 --- /dev/null +++ b/hurd/interface/fs/24.mdwn @@ -0,0 +1,24 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="dir_rename"]] + + routine dir_rename ( + olddirectory: file_t; + RPT + oldname: string_t; + newdirectory: file_t; + newname: string_t; + excl: int); + +Rename file -- comments similar to those for [[`dir_link`|dir_link]] apply here +about `EXDEV`. If `excl` is set, then fail if `newname` already exists in +`newdirectory`. diff --git a/hurd/interface/fs/25.mdwn b/hurd/interface/fs/25.mdwn new file mode 100644 index 00000000..9b08d54f --- /dev/null +++ b/hurd/interface/fs/25.mdwn @@ -0,0 +1,25 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="dir_mkfile"]] + + routine dir_mkfile ( + directory: file_t; + RPT + flags: int; + mode: mode_t; + out newnode: mach_port_send_t); + +Create a new file without linking it into the filesystem. You still must have +write permission on the specified directory, even though it will not actually +be written. Return in `newnode` a port to the file. `flags` are the same as +for [[`dir_lookup`|dir_lookup]], but `O_CREAT` and `O_TRUNC` are assumed even +if not specified. diff --git a/hurd/interface/fs/26.mdwn b/hurd/interface/fs/26.mdwn new file mode 100644 index 00000000..82a7bca1 --- /dev/null +++ b/hurd/interface/fs/26.mdwn @@ -0,0 +1,20 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="dir_notice_changes"]] + + routine dir_notice_changes ( + directory: file_t; + RPT + port: mach_port_send_t); + +Notice changes to directory `dir`. Send directory change notifications (see +[[`fs_notify.defs`|fs_notify]]) to `port` as they occur. diff --git a/hurd/interface/fs/27.mdwn b/hurd/interface/fs/27.mdwn new file mode 100644 index 00000000..9a7bd13f --- /dev/null +++ b/hurd/interface/fs/27.mdwn @@ -0,0 +1,29 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_set_translator"]] + + routine file_set_translator ( + file: file_t; + RPT + passive_flags: int; + active_flags: int; + oldtrans_flags: int; + passive: data_t SCP; + active: mach_port_send_t); + +Set a translator for future lookups to a file. + +`passive` is the passive translator; `active` is the active translator. + +The `flags` are `FS_TRANS_*`, defined in `<hurd/hurd_types.h>`. `oldflags` are +sent in an [[`fsys_goaway`|fsys_goaway]] to an existing active translator if +there is one and it is to be killed. diff --git a/hurd/interface/fs/28.mdwn b/hurd/interface/fs/28.mdwn new file mode 100644 index 00000000..13ac4b7a --- /dev/null +++ b/hurd/interface/fs/28.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_get_translator"]] + + routine file_get_translator ( + file: file_t; + RPT + out translator: data_t, dealloc); + +Return the stored permanent translator for this file. diff --git a/hurd/interface/fs/29.mdwn b/hurd/interface/fs/29.mdwn new file mode 100644 index 00000000..1cc3950a --- /dev/null +++ b/hurd/interface/fs/29.mdwn @@ -0,0 +1,20 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_get_translator_cntl"]] + + routine file_get_translator_cntl ( + file: file_t; + RPT + out translator_cntl: mach_port_send_t); + +Return the translator control port to the active translator (if any) for this +file. diff --git a/hurd/interface/fs/30.mdwn b/hurd/interface/fs/30.mdwn new file mode 100644 index 00000000..653af42f --- /dev/null +++ b/hurd/interface/fs/30.mdwn @@ -0,0 +1,20 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_get_fs_options"]] + + routine file_get_fs_options ( + file: file_t; + RPT + out options: data_t, dealloc); + +Return the options describing the way the receiving filesystem is running. +(Suitable as an arg for [[`fsys_set_options`|fsys_set_options]]). diff --git a/hurd/interface/fs/31.mdwn b/hurd/interface/fs/31.mdwn new file mode 100644 index 00000000..32e7efda --- /dev/null +++ b/hurd/interface/fs/31.mdwn @@ -0,0 +1,21 @@ +[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="file_reparent"]] + + routine file_reparent ( + file: file_t; + RPT + parent: mach_port_t; + out new_file: mach_port_send_t); + +Return a new file, `new_file`, with the same semantics as `file`, but with +lookups of `..` (if `file` is a directory) redirected to `parent`. |