microsoft/openvmm

Public

mirrored fromhttps://github.com/microsoft/openvmmAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
b63bb78d2e9a7c7be2206dfe18129066d60b5f7f

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

openhcl/diag_server/src/new_pty.rs

31lines · modepreview

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

// UNSAFETY: Calling openpty.
#![expect(unsafe_code)]

use std::fs::File;
use std::io;
use std::os::fd::FromRawFd;
use std::ptr::null_mut;

pub(crate) fn new_pty() -> io::Result<(File, File)> {
    // SAFETY: calling openpty as documented
    unsafe {
        let mut primary = 0;
        let mut secondary = 0;
        if libc::openpty(
            &mut primary,
            &mut secondary,
            null_mut(),
            null_mut(),
            null_mut(),
        ) < 0
        {
            return Err(io::Error::last_os_error());
        }
        let primary = File::from_raw_fd(primary);
        let secondary = File::from_raw_fd(secondary);
        Ok((primary, secondary))
    }
}