diff options
author | Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com> | 2024-10-03 11:09:37 +0300 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2024-10-22 12:21:45 +0000 |
commit | d9b03f2d9b945805f56dfe3eb526264c68747d6f (patch) | |
tree | 6fcf0d51d76cdcdd602b8bc2c51d1a7441319d1e /meta-egvirt/recipes-extended/vhost-device-console/vhost-device-console-0.1.0/src/virtio_console.rs | |
parent | 7dd141f96eb0d7992365e74d34cba80ea5bde3a4 (diff) |
Update vhost-device-console
Bug-AGL: SPEC-4966
Change-Id: I41cbe30549ebe923f8e3000ece072aa66c5e90a9
Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>
Diffstat (limited to 'meta-egvirt/recipes-extended/vhost-device-console/vhost-device-console-0.1.0/src/virtio_console.rs')
-rwxr-xr-x | meta-egvirt/recipes-extended/vhost-device-console/vhost-device-console-0.1.0/src/virtio_console.rs | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-egvirt/recipes-extended/vhost-device-console/vhost-device-console-0.1.0/src/virtio_console.rs b/meta-egvirt/recipes-extended/vhost-device-console/vhost-device-console-0.1.0/src/virtio_console.rs new file mode 100755 index 00000000..323473f6 --- /dev/null +++ b/meta-egvirt/recipes-extended/vhost-device-console/vhost-device-console-0.1.0/src/virtio_console.rs @@ -0,0 +1,60 @@ +// Console virtio bindings +// +// Copyright 2023-2024 VIRTUAL OPEN SYSTEMS SAS. All Rights Reserved. +// Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com> +// +// SPDX-License-Identifier: Apache-2.0 or BSD-3-Clause + +use vm_memory::{ByteValued, Le16, Le32}; + +/// Feature bit numbers +#[allow(dead_code)] +pub const VIRTIO_CONSOLE_F_SIZE: u16 = 0; +pub const VIRTIO_CONSOLE_F_MULTIPORT: u16 = 1; +#[allow(dead_code)] +pub const VIRTIO_CONSOLE_F_EMERG_WRITE: u16 = 2; + +/// Console virtio control messages +pub const VIRTIO_CONSOLE_DEVICE_READY: u16 = 0; +pub const VIRTIO_CONSOLE_PORT_ADD: u16 = 1; +#[allow(dead_code)] +pub const VIRTIO_CONSOLE_PORT_REMOVE: u16 = 2; +pub const VIRTIO_CONSOLE_PORT_READY: u16 = 3; +pub const VIRTIO_CONSOLE_CONSOLE_PORT: u16 = 4; +#[allow(dead_code)] +pub const VIRTIO_CONSOLE_RESIZE: u16 = 5; +pub const VIRTIO_CONSOLE_PORT_OPEN: u16 = 6; +pub const VIRTIO_CONSOLE_PORT_NAME: u16 = 7; + +/// Virtio Console Config +#[derive(Copy, Clone, Debug, Default, PartialEq)] +#[repr(C)] +pub(crate) struct VirtioConsoleConfig { + pub cols: Le16, + pub rows: Le16, + pub max_nr_ports: Le32, + pub emerg_wr: Le32, +} + +// SAFETY: The layout of the structure is fixed and can be initialized by +// reading its content from byte array. +unsafe impl ByteValued for VirtioConsoleConfig {} + +#[derive(Copy, Clone, Debug, Default, PartialEq)] +#[repr(C)] +pub(crate) struct VirtioConsoleControl { + pub id: Le32, + pub event: Le16, + pub value: Le16, +} + +impl VirtioConsoleControl { + pub fn to_le_bytes(self) -> Vec<u8> { + let mut buffer = Vec::new(); + + buffer.extend_from_slice(&self.id.to_native().to_le_bytes()); + buffer.extend_from_slice(&self.event.to_native().to_le_bytes()); + buffer.extend_from_slice(&self.value.to_native().to_le_bytes()); + buffer + } +} |