xref: /qemu/rust/qemu-api/src/chardev.rs (revision 48627510a7fed7a045358743e6b869a98931f85e)
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