//! Virtual filesystem interfaces and driver implementation

extern crate alloc;

pub mod pty;

pub(crate) mod file;
pub(crate) mod filesystem;
pub(crate) mod ioctx;
pub(crate) mod node;
pub(crate) mod path;
pub(crate) mod pid;
pub(crate) mod poll;
pub(crate) mod shared_memory;
pub(crate) mod socket;
pub(crate) mod terminal;
pub(crate) mod timer;
pub(crate) mod traits;

pub use file::{DirectoryOpenPosition, File, FileRef, FileSet, InstanceData};
pub use filesystem::{
    parse_mount_options, register_root, roots as filesystem_roots, Filesystem,
    FilesystemMountOption,
};
pub use ioctx::{Action, IoContext};
pub use node::{
    impls, AccessToken, CommonImpl, CreateFileType, CreateInfo, DirectoryImpl, Metadata, Node,
    NodeFlags, NodeRef, RegularImpl, SymlinkImpl,
};
pub use path::{Filename, OwnedFilename};
pub use poll::FdPoll;
pub use pty::{PseudoTerminalMaster, PseudoTerminalSlave};
pub use shared_memory::SharedMemory;
pub use socket::{Socket, SocketWrapper};
pub use terminal::{Terminal, TerminalInput, TerminalOutput};
pub use timer::TimerFile;
pub use traits::{FileReadiness, Read, Seek, Write};
