summaryrefslogtreecommitdiffstats
path: root/vendor/rustix/src/io/pipe.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rustix/src/io/pipe.rs')
-rw-r--r--vendor/rustix/src/io/pipe.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/vendor/rustix/src/io/pipe.rs b/vendor/rustix/src/io/pipe.rs
new file mode 100644
index 000000000..2878d10b1
--- /dev/null
+++ b/vendor/rustix/src/io/pipe.rs
@@ -0,0 +1,53 @@
+use crate::imp;
+use crate::io::{self, OwnedFd};
+
+#[cfg(not(any(target_os = "ios", target_os = "macos")))]
+pub use imp::io::types::PipeFlags;
+
+/// `PIPE_BUF`—The maximum length at which writes to a pipe are atomic.
+///
+/// # References
+/// - [Linux]
+/// - [POSIX]
+///
+/// [Linux]: https://man7.org/linux/man-pages/man7/pipe.7.html
+/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html
+#[cfg(not(any(
+ windows,
+ target_os = "illumos",
+ target_os = "redox",
+ target_os = "wasi",
+)))]
+pub const PIPE_BUF: usize = imp::io::types::PIPE_BUF;
+
+/// `pipe()`—Creates a pipe.
+///
+/// This function creates a pipe and returns two file descriptors, for the
+/// reading and writing ends of the pipe, respectively.
+///
+/// # References
+/// - [POSIX]
+/// - [Linux]
+///
+/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html
+/// [Linux]: https://man7.org/linux/man-pages/man2/pipe.2.html
+#[inline]
+pub fn pipe() -> io::Result<(OwnedFd, OwnedFd)> {
+ imp::io::syscalls::pipe()
+}
+
+/// `pipe2(flags)`—Creates a pipe, with flags.
+///
+/// This function creates a pipe and returns two file descriptors, for the
+/// reading and writing ends of the pipe, respectively.
+///
+/// # References
+/// - [Linux]
+///
+/// [Linux]: https://man7.org/linux/man-pages/man2/pipe2.2.html
+#[cfg(not(any(target_os = "ios", target_os = "macos")))]
+#[inline]
+#[doc(alias = "pipe2")]
+pub fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> {
+ imp::io::syscalls::pipe_with(flags)
+}