Module shadow_rs::host::descriptor
source · Expand description
Linux file descriptors and file descriptions (equivalent to Linux struct file
s).
Modules§
- Types for emitting and subscribing to
File
events. - A buffer for files that need to share a buffer with other files. Example use-cases are pipes and unix sockets. This buffer supports notifying files when readers or writers are added or removed.
Structs§
- Represents a counted reference to a legacy file object. Will decrement the legacy file’s ref count when dropped.
- A file descriptor that reference an open file. Also contains flags that change the behaviour of this file descriptor.
- These are flags that should generally not change (analagous to the Linux
filp->f_mode
). Since the plugin will never see these values and they’re not exposed by the kernel, we don’t match the kernelFMODE_
values here. - File-related signals that listeners can watch for.
- Flags representing the state of a file. Listeners can subscribe to state changes using
FileRefMut::add_listener
(or similar methods onSocketRefMut
,Pipe
, etc). - These are flags that can potentially be changed from the plugin (analagous to the Linux
filp->f_flags
status flags). Not allO_
flags are valid here. For example file access mode flags (ex:O_RDWR
) are stored elsewhere, and file creation flags (ex:O_CREAT
) are not stored anywhere. Many of these can be represented in different ways, for example:O_NONBLOCK
,SOCK_NONBLOCK
,EFD_NONBLOCK
,GRND_NONBLOCK
, etc, and not all have the same value. - Used to track how many descriptors are open for a
LegacyFile
. When theclose()
method is called, the legacy file’slegacyfile_close()
will only be called if this is the last descriptor for that legacy file. This is similar to anOpenFile
object, but for C files. - Represents a POSIX file description, or a Linux
struct file
. AnOpenFile
wraps a reference to aFile
. Once there are no moreOpenFile
objects for a givenFile
, theFile
will be closed. Typically this means that holding anOpenFile
will ensure that the file remains open (the file’s status will not becomeFileState::CLOSED
), but the underlying file may close itself in extenuating circumstances (for example if the file has an internal error).
Enums§
- A compatibility wrapper around an
OpenFile
orLegacyFileCounter
. - A wrapper for any type of file object.