1a22bd55fSPaolo Bonzini // Copyright 2024 Red Hat, Inc. 2a22bd55fSPaolo Bonzini // Author(s): Paolo Bonzini <pbonzini@redhat.com> 3a22bd55fSPaolo Bonzini // SPDX-License-Identifier: GPL-2.0-or-later 4a22bd55fSPaolo Bonzini 5a22bd55fSPaolo Bonzini //! Bindings for character devices 6a22bd55fSPaolo Bonzini 7a22bd55fSPaolo Bonzini use std::ffi::CStr; 8a22bd55fSPaolo Bonzini 9*48627510SPaolo Bonzini use crate::{bindings, cell::Opaque, prelude::*}; 10a22bd55fSPaolo Bonzini 11*48627510SPaolo Bonzini /// A safe wrapper around [`bindings::Chardev`]. 12*48627510SPaolo Bonzini #[repr(transparent)] 13*48627510SPaolo Bonzini #[derive(qemu_api_macros::Wrapper)] 14*48627510SPaolo Bonzini pub struct Chardev(Opaque<bindings::Chardev>); 15*48627510SPaolo Bonzini 16a22bd55fSPaolo Bonzini pub type ChardevClass = bindings::ChardevClass; 17a22bd55fSPaolo Bonzini 18a22bd55fSPaolo Bonzini unsafe impl ObjectType for Chardev { 19a22bd55fSPaolo Bonzini type Class = ChardevClass; 20a22bd55fSPaolo Bonzini const TYPE_NAME: &'static CStr = 21a22bd55fSPaolo Bonzini unsafe { CStr::from_bytes_with_nul_unchecked(bindings::TYPE_CHARDEV) }; 22a22bd55fSPaolo Bonzini } 23a22bd55fSPaolo Bonzini qom_isa!(Chardev: Object); 24