SYMBOL INDEX (6267 symbols across 259 files) FILE: bin/dropshot-apis/src/main.rs function environment (line 14) | pub fn environment() -> anyhow::Result { function all_apis (line 35) | pub fn all_apis() -> anyhow::Result { function main (line 59) | fn main() -> anyhow::Result { function test_apis_up_to_date (line 77) | fn test_apis_up_to_date() -> anyhow::Result { FILE: bin/mock-server/src/lib/api_types.rs type Error (line 22) | type Error = String; function try_from (line 23) | fn try_from(value: types::PciPath) -> Result { type InstanceSerialParams (line 32) | pub struct InstanceSerialParams { type InstanceSerialHistoryParams (line 43) | pub struct InstanceSerialHistoryParams { type MockMode (line 61) | pub enum MockMode { FILE: bin/mock-server/src/lib/lib.rs type Error (line 28) | pub enum Error { type InstanceContext (line 41) | pub struct InstanceContext { method new (line 64) | pub fn new(properties: api::InstanceProperties, _log: &Logger) -> Self { method set_target_state (line 101) | pub async fn set_target_state( method current_state (line 170) | fn current_state(&self) -> api::InstanceState { method queue_states (line 177) | async fn queue_states( type MockState (line 52) | struct MockState { type Context (line 209) | pub struct Context { method new (line 215) | pub fn new(log: Logger) -> Self { function instance_ensure (line 224) | async fn instance_ensure( function instance_get (line 252) | async fn instance_get( function instance_state_monitor (line 272) | async fn instance_state_monitor( function instance_state_put (line 345) | async fn instance_state_put( function instance_serial (line 371) | async fn instance_serial( function instance_serial_history_get (line 427) | async fn instance_serial_history_get( function mock_mode_get (line 471) | async fn mock_mode_get( function mock_mode_set (line 492) | async fn mock_mode_set( function mock_step (line 528) | async fn mock_step( type WsConn (line 571) | type WsConn = WebSocketStream; constant DEFAULT_MAX_LEN (line 573) | const DEFAULT_MAX_LEN: usize = 1024; type HistoryQuery (line 575) | pub(crate) enum HistoryQuery { method from_query (line 580) | pub(crate) const fn from_query( type SerialTask (line 597) | pub(crate) struct SerialTask { method spawn (line 603) | pub fn spawn() -> Self { method serial_task_work (line 623) | async fn serial_task_work( method new_conn (line 709) | pub async fn new_conn(&self, ws: WsConn) { method shutdown (line 720) | pub async fn shutdown(&self) { type Serial (line 728) | pub(crate) struct Serial { method new (line 732) | pub(super) fn new(name: &str) -> Arc { method mock_data (line 737) | fn mock_data(name: &str) -> Vec { method history_vec (line 788) | pub async fn history_vec( function api (line 824) | pub fn api() -> ApiDescription> { type Config (line 843) | pub type Config = dropshot::ConfigDropshot; type Server (line 845) | pub type Server = dropshot::HttpServer>; type ServerStartError (line 848) | pub type ServerStartError = Box; function start (line 851) | pub fn start(config: Config, log: Logger) -> Result slog::Logger { function run_openapi (line 69) | pub fn run_openapi() -> Result<(), String> { function run_server (line 81) | async fn run_server( function main (line 104) | async fn main() -> anyhow::Result<()> { FILE: bin/propolis-cli/src/main.rs type Opt (line 50) | struct Opt { type Command (line 71) | enum Command { type VmConfig (line 171) | struct VmConfig { method instance_spec (line 290) | fn instance_spec(&self) -> anyhow::Result { function add_component_to_spec (line 207) | fn add_component_to_spec( type DiskRequest (line 228) | struct DiskRequest { method parse (line 245) | fn parse(&self) -> anyhow::Result { type ParsedDiskRequest (line 237) | struct ParsedDiskRequest { function parse_state (line 447) | fn parse_state(state: &str) -> anyhow::Result { function parse_json_file (line 458) | fn parse_json_file( function resolve_host (line 467) | fn resolve_host(server: &str) -> anyhow::Result { function create_logger (line 476) | fn create_logger(opt: &Opt) -> Logger { type ProjectKind (line 488) | enum ProjectKind {} method tag (line 491) | fn tag() -> TypedUuidTag { type SiloKind (line 497) | enum SiloKind {} method tag (line 500) | fn tag() -> TypedUuidTag { type SledKind (line 506) | enum SledKind {} method tag (line 509) | fn tag() -> TypedUuidTag { function new_instance (line 516) | async fn new_instance( function replace_vcr (line 546) | async fn replace_vcr( function get_instance (line 563) | async fn get_instance(client: &Client) -> anyhow::Result<()> { function put_instance (line 575) | async fn put_instance( function stdin_to_websockets_task (line 589) | async fn stdin_to_websockets_task( function serial (line 650) | async fn serial( function serial_connect (line 745) | async fn serial_connect( function migrate_instance (line 759) | async fn migrate_instance( function monitor (line 878) | async fn monitor(addr: SocketAddr) -> anyhow::Result<()> { function inject_nmi (line 911) | async fn inject_nmi(client: &Client) -> anyhow::Result<()> { function main (line 921) | async fn main() -> anyhow::Result<()> { type RawTermiosGuard (line 992) | struct RawTermiosGuard(libc::c_int, libc::termios); method stdio_guard (line 995) | fn stdio_guard() -> Result { method drop (line 1018) | fn drop(&mut self) { function test_stdin_to_websockets_task (line 1031) | async fn test_stdin_to_websockets_task() { FILE: bin/propolis-server/src/lib/config.rs function reservoir_decide (line 8) | pub fn reservoir_decide(log: &slog::Logger) -> bool { function reservoir_decide (line 41) | pub fn reservoir_decide(_log: &slog::Logger) -> bool { FILE: bin/propolis-server/src/lib/initializer.rs constant MAX_FILE_WORKERS (line 62) | const MAX_FILE_WORKERS: usize = 32; constant DEFAULT_WORKER_COUNT (line 63) | const DEFAULT_WORKER_COUNT: usize = 8; type MachineInitError (line 67) | pub enum MachineInitError { constant MAX_ROM_SIZE (line 125) | const MAX_ROM_SIZE: usize = 0x20_0000; function get_spec_guest_ram_limits (line 127) | fn get_spec_guest_ram_limits(spec: &Spec) -> (usize, usize) { function build_instance (line 134) | pub fn build_instance( type RegisteredChipset (line 177) | pub struct RegisteredChipset { method pci_attach (line 182) | pub fn pci_attach(&self, bdf: pci::Bdf, dev: Arc) { method irq_pin (line 185) | pub fn irq_pin(&self, irq: u8) -> Option> { method reset_pin (line 188) | fn reset_pin(&self) -> Arc { type StorageBackendInstance (line 193) | struct StorageBackendInstance { type MachineInitializerState (line 199) | pub struct MachineInitializerState { type MachineInitializer (line 203) | pub struct MachineInitializer<'a> { function initialize_rom (line 218) | pub fn initialize_rom( function initialize_rtc (line 269) | pub fn initialize_rtc( function initialize_hpet (line 288) | pub fn initialize_hpet(&mut self) { function initialize_chipset (line 294) | pub fn initialize_chipset( function initialize_uart (line 399) | pub fn initialize_uart( function initialize_ps2 (line 431) | pub fn initialize_ps2( function initialize_qemu_debug_port (line 451) | pub fn initialize_qemu_debug_port( function initialize_qemu_pvpanic (line 465) | pub fn initialize_qemu_pvpanic( function initialize_vsock (line 492) | pub async fn initialize_vsock( function create_storage_backend_from_spec (line 543) | async fn create_storage_backend_from_spec( function prepare_rot_initializer (line 699) | pub fn prepare_rot_initializer( function initialize_storage_devices (line 795) | pub async fn initialize_storage_devices( function initialize_network_devices (line 962) | pub async fn initialize_network_devices( function initialize_test_devices (line 1037) | pub fn initialize_test_devices(&mut self) { function initialize_softnpu_ports (line 1064) | pub fn initialize_softnpu_ports( function initialize_9pfs (line 1151) | pub fn initialize_9pfs(&mut self, chipset: &RegisteredChipset) { function generate_smbios (line 1171) | fn generate_smbios( function generate_e820 (line 1339) | fn generate_e820(&self) -> Result { function generate_bootorder (line 1361) | fn generate_bootorder(&self) -> Result, MachineInitError> { function initialize_fwcfg (line 1424) | pub fn initialize_fwcfg( function initialize_cpus (line 1486) | pub async fn initialize_cpus(&mut self) -> Result<(), MachineInitError> { function register_guest_hv_interface (line 1550) | pub fn register_guest_hv_interface( FILE: bin/propolis-server/src/lib/migrate/codec.rs type ProtocolError (line 33) | pub enum ProtocolError { method from (line 67) | fn from(value: ron::de::SpannedError) -> Self { type Message (line 80) | pub(crate) enum Message { type Error (line 135) | type Error = ProtocolError; method try_into (line 136) | fn try_into(self) -> Result { type MessageType (line 100) | enum MessageType { method from (line 117) | fn from(m: &Message) -> MessageType { function get_start_end (line 168) | fn get_start_end( type Error (line 181) | type Error = ProtocolError; function try_into (line 182) | fn try_into(self) -> Result { function encode (line 267) | fn encode(m: Message) -> Vec { function encode_okay (line 276) | fn encode_okay() { function encode_error (line 282) | fn encode_error() { function encode_serialized (line 290) | fn encode_serialized() { function encode_empty_blob (line 298) | fn encode_empty_blob() { function encode_blob (line 305) | fn encode_blob() { function encode_page (line 312) | fn encode_page() { function encode_mem_query (line 320) | fn encode_mem_query() { function encode_mem_offer (line 328) | fn encode_mem_offer() { function encode_mem_end (line 337) | fn encode_mem_end() { function encode_mem_fetch (line 345) | fn encode_mem_fetch() { function encode_mem_xfer (line 354) | fn encode_mem_xfer() { function encode_mem_done (line 363) | fn encode_mem_done() { function get_start_end_ok (line 374) | fn get_start_end_ok() { function get_start_end_err (line 384) | fn get_start_end_err() { function decode_bad_tag_fails (line 400) | fn decode_bad_tag_fails() { function decode_nonbinary_fails (line 408) | fn decode_nonbinary_fails() { function decode_tagless_fails (line 415) | fn decode_tagless_fails() { function decode_error (line 422) | fn decode_error() { function decode_blob (line 431) | fn decode_blob() { function decode_page (line 439) | fn decode_page() { function decode_mem_query (line 448) | fn decode_mem_query() { function decode_mem_offer (line 458) | fn decode_mem_offer() { function decode_mem_offer_long_bitmap (line 469) | fn decode_mem_offer_long_bitmap() { function decode_mem_end (line 483) | fn decode_mem_end() { function decode_mem_fetch (line 493) | fn decode_mem_fetch() { function decode_mem_xfer (line 504) | fn decode_mem_xfer() { function decode_mem_done (line 515) | fn decode_mem_done() { FILE: bin/propolis-server/src/lib/migrate/destination.rs type MigrationTargetInfo (line 44) | pub(crate) struct MigrationTargetInfo { type DestinationProtocol (line 56) | pub(crate) trait DestinationProtocol { method run (line 60) | async fn run<'ensure>( method run (line 198) | async fn run<'ensure>( function initiate (line 70) | pub(crate) async fn initiate( function migration_start_connect (line 151) | async fn migration_start_connect( type RonV0 (line 180) | struct RonV0 { function new (line 269) | fn new( function log (line 278) | fn log(&self) -> &slog::Logger { function update_state (line 282) | fn update_state( function run_sync_phases (line 296) | async fn run_sync_phases( function run_import_phases (line 309) | async fn run_import_phases( function run_import_phase (line 334) | async fn run_import_phase( function sync (line 366) | async fn sync( function ram_push (line 408) | async fn ram_push( function query_ram (line 466) | async fn query_ram( function xfer_ram (line 507) | async fn xfer_ram( function device_state (line 522) | async fn device_state( function time_data (line 563) | async fn time_data( function import_device (line 663) | fn import_device( function ram_pull (line 760) | async fn ram_pull( function server_state (line 774) | async fn server_state( function finish (line 804) | async fn finish( function read_msg (line 823) | async fn read_msg(&mut self) -> Result { function read_ok (line 848) | async fn read_ok(&mut self) -> Result<(), MigrateError> { function read_page (line 858) | async fn read_page(&mut self) -> Result, MigrateError> { function send_msg (line 865) | async fn send_msg( function write_guest_ram (line 872) | async fn write_guest_ram( FILE: bin/propolis-server/src/lib/migrate/memx.rs function validate_bitmap (line 30) | pub(crate) fn validate_bitmap(start: u64, end: u64, bits: &[u8]) -> bool { function make_mem_offer (line 55) | pub(crate) fn make_mem_offer( function make_mem_fetch (line 64) | pub(crate) fn make_mem_fetch( function make_mem_xfer (line 73) | pub(crate) fn make_mem_xfer( function make_mem_offer_simple (line 88) | fn make_mem_offer_simple() { function make_mem_xfer_short (line 97) | fn make_mem_xfer_short() { function make_mem_fetch_too_long_fails (line 107) | fn make_mem_fetch_too_long_fails() { FILE: bin/propolis-server/src/lib/migrate/mod.rs type MigrateConn (line 22) | pub(crate) trait MigrateConn: type MigrateRole (line 31) | pub enum MigrateRole { type MigratePhase (line 38) | enum MigratePhase { method fmt (line 51) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type MigrateError (line 70) | pub enum MigrateError { method from (line 157) | fn from(err: tokio_tungstenite::tungstenite::Error) -> MigrateError { method from (line 163) | fn from(err: codec::ProtocolError) -> Self { method from (line 169) | fn from(value: MigrateStateError) -> Self { method from (line 175) | fn from(err: MigrateError) -> Self { type Device (line 209) | struct Device { type DevicePayload (line 217) | struct DevicePayload { type PageIter (line 230) | struct PageIter<'a> { function new (line 238) | pub fn new(start: u64, end: u64, bits: &'a [u8]) -> PageIter<'a> { type Item (line 245) | type Item = u64; method next (line 246) | fn next(&mut self) -> Option { function migrate_phase_begin (line 262) | fn migrate_phase_begin(step_desc: &str) {} function migrate_phase_end (line 263) | fn migrate_phase_end(step_desc: &str) {} function migrate_xfer_ram_region (line 264) | fn migrate_xfer_ram_region(pages: u64, size: u64, paused: u8) {} function migrate_xfer_ram_page (line 265) | fn migrate_xfer_ram_page(addr: u64, size: u64) {} function migrate_time_data_before (line 266) | fn migrate_time_data_before( function migrate_time_data_after (line 272) | fn migrate_time_data_after( FILE: bin/propolis-server/src/lib/migrate/preamble.rs type Preamble (line 16) | pub(crate) struct Preamble { method new (line 22) | pub fn new( method amend_spec (line 36) | pub fn amend_spec( FILE: bin/propolis-server/src/lib/migrate/protocol.rs type Protocol (line 25) | pub enum Protocol { method offer_string (line 32) | pub fn offer_string(&self) -> String { type Error (line 38) | type Error = anyhow::Error; method try_from (line 40) | fn try_from(value: ProtocolParts) -> Result { constant PREFIX (line 58) | const PREFIX: &str = "propolis-migrate-"; constant ENCODING_VERSION_SEPARATOR (line 62) | const ENCODING_VERSION_SEPARATOR: char = '/'; constant DELIMITER (line 65) | const DELIMITER: char = ','; type ProtocolParseError (line 69) | pub enum ProtocolParseError { type Encoding (line 88) | enum Encoding { method fmt (line 94) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Err (line 106) | type Err = ProtocolParseError; method from_str (line 108) | fn from_str(s: &str) -> Result { type ProtocolParts (line 123) | struct ProtocolParts { method offer_string (line 129) | fn offer_string(&self) -> String { method from (line 138) | fn from(value: Protocol) -> Self { type Err (line 148) | type Err = ProtocolParseError; method from_str (line 150) | fn from_str(s: &str) -> Result { function make_protocol_offers_from_parts (line 177) | fn make_protocol_offers_from_parts< function make_protocol_offer (line 194) | pub(super) fn make_protocol_offer() -> String { function parse_protocol_offer (line 201) | fn parse_protocol_offer( function select_compatible_protocol (line 223) | fn select_compatible_protocol( function select_protocol_from_offer (line 246) | pub(super) fn select_protocol_from_offer( constant PROTOCOLS_V1 (line 263) | const PROTOCOLS_V1: [ProtocolParts; 3] = [ constant PROTOCOLS_V2 (line 269) | const PROTOCOLS_V2: [ProtocolParts; 5] = [ function negotiation_selects_newest_version (line 278) | fn negotiation_selects_newest_version() { function parse_sorts_offered_protocols (line 291) | fn parse_sorts_offered_protocols() { function offer_string_round_trip (line 306) | fn offer_string_round_trip() { function parse_failures (line 315) | fn parse_failures() { FILE: bin/propolis-server/src/lib/migrate/source.rs type RamOfferDiscipline (line 112) | enum RamOfferDiscipline { type SourceProtocol (line 126) | pub(crate) trait SourceProtocol { method run (line 133) | async fn run( method run (line 318) | async fn run( function initiate (line 144) | pub(crate) async fn initiate( type PersistentState (line 238) | pub(crate) struct PersistentState { type RonV0 (line 247) | struct RonV0 { constant PAGE_BITMAP_SIZE (line 279) | const PAGE_BITMAP_SIZE: usize = 4096; type PageBitmap (line 280) | type PageBitmap = [u8; PAGE_BITMAP_SIZE]; function new (line 283) | async fn new( type RonV0Runner (line 339) | struct RonV0Runner<'vm, T: MigrateConn> { function log (line 351) | fn log(&self) -> &slog::Logger { function update_state (line 355) | fn update_state(&mut self, state: MigrationState) { function pause_vm (line 365) | async fn pause_vm(&mut self) { function resume_vm (line 371) | async fn resume_vm(&mut self) { function run_phase (line 377) | async fn run_phase( function run (line 401) | async fn run(&mut self) -> Result<(), MigrateError> { function sync (line 468) | async fn sync(&mut self) -> Result<(), MigrateError> { function ram_push (line 481) | async fn ram_push( function offer_ram (line 563) | async fn offer_ram( function xfer_ram (line 652) | async fn xfer_ram( function pause (line 672) | async fn pause(&mut self) -> Result<(), MigrateError> { function device_state (line 681) | async fn device_state(&mut self) -> Result<(), MigrateError> { function time_data (line 747) | async fn time_data(&mut self) -> Result<(), MigrateError> { function ram_pull (line 765) | async fn ram_pull(&mut self) -> Result<(), MigrateError> { function server_state (line 777) | async fn server_state(&mut self) -> Result<(), MigrateError> { function finish (line 796) | async fn finish(&mut self) -> Result<(), MigrateError> { function read_msg (line 839) | async fn read_msg(&mut self) -> Result { function read_ok (line 867) | async fn read_ok(&mut self) -> Result<(), MigrateError> { function read_mem_query (line 877) | async fn read_mem_query(&mut self) -> Result, MigrateError> { function send_msg (line 894) | async fn send_msg( function vmm_ram_bounds (line 901) | async fn vmm_ram_bounds( function track_dirty (line 909) | async fn track_dirty( function read_guest_mem (line 922) | async fn read_guest_mem( FILE: bin/propolis-server/src/lib/serial/history_buffer.rs type Error (line 17) | pub enum Error { constant TTY_BUFFER_SIZE (line 28) | const TTY_BUFFER_SIZE: usize = 1024 * 1024; constant DEFAULT_MAX_LENGTH (line 29) | const DEFAULT_MAX_LENGTH: isize = 16 * 1024; type HistoryBuffer (line 35) | pub(crate) struct HistoryBuffer { method new (line 100) | pub fn new(buffer_size: usize) -> Self { method consume (line 110) | pub fn consume(&mut self, data: &[u8]) { method contents_iter (line 126) | pub fn contents_iter( method contents_vec (line 181) | pub fn contents_vec( method offsets_from_start_and_end (line 194) | fn offsets_from_start_and_end( method bytes_from_start (line 221) | pub fn bytes_from_start(&self) -> usize { type SerialHistoryOffset (line 43) | pub(crate) enum SerialHistoryOffset { type Error (line 51) | type Error = (); method try_from (line 52) | fn try_from(req: &InstanceSerialConsoleStreamRequest) -> Result Self { function sugar (line 232) | fn sugar( function test_continuous_buffer_range_abstraction (line 243) | fn test_continuous_buffer_range_abstraction() { FILE: bin/propolis-server/src/lib/serial/mod.rs function serial_close_recv (line 36) | fn serial_close_recv() {} function serial_new_ws (line 37) | fn serial_new_ws() {} function serial_uart_write (line 38) | fn serial_uart_write(n: usize) {} function serial_uart_out (line 39) | fn serial_uart_out() {} function serial_uart_read (line 40) | fn serial_uart_read(n: usize) {} function serial_inject_uart (line 41) | fn serial_inject_uart() {} function serial_ws_recv (line 42) | fn serial_ws_recv() {} function serial_buffer_size (line 43) | fn serial_buffer_size(n: usize) {} type SerialTaskError (line 48) | pub enum SerialTaskError { type SerialTaskControlMessage (line 68) | pub enum SerialTaskControlMessage { type SerialTask (line 73) | pub struct SerialTask { function instance_serial_task (line 84) | pub async fn instance_serial_task( type Serial (line 288) | pub struct Serial { function new (line 309) | pub fn new( function read_source (line 330) | pub async fn read_source(&self, buf: &mut [u8]) -> Option { function write_sink (line 337) | pub async fn write_sink(&self, buf: &[u8]) -> Option { function history_vec (line 342) | pub(crate) async fn history_vec( function set_task_control_sender (line 355) | pub(crate) async fn set_task_control_sender( function export_history (line 362) | pub(crate) async fn export_history( function import (line 382) | pub(crate) async fn import( method drop (line 398) | fn drop(&mut self) { FILE: bin/propolis-server/src/lib/server.rs type MetricsEndpointConfig (line 70) | pub struct MetricsEndpointConfig { type StaticConfig (line 86) | pub struct StaticConfig { type DropshotEndpointContext (line 106) | pub struct DropshotEndpointContext { method new (line 115) | pub fn new( type LazyNexusClientInner (line 149) | struct LazyNexusClientInner { type LazyNexusClient (line 154) | pub struct LazyNexusClient { method new (line 159) | pub fn new(log: Logger, addr: Ipv6Addr) -> Result { method get_ip (line 168) | pub async fn get_ip(&self) -> Result { method get (line 172) | pub async fn get(&self) -> Result { function find_local_nexus_client (line 184) | async fn find_local_nexus_client( function instance_get (line 215) | async fn instance_get( type PropolisServerImpl (line 222) | enum PropolisServerImpl {} type Context (line 225) | type Context = Arc; method instance_ensure (line 227) | async fn instance_ensure( method instance_spec_get (line 315) | async fn instance_spec_get( method instance_get (line 321) | async fn instance_get( method instance_state_monitor (line 334) | async fn instance_state_monitor( method instance_state_put (line 365) | async fn instance_state_put( method instance_serial_history_get (line 408) | async fn instance_serial_history_get( method instance_serial (line 432) | async fn instance_serial( method instance_vnc (line 482) | async fn instance_vnc( method instance_migrate_start (line 512) | async fn instance_migrate_start( method instance_migrate_status (line 523) | async fn instance_migrate_status( method instance_issue_crucible_snapshot_request (line 534) | async fn instance_issue_crucible_snapshot_request( method disk_volume_status_v1 (line 561) | async fn disk_volume_status_v1( method disk_volume_status (line 589) | async fn disk_volume_status( method instance_issue_crucible_vcr_request (line 617) | async fn instance_issue_crucible_vcr_request( method instance_issue_nmi (line 664) | async fn instance_issue_nmi( function api (line 680) | pub fn api() -> ApiDescription> { function not_created_error (line 687) | fn not_created_error() -> HttpError { FILE: bin/propolis-server/src/lib/spec/api_spec_v0.rs type ApiSpecError (line 37) | pub(crate) enum ApiSpecError { function from (line 56) | fn from(val: Spec) -> Self { type Error (line 242) | type Error = ApiSpecError; method try_from (line 244) | fn try_from( function v1_to_spec_builder (line 254) | pub(crate) fn v1_to_spec_builder( FILE: bin/propolis-server/src/lib/spec/builder.rs type SpecBuilderError (line 38) | pub(crate) enum SpecBuilderError { type SpecBuilder (line 75) | pub(crate) struct SpecBuilder { method with_instance_spec_board (line 83) | pub(super) fn with_instance_spec_board( method add_boot_order (line 116) | pub fn add_boot_order( method register_pci_device (line 149) | fn register_pci_device( method add_storage_device (line 162) | pub(super) fn add_storage_device( method add_network_device (line 192) | pub(super) fn add_network_device( method add_pci_bridge (line 222) | pub fn add_pci_bridge( method add_serial_port (line 239) | pub fn add_serial_port( method add_pvpanic_device (line 259) | pub fn add_pvpanic_device( method add_vsock_device (line 276) | pub fn add_vsock_device( method add_migration_failure_device (line 296) | pub fn add_migration_failure_device( method set_softnpu_pci_port (line 314) | pub fn set_softnpu_pci_port( method set_softnpu_p9 (line 338) | pub fn set_softnpu_p9( method set_p9fs (line 348) | pub fn set_p9fs(&mut self, p9fs: P9fs) -> Result<&Self, SpecBuilderErr... method add_softnpu_port (line 355) | pub fn add_softnpu_port( method finish (line 382) | pub fn finish(self) -> super::Spec { function test_builder (line 400) | fn test_builder() -> SpecBuilder { function duplicate_pci_slot (line 415) | fn duplicate_pci_slot() { function duplicate_serial_port (line 451) | fn duplicate_serial_port() { function device_with_same_name_as_backend (line 486) | fn device_with_same_name_as_backend() { FILE: bin/propolis-server/src/lib/spec/mod.rs method from (line 57) | fn from(val: Spec) -> Self { type ComponentTypeMismatch (line 105) | pub struct ComponentTypeMismatch; type Spec (line 117) | pub(crate) struct Spec { type Error (line 76) | type Error = ApiSpecError; method try_from (line 78) | fn try_from(value: InstanceSpec) -> Result { type Board (line 158) | pub(crate) struct Board { method default (line 166) | fn default() -> Self { type BootSettings (line 177) | pub(crate) struct BootSettings { type BootOrderEntry (line 183) | pub(crate) struct BootOrderEntry { method from (line 191) | fn from( function from (line 201) | fn from(value: BootOrderEntry) -> Self { type StorageDevice (line 208) | pub enum StorageDevice { method kind (line 214) | pub fn kind(&self) -> &'static str { method pci_path (line 221) | pub fn pci_path(&self) -> PciPath { method backend_id (line 228) | pub fn backend_id(&self) -> &SpecKey { type Error (line 246) | type Error = ComponentTypeMismatch; method try_from (line 248) | fn try_from( function from (line 237) | fn from(value: StorageDevice) -> Self { type StorageBackend (line 261) | pub enum StorageBackend { method kind (line 268) | pub fn kind(&self) -> &'static str { method read_only (line 276) | pub fn read_only(&self) -> bool { type Error (line 296) | type Error = ComponentTypeMismatch; method try_from (line 298) | fn try_from( function from (line 286) | fn from(value: StorageBackend) -> Self { type Disk (line 317) | pub struct Disk { type Nic (line 323) | pub struct Nic { type SerialPortDevice (line 330) | pub enum SerialPortDevice { method fmt (line 338) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type SerialPort (line 353) | pub struct SerialPort { type QemuPvpanic (line 359) | pub struct QemuPvpanic { type VirtioSocket (line 366) | pub struct VirtioSocket { type MigrationFailure (line 373) | pub struct MigrationFailure { type SoftNpuPort (line 380) | pub struct SoftNpuPort { type SoftNpu (line 388) | pub struct SoftNpu { FILE: bin/propolis-server/src/lib/stats/mod.rs constant OXIMETER_COLLECTION_INTERVAL (line 43) | const OXIMETER_COLLECTION_INTERVAL: tokio::time::Duration = constant NETWORK_INTERFACE_SAMPLE_INTERVAL (line 51) | const NETWORK_INTERFACE_SAMPLE_INTERVAL: std::time::Duration = constant VCPU_KSTAT_INTERVAL (line 56) | const VCPU_KSTAT_INTERVAL: std::time::Duration = constant SAMPLE_BUFFER (line 62) | const SAMPLE_BUFFER: u32 = 64; constant KSTAT_LIMIT_PER_VCPU (line 71) | const KSTAT_LIMIT_PER_VCPU: u32 = type ServerStatsInner (line 76) | struct ServerStatsInner { method new (line 86) | pub fn new(virtual_machine: VirtualMachine) -> Self { type ServerStats (line 100) | pub struct ServerStats { method new (line 106) | pub fn new(vm: VirtualMachine) -> Self { method count_reset (line 111) | pub fn count_reset(&self) { method produce (line 117) | fn produce( function start_oximeter_server (line 147) | pub fn start_oximeter_server( function create_kstat_sampler (line 188) | pub(crate) fn create_kstat_sampler( function track_vcpu_kstats (line 214) | pub(crate) async fn track_vcpu_kstats( function track_vcpu_kstats (line 224) | pub(crate) async fn track_vcpu_kstats( function track_network_interface_kstats (line 244) | pub(crate) async fn track_network_interface_kstats( function track_network_interface_kstats (line 258) | pub(crate) async fn track_network_interface_kstats( type KstatList (line 303) | pub(crate) type KstatList<'a, 'k> = type KstatTarget (line 306) | pub(crate) trait KstatTarget: method interested (line 310) | fn interested(&self, kstat: &Kstat<'_>) -> bool; method to_samples (line 313) | fn to_samples( type Data (line 320) | pub(crate) enum Data<'a> { type NamedData (line 326) | pub(crate) enum NamedData<'a> { type Kstat (line 333) | pub(crate) struct Kstat<'a> { type Named (line 341) | pub(crate) struct Named<'a> { type ConvertNamedData (line 347) | pub(crate) trait ConvertNamedData { method as_i32 (line 348) | fn as_i32(&self) -> Result; method as_u32 (line 349) | fn as_u32(&self) -> Result; method as_i64 (line 350) | fn as_i64(&self) -> Result; method as_u64 (line 351) | fn as_u64(&self) -> Result; method as_i32 (line 355) | fn as_i32(&self) -> Result { method as_u32 (line 359) | fn as_u32(&self) -> Result { method as_i64 (line 367) | fn as_i64(&self) -> Result { method as_u64 (line 371) | fn as_u64(&self) -> Result { type Error (line 381) | pub(crate) enum Error { function hrtime_to_utc (line 392) | pub(crate) fn hrtime_to_utc(_: i64) -> Result, Error> { FILE: bin/propolis-server/src/lib/stats/network_interface.rs constant KSTAT_RX_BYTES (line 35) | const KSTAT_RX_BYTES: &str = "rx_bytes"; constant KSTAT_TX_BYTES (line 36) | const KSTAT_TX_BYTES: &str = "tx_bytes"; constant KSTAT_RX_PACKETS (line 37) | const KSTAT_RX_PACKETS: &str = "rx_packets"; constant KSTAT_TX_PACKETS (line 38) | const KSTAT_TX_PACKETS: &str = "tx_packets"; constant KSTAT_RX_DROPS (line 39) | const KSTAT_RX_DROPS: &str = "rx_drops"; constant KSTAT_RX_ERRORS (line 40) | const KSTAT_RX_ERRORS: &str = "rx_errors"; constant KSTAT_TX_ERRORS (line 41) | const KSTAT_TX_ERRORS: &str = "tx_errors"; constant KSTAT_FIELDS (line 45) | const KSTAT_FIELDS: &[&str] = &[ constant KSTAT_MODULE_NAME (line 57) | const KSTAT_MODULE_NAME: &str = "viona"; constant KSTAT_NAME (line 60) | const KSTAT_NAME: &str = "viona_stat"; function extract_nic_kstats (line 63) | fn extract_nic_kstats( type InstanceNetworkInterfaces (line 133) | pub(crate) struct InstanceNetworkInterfaces { method new (line 153) | pub(crate) fn new( method interested (line 173) | fn interested(&self, kstat: &Kstat<'_>) -> bool { method to_samples (line 181) | fn to_samples( method name (line 233) | fn name(&self) -> &'static str { method field_names (line 236) | fn field_names(&self) -> &'static [&'static str] { method field_types (line 240) | fn field_types(&self) -> Vec { method field_values (line 244) | fn field_values(&self) -> Vec { function test_network_interface (line 258) | fn test_network_interface() -> InstanceNetworkInterface { function test_kstat_interested (line 277) | fn test_kstat_interested() { function test_kstat_to_samples (line 319) | fn test_kstat_to_samples() { FILE: bin/propolis-server/src/lib/stats/pvpanic.rs type PvpanicProducer (line 18) | pub struct PvpanicProducer { method new (line 31) | pub fn new( method produce (line 48) | fn produce( FILE: bin/propolis-server/src/lib/stats/virtual_disk.rs type VirtualDiskStats (line 40) | struct VirtualDiskStats { method on_completion (line 70) | fn on_completion(&mut self, sample: BlockSample) { method on_read_completion (line 87) | fn on_read_completion( method on_write_completion (line 110) | fn on_write_completion( method on_flush_completion (line 133) | fn on_flush_completion( constant N_IO_KINDS (line 155) | const N_IO_KINDS: usize = 3; constant READ_INDEX (line 158) | const READ_INDEX: usize = 0; constant WRITE_INDEX (line 159) | const WRITE_INDEX: usize = 1; constant FLUSH_INDEX (line 160) | const FLUSH_INDEX: usize = 2; constant READ_KIND (line 163) | const READ_KIND: &str = "read"; constant WRITE_KIND (line 164) | const WRITE_KIND: &str = "write"; constant FLUSH_KIND (line 165) | const FLUSH_KIND: &str = "flush"; constant N_FAILURE_KINDS (line 168) | const N_FAILURE_KINDS: usize = 3; constant FAILURE_INDEX (line 171) | const FAILURE_INDEX: usize = 0; constant READONLY_INDEX (line 172) | const READONLY_INDEX: usize = 1; constant UNSUPPORTED_INDEX (line 173) | const UNSUPPORTED_INDEX: usize = 2; constant FAILURE_KIND (line 176) | const FAILURE_KIND: &str = "failed"; constant READONLY_KIND (line 177) | const READONLY_KIND: &str = "read-only"; constant UNSUPPORTED_KIND (line 178) | const UNSUPPORTED_KIND: &str = "unsupported"; constant LATENCY_POWERS (line 182) | const LATENCY_POWERS: (u16, u16) = (3, 10); constant SIZE_POWERS (line 187) | const SIZE_POWERS: (u16, u16) = (9, 30); constant MAX_BUFFERED_SAMPLES (line 193) | const MAX_BUFFERED_SAMPLES: usize = 512; type BlockMetrics (line 206) | pub(crate) struct BlockMetrics { method new (line 211) | pub fn new(disk: VirtualDisk, max_queues: NonZeroUsize) -> Arc { method producer (line 272) | pub(crate) fn producer(self: &Arc) -> VirtualDiskProducer { method latency_histogram (line 280) | fn latency_histogram() -> Histogram { method size_histogram (line 289) | fn size_histogram() -> Histogram { method consolidate_one (line 297) | fn consolidate_one(&self, idx: usize) { method consolidate_all (line 304) | fn consolidate_all(&self) { method request_completed (line 326) | fn request_completed( type BlockSample (line 316) | struct BlockSample { type VirtualDiskProducer (line 323) | pub struct VirtualDiskProducer(Arc); method produce (line 351) | fn produce( function test_latency_histogram (line 403) | fn test_latency_histogram() { function test_size_histogram (line 416) | fn test_size_histogram() { FILE: bin/propolis-server/src/lib/stats/virtual_machine.rs type VirtualMachine (line 43) | pub struct VirtualMachine { method new (line 65) | pub fn new( method name (line 87) | fn name(&self) -> &'static str { method field_names (line 91) | fn field_names(&self) -> &'static [&'static str] { method field_types (line 95) | fn field_types(&self) -> Vec { method field_values (line 99) | fn field_values(&self) -> Vec { function kstat_microstate_to_state_name (line 112) | fn kstat_microstate_to_state_name(ustate: &str) -> Option<&'static str> { constant OXIMETER_EMULATION_STATE (line 123) | const OXIMETER_EMULATION_STATE: &str = "emulation"; constant OXIMETER_RUN_STATE (line 124) | const OXIMETER_RUN_STATE: &str = "run"; constant OXIMETER_IDLE_STATE (line 125) | const OXIMETER_IDLE_STATE: &str = "idle"; constant OXIMETER_WAITING_STATE (line 126) | const OXIMETER_WAITING_STATE: &str = "waiting"; constant OXIMETER_STATES (line 127) | const OXIMETER_STATES: [&str; 4] = [ constant N_VCPU_MICROSTATES (line 139) | pub const N_VCPU_MICROSTATES: u32 = OXIMETER_STATES.len() as _; constant VMM_KSTAT_MODULE_NAME (line 142) | const VMM_KSTAT_MODULE_NAME: &str = "vmm"; constant VM_KSTAT_NAME (line 145) | const VM_KSTAT_NAME: &str = "vm"; constant VM_NAME_KSTAT (line 149) | const VM_NAME_KSTAT: &str = "vm_name"; constant VCPU_KSTAT_PREFIX (line 152) | const VCPU_KSTAT_PREFIX: &str = "vcpu"; method interested (line 172) | fn interested(&self, kstat: &Kstat<'_>) -> bool { method to_samples (line 176) | fn to_samples( function kstat_instance_from_instance_id (line 220) | fn kstat_instance_from_instance_id( function produce_vcpu_usage (line 252) | fn produce_vcpu_usage<'a>( function test_virtual_machine (line 335) | fn test_virtual_machine() -> VirtualMachine { function test_usage (line 360) | fn test_usage() -> VcpuUsage { function test_kstat_instance_from_instance_id (line 369) | fn test_kstat_instance_from_instance_id() { function vcpu_state_kstats (line 398) | fn vcpu_state_kstats<'a>() -> (Kstat<'a>, Data<'a>) { function test_produce_vcpu_usage (line 416) | fn test_produce_vcpu_usage() { function test_consistent_kstat_to_oximeter_microstate_mapping (line 457) | fn test_consistent_kstat_to_oximeter_microstate_mapping() { FILE: bin/propolis-server/src/lib/vcpu_tasks.rs type VcpuTaskError (line 22) | pub enum VcpuTaskError { type VcpuTasks (line 29) | pub struct VcpuTasks { method new (line 43) | pub(crate) fn new( method vcpu_loop (line 97) | fn vcpu_loop( type VcpuTaskController (line 35) | pub(crate) trait VcpuTaskController: Send + Sync + 'static { method new_generation (line 36) | fn new_generation(&self); method pause_all (line 37) | fn pause_all(&mut self); method resume_all (line 38) | fn resume_all(&mut self); method exit_all (line 39) | fn exit_all(&mut self); method pause_all (line 304) | fn pause_all(&mut self) { method new_generation (line 310) | fn new_generation(&self) { method resume_all (line 314) | fn resume_all(&mut self) { method exit_all (line 320) | fn exit_all(&mut self) { FILE: bin/propolis-server/src/lib/vm/active.rs type ActiveVm (line 24) | pub(crate) struct ActiveVm { method objects (line 53) | pub(crate) fn objects(&self) -> &Arc { method put_state (line 58) | pub(crate) fn put_state( method request_migration_out (line 77) | pub(crate) async fn request_migration_out( method reconfigure_crucible_volume (line 100) | pub(crate) fn reconfigure_crucible_volume( method services (line 118) | pub(crate) fn services(&self) -> &VmServices { FILE: bin/propolis-server/src/lib/vm/ensure.rs type VmInitializationMethod (line 131) | pub(crate) enum VmInitializationMethod { type VmEnsureRequest (line 136) | pub(crate) struct VmEnsureRequest { method is_migration (line 142) | pub(crate) fn is_migration(&self) -> bool { method migration_info (line 146) | pub(crate) fn migration_info(&self) -> Option<&MigrationTargetInfo> { method spec (line 153) | pub(crate) fn spec(&self) -> Option<&Spec> { type VmEnsureNotStarted (line 163) | pub(crate) struct VmEnsureNotStarted<'a> { function new (line 179) | pub(super) fn new( function state_publisher (line 197) | pub(crate) fn state_publisher(&mut self) -> &mut StatePublisher { function migration_info (line 201) | pub(crate) fn migration_info(&self) -> Option<&MigrationTargetInfo> { function create_objects_from_request (line 205) | pub(crate) async fn create_objects_from_request( function create_objects_from_spec (line 219) | pub(crate) async fn create_objects_from_spec( function create_objects (line 228) | async fn create_objects( function fail (line 329) | pub(crate) async fn fail(self, reason: anyhow::Error) -> anyhow::Error { type VmEnsureObjectsCreated (line 351) | pub(crate) struct VmEnsureObjectsCreated<'a> { function prepare_for_migration (line 372) | pub(crate) async fn prepare_for_migration(&mut self) { function ensure_active (line 383) | pub(crate) async fn ensure_active(self) -> VmEnsureActive<'a> { type VmEnsureActive (line 430) | pub(crate) struct VmEnsureActive<'a> { type VmEnsureActiveOutput (line 439) | pub(super) struct VmEnsureActiveOutput { function vm_objects (line 446) | pub(crate) fn vm_objects(&self) -> &Arc { function state_publisher (line 450) | pub(crate) fn state_publisher(&mut self) -> &mut StatePublisher { function fail (line 454) | pub(crate) async fn fail(mut self) { function into_inner (line 474) | pub(super) fn into_inner(self) -> VmEnsureActiveOutput { function initialize_vm_objects (line 483) | async fn initialize_vm_objects( function initialize_kstat_sampler (line 701) | fn initialize_kstat_sampler( FILE: bin/propolis-server/src/lib/vm/guest_event.rs type GuestEvent (line 16) | pub(super) enum GuestEvent { type GuestEventQueue (line 31) | pub(super) struct GuestEventQueue { method enqueue (line 55) | pub(super) fn enqueue(&mut self, event: GuestEvent) -> bool { method pop_front (line 64) | pub(super) fn pop_front(&mut self) -> Option { type VcpuEventHandler (line 36) | pub(crate) trait VcpuEventHandler: Send + Sync { method suspend_halt_event (line 37) | fn suspend_halt_event(&self, when: Duration); method suspend_reset_event (line 38) | fn suspend_reset_event(&self, when: Duration); method suspend_triple_fault_event (line 39) | fn suspend_triple_fault_event(&self, vcpu_id: i32, when: Duration); method unhandled_vm_exit (line 40) | fn unhandled_vm_exit( method io_error_event (line 45) | fn io_error_event(&self, vcpu_id: i32, error: std::io::Error); type ChipsetEventHandler (line 49) | pub(crate) trait ChipsetEventHandler: Send + Sync { method chipset_halt (line 50) | fn chipset_halt(&self); method chipset_reset (line 51) | fn chipset_reset(&self); FILE: bin/propolis-server/src/lib/vm/mod.rs type DeviceMap (line 116) | pub(crate) type DeviceMap = type NetworkInterfaceIds (line 121) | pub(crate) type NetworkInterfaceIds = Vec<(uuid::Uuid, KstatInstanceId)>; type BlockBackendMap (line 124) | pub(crate) type BlockBackendMap = type CrucibleBackendMap (line 128) | pub(crate) type CrucibleBackendMap = type InstanceStateTx (line 133) | type InstanceStateTx = watch::Sender; type InstanceStateRx (line 137) | type InstanceStateRx = watch::Receiver; type CrucibleReplaceResult (line 141) | pub(crate) type CrucibleReplaceResult = type CrucibleReplaceResultTx (line 146) | pub(crate) type CrucibleReplaceResultTx = type KstatInstanceId (line 151) | type KstatInstanceId = u32; type InstanceEnsureResponseTx (line 155) | type InstanceEnsureResponseTx = constant VMM_MIN_RT_THREADS (line 160) | const VMM_MIN_RT_THREADS: usize = 8; constant VMM_BASE_RT_THREADS (line 165) | const VMM_BASE_RT_THREADS: usize = 4; type VmError (line 169) | pub(crate) enum VmError { type Vm (line 190) | pub(crate) struct Vm { method new (line 319) | pub fn new(log: &slog::Logger) -> Arc { method active_vm (line 327) | pub(super) async fn active_vm( method get (line 347) | pub(super) async fn get(&self) -> Option { method state_watcher (line 389) | pub(super) async fn state_watcher(&self) -> Option { method make_active (line 409) | async fn make_active( method vm_init_failed (line 448) | async fn vm_init_failed(&self) { method set_rundown (line 469) | async fn set_rundown(&self) { method complete_rundown (line 505) | async fn complete_rundown(&self) { method ensure (line 545) | pub(crate) async fn ensure( type VmInner (line 204) | struct VmInner { type MaybeSpec (line 214) | enum MaybeSpec { method from (line 223) | fn from(value: MaybeSpec) -> Self { type VmDescription (line 234) | struct VmDescription { type VmState (line 248) | enum VmState { method fmt (line 268) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type EnsureOptions (line 284) | pub(super) struct EnsureOptions { FILE: bin/propolis-server/src/lib/vm/objects.rs type VmObjects (line 30) | pub(crate) struct VmObjects { method new (line 98) | pub(super) fn new( method lock_shared (line 109) | pub(crate) async fn lock_shared(&self) -> VmObjectsShared<'_> { method lock_exclusive (line 115) | pub(crate) async fn lock_exclusive(&self) -> VmObjectsExclusive<'_> { type InputVmObjects (line 45) | pub(super) struct InputVmObjects { type VmObjectsLocked (line 59) | pub(crate) struct VmObjectsLocked { method new (line 122) | fn new(log: &slog::Logger, input: InputVmObjects) -> Self { method instance_spec (line 139) | pub(crate) fn instance_spec(&self) -> &Spec { method instance_spec_mut (line 144) | pub(crate) fn instance_spec_mut(&mut self) -> &mut Spec { method machine (line 149) | pub(crate) fn machine(&self) -> &Machine { method vmm_hdl (line 154) | pub(crate) fn vmm_hdl(&self) -> &Arc { method access_mem (line 160) | pub(crate) fn access_mem( method device_by_id (line 169) | pub(crate) fn device_by_id( method crucible_backends (line 177) | pub(crate) fn crucible_backends(&self) -> &CrucibleBackendMap { method com1 (line 183) | pub(crate) fn com1(&self) -> &Arc> { method framebuffer (line 188) | pub(crate) fn framebuffer(&self) -> &Option> { method ps2ctrl (line 193) | pub(crate) fn ps2ctrl(&self) -> &Arc { method device_map (line 197) | pub(crate) fn device_map(&self) -> &DeviceMap { method block_backend_map (line 201) | pub(crate) fn block_backend_map(&self) -> &BlockBackendMap { method for_each_device (line 207) | pub(crate) fn for_each_device( method for_each_device_fallible (line 219) | pub(crate) fn for_each_device_fallible( method pause_kernel_vm (line 239) | pub(super) fn pause_kernel_vm(&self) { method resume_kernel_vm (line 245) | pub(super) fn resume_kernel_vm(&self) { method reset_devices_and_machine (line 251) | pub(super) fn reset_devices_and_machine(&self) { method pause (line 261) | pub(crate) async fn pause(&mut self) { method resume (line 271) | pub(crate) fn resume(&mut self) { method resume_vcpus (line 286) | pub(crate) fn resume_vcpus(&mut self) { method halt (line 291) | pub(super) async fn halt(&mut self) { method reset_vcpus (line 297) | pub(super) fn reset_vcpus(&self) { method reboot (line 304) | pub(super) async fn reboot(&mut self) { method pause_devices (line 324) | async fn pause_devices(&self) { method resume_devices (line 371) | fn resume_devices(&self) { method halt_devices (line 380) | async fn halt_devices(&mut self) { method reset_vcpu_state (line 402) | fn reset_vcpu_state(&self) { method drop (line 421) | fn drop(&mut self) { type VmObjectsShared (line 436) | pub(crate) struct VmObjectsShared<'o>(RwLockReadGuard<'o, VmObjectsLocke... type VmObjectsExclusive (line 439) | pub(crate) struct VmObjectsExclusive<'o>(RwLockWriteGuard<'o, VmObjectsL... type Target (line 442) | type Target = VmObjectsLocked; method deref (line 444) | fn deref(&self) -> &Self::Target { type Target (line 450) | type Target = VmObjectsLocked; method deref (line 452) | fn deref(&self) -> &Self::Target { method deref_mut (line 458) | fn deref_mut(&mut self) -> &mut Self::Target { FILE: bin/propolis-server/src/lib/vm/request_queue.rs type WebsocketConnection (line 31) | pub(crate) struct WebsocketConnection(Option Self { method into_inner (line 41) | pub(crate) fn into_inner(self) -> dropshot::WebsocketConnection { type StateChangeRequest (line 50) | pub(crate) enum StateChangeRequest { method fmt (line 69) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type ComponentChangeRequest (line 88) | pub enum ComponentChangeRequest { method fmt (line 105) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type ExternalRequest (line 118) | pub(crate) enum ExternalRequest { method start (line 128) | pub const fn start() -> Self { method stop (line 133) | pub const fn stop() -> Self { method reboot (line 138) | pub const fn reboot() -> Self { method migrate_as_source (line 144) | pub fn migrate_as_source( method reconfigure_crucible_volume (line 156) | pub fn reconfigure_crucible_volume( method is_stop (line 168) | fn is_stop(&self) -> bool { method assert_start (line 615) | fn assert_start(&self) { method assert_stop (line 623) | fn assert_stop(&self) { method assert_reboot (line 628) | fn assert_reboot(&self) { method assert_migrate_as_source (line 636) | fn assert_migrate_as_source(&self) { method assert_reconfigure_crucible (line 647) | fn assert_reconfigure_crucible(&self) { method from (line 842) | fn from(value: RequestKind) -> Self { type RequestDeniedReason (line 176) | pub(crate) enum RequestDeniedReason { type CompletedRequest (line 204) | pub(super) enum CompletedRequest { type QueueState (line 213) | enum QueueState { method deny_reason (line 239) | fn deny_reason(&self) -> Option { type ExternalRequestQueue (line 250) | pub(super) struct ExternalRequestQueue { method new (line 286) | pub fn new(log: Logger, auto_start: InstanceAutoStart) -> Self { method pop_front (line 308) | pub fn pop_front(&mut self) -> Option { method is_empty (line 318) | pub fn is_empty(&self) -> bool { method try_queue (line 326) | pub fn try_queue( method should_queue (line 394) | fn should_queue( method notify_request_completed (line 498) | pub(super) fn notify_request_completed(&mut self, req: CompletedReques... method notify_stopped (line 538) | pub(super) fn notify_stopped(&mut self) { type InstanceAutoStart (line 279) | pub(super) enum InstanceAutoStart { method drop (line 549) | fn drop(&mut self) { function test_logger (line 591) | fn test_logger() -> slog::Logger { function make_migrate_as_source_request (line 595) | fn make_migrate_as_source_request() -> ExternalRequest { function make_reconfigure_crucible_request (line 602) | fn make_reconfigure_crucible_request() -> ExternalRequest { function start_requests_become_idempotent_after_first_request (line 661) | fn start_requests_become_idempotent_after_first_request() { function migrate_as_source_is_not_idempotent (line 685) | fn migrate_as_source_is_not_idempotent() { function stop_requests_are_idempotent (line 727) | fn stop_requests_are_idempotent() { function stop_requests_ignored_after_vm_failure (line 742) | fn stop_requests_ignored_after_vm_failure() { function reboot_requests_are_idempotent_except_when_stopping (line 755) | fn reboot_requests_are_idempotent_except_when_stopping() { function mutation_disallowed_after_stopped (line 791) | fn mutation_disallowed_after_stopped() { function vcr_requests_canceled_when_queue_drops (line 804) | async fn vcr_requests_canceled_when_queue_drops() { type RequestKind (line 833) | enum RequestKind { function request_strategy (line 859) | fn request_strategy() -> impl Strategy { type QueueOp (line 1050) | enum QueueOp { function queue_op_strategy (line 1055) | fn queue_op_strategy() -> impl Strategy { type QueueDequeueTest (line 1065) | struct QueueDequeueTest { method new (line 1098) | fn new() -> Self { method run (line 1115) | fn run(&mut self, ops: Vec) { method queue_request (line 1134) | fn queue_request(&mut self, request: RequestKind) { method dequeue_request (line 1204) | fn dequeue_request(&mut self) { FILE: bin/propolis-server/src/lib/vm/services.rs type OximeterState (line 26) | pub(crate) struct OximeterState { type VmServices (line 37) | pub(crate) struct VmServices { method new (line 54) | pub(super) async fn new( method stop (line 92) | pub(super) async fn stop(&self, log: &Logger) { function register_oximeter_producer (line 117) | async fn register_oximeter_producer( function start_serial_task (line 170) | async fn start_serial_task( FILE: bin/propolis-server/src/lib/vm/state_driver.rs type HandleEventOutcome (line 133) | enum HandleEventOutcome { type VmStartReason (line 140) | pub(super) enum VmStartReason { type VmStartOutcome (line 146) | enum VmStartOutcome { method final_vm_state (line 158) | fn final_vm_state(&self) -> Option { type InputQueueEvent (line 169) | enum InputQueueEvent { type InputQueueInner (line 175) | struct InputQueueInner { method new (line 185) | fn new(log: slog::Logger, auto_start: InstanceAutoStart) -> Self { type InputQueue (line 196) | pub(super) struct InputQueue { method new (line 211) | pub(super) fn new( method wait_for_next_event (line 239) | async fn wait_for_next_event(&self) -> InputQueueEvent { method notify_request_completed (line 263) | fn notify_request_completed(&self, state: CompletedRequest) { method notify_stopped (line 271) | fn notify_stopped(&self) { method queue_external_request (line 277) | pub(super) fn queue_external_request( method suspend_halt_event (line 291) | fn suspend_halt_event(&self, when: Duration) { method suspend_reset_event (line 301) | fn suspend_reset_event(&self, when: Duration) { method suspend_triple_fault_event (line 311) | fn suspend_triple_fault_event(&self, vcpu_id: i32, when: Duration) { method unhandled_vm_exit (line 320) | fn unhandled_vm_exit( method io_error_event (line 328) | fn io_error_event(&self, vcpu_id: i32, error: std::io::Error) { method chipset_halt (line 334) | fn chipset_halt(&self) { method chipset_reset (line 341) | fn chipset_reset(&self) { type StateDriver (line 350) | struct StateDriver { method run (line 506) | pub(super) async fn run(mut self, migrated_in: bool) -> StateDriverOut... method event_loop (line 529) | async fn event_loop(&mut self) -> InstanceState { method start_vm (line 559) | async fn start_vm( method handle_guest_event (line 776) | async fn handle_guest_event( method handle_external_request (line 826) | async fn handle_external_request( method do_reboot (line 898) | async fn do_reboot(&mut self) { method do_halt (line 912) | async fn do_halt(&mut self) { method migrate_as_source (line 932) | async fn migrate_as_source( method reconfigure_crucible_volume (line 1014) | async fn reconfigure_crucible_volume( type StateDriverOutput (line 375) | pub(super) struct StateDriverOutput { function ensure_vm_and_launch_driver (line 391) | pub(super) async fn ensure_vm_and_launch_driver( function ensure_active_vm (line 450) | async fn ensure_active_vm<'a>( FILE: bin/propolis-server/src/lib/vm/state_publisher.rs type MigrationStateUpdate (line 22) | pub(crate) struct MigrationStateUpdate { method apply_to (line 36) | fn apply_to( type ExternalStateUpdate (line 55) | pub(crate) enum ExternalStateUpdate { type StatePublisher (line 67) | pub(crate) struct StatePublisher { method new (line 73) | pub(super) fn new( method update (line 83) | pub(crate) fn update(&mut self, update: ExternalStateUpdate) { FILE: bin/propolis-server/src/lib/vnc.rs constant MAX_RES (line 31) | const MAX_RES: Resolution = Resolution { width: 1920, height: 1200 }; constant UNINIT_RES (line 32) | const UNINIT_RES: Resolution = Resolution { width: 800, height: 600 }; constant UNINIT_FOURCC (line 33) | const UNINIT_FOURCC: FourCC = FourCC::XR24; constant SERVER_NAME (line 34) | const SERVER_NAME: &str = "propolis-vnc"; constant FRAME_US_10FPS (line 36) | const FRAME_US_10FPS: usize = 1000000 / 10; type Devices (line 38) | struct Devices { type FrameKind (line 44) | enum FrameKind { type State (line 50) | struct State { type ClientState (line 55) | struct ClientState { method default (line 62) | fn default() -> Self { type Client (line 73) | pub struct Client { type VncServer (line 78) | pub struct VncServer { method new (line 108) | pub fn new(log: Logger) -> Arc { method attach (line 117) | pub fn attach(&self, ps2: Arc, fb: Arc) { method connect (line 121) | pub async fn connect( method replace_client (line 173) | async fn replace_client(&self, new_id: String) -> oneshot::Receiver<()> { method hup_client (line 182) | fn hup_client(&self) { method wait_client_gone (line 188) | async fn wait_client_gone(&self) -> MutexGuard<'_, Client> { method run (line 207) | async fn run( method handle_msg (line 242) | async fn handle_msg( method send_fbu (line 295) | async fn send_fbu( method update_frame (line 321) | fn update_frame(&self, cstate: &mut ClientState) -> bool { method wait_for_next_frame (line 349) | async fn wait_for_next_frame(&self, cstate: &mut ClientState) { method stop (line 384) | pub async fn stop(&self) { type ConnectError (line 88) | pub enum ConnectError { type Connection (line 98) | pub trait Connection: AsyncRead + AsyncWrite + Unpin + Send + 'static {} type TcpSock (line 396) | pub struct TcpSock { method new (line 401) | pub async fn new( method halt (line 413) | pub async fn halt(self) { method run (line 420) | async fn run( function blank_frame (line 456) | fn blank_frame(fourcc: FourCC) -> FrameSnap { function spec_valid (line 473) | fn spec_valid(spec: &Spec) -> bool { FILE: bin/propolis-server/src/main.rs constant API_RT_THREADS (line 29) | const API_RT_THREADS: usize = 4; type MetricRegistration (line 33) | enum MetricRegistration { method fmt (line 40) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type Err (line 50) | type Err = anyhow::Error; method from_str (line 52) | fn from_str(s: &str) -> Result { function parse_log_level (line 70) | fn parse_log_level(s: &str) -> anyhow::Result { type Args (line 77) | enum Args { function run_server (line 113) | fn run_server( function build_logger (line 203) | fn build_logger(level: slog::Level) -> slog::Logger { function is_valid_listen_addr_for_dns (line 238) | fn is_valid_listen_addr_for_dns(listen_addr: IpAddr) -> bool { function build_metric_configuration (line 249) | fn build_metric_configuration( function main (line 280) | fn main() -> anyhow::Result<()> { FILE: bin/propolis-standalone/src/cidata.rs constant SECTOR_SZ (line 14) | const SECTOR_SZ: usize = 512; constant VOLUME_LABEL (line 15) | const VOLUME_LABEL: [u8; 11] = *b"cidata "; function build_cidata_be (line 17) | pub(crate) fn build_cidata_be( FILE: bin/propolis-standalone/src/config.rs type Config (line 26) | pub struct Config { method cpuid_profile (line 41) | pub fn cpuid_profile(&self) -> Option<&CpuidProfile> { type Main (line 50) | pub struct Main { type BindingStrategy (line 78) | pub enum BindingStrategy { type Device (line 96) | pub struct Device { type BlockOpts (line 104) | pub struct BlockOpts { type BlockDevice (line 111) | pub struct BlockDevice { type CloudInit (line 124) | pub struct CloudInit { type FileConfig (line 136) | struct FileConfig { type MemAsyncConfig (line 141) | struct MemAsyncConfig { type VionaDeviceParams (line 147) | pub struct VionaDeviceParams { method from_opts (line 152) | pub fn from_opts( type VsockDevice (line 175) | pub struct VsockDevice { method from_opts (line 181) | pub fn from_opts( function opt_deser (line 189) | fn opt_deser<'de, T: Deserialize<'de>>( constant DEFAULT_WORKER_COUNT (line 197) | const DEFAULT_WORKER_COUNT: usize = 8; constant MAX_FILE_WORKERS (line 198) | const MAX_FILE_WORKERS: usize = 32; function block_backend (line 200) | pub fn block_backend( function parse (line 277) | pub fn parse(path: &str) -> anyhow::Result { function parse_bdf (line 286) | pub fn parse_bdf(v: &str) -> Option { function parse_cpuid (line 303) | pub fn parse_cpuid(config: &Config) -> anyhow::Result> { function create_crucible_backend (line 332) | fn create_crucible_backend( function create_crucible_mem_backend (line 427) | fn create_crucible_mem_backend( function create_crucible_backend (line 446) | fn create_crucible_backend( function create_crucible_mem_backend (line 458) | fn create_crucible_mem_backend( FILE: bin/propolis-standalone/src/main.rs constant PAGE_OFFSET (line 43) | const PAGE_OFFSET: u64 = 0xfff; constant MAX_ROM_SIZE (line 45) | const MAX_ROM_SIZE: usize = 0x20_0000; constant MIN_RT_THREADS (line 47) | const MIN_RT_THREADS: usize = 8; constant BASE_RT_THREADS (line 48) | const BASE_RT_THREADS: usize = 4; type InstEvent (line 51) | enum InstEvent { method priority (line 63) | fn priority(&self) -> u8 { method supersedes (line 74) | fn supersedes(&self, comp: &Self) -> bool { method from (line 79) | fn from(value: propolis::exits::Suspend) -> Self { type EventCtx (line 92) | enum EventCtx { type EQInner (line 100) | struct EQInner { type EventQueue (line 104) | struct EventQueue { method new (line 109) | fn new() -> Arc { method push (line 112) | fn push(&self, ev: InstEvent, ctx: EventCtx) { method pop_superseding (line 117) | fn pop_superseding( method wait (line 138) | fn wait(&self) { type State (line 145) | pub enum State { method next (line 164) | fn next(&self, ev: InstEvent) -> (Self, Option) { type Inventory (line 207) | struct Inventory { method register (line 212) | fn register(&mut self, dev: &Arc) { method register_instance (line 218) | fn register_instance( method register_block (line 228) | fn register_block( method destroy (line 235) | fn destroy(&mut self) { type InstState (line 247) | struct InstState { type InstInner (line 255) | struct InstInner { type Instance (line 264) | struct Instance(Arc); method new (line 266) | fn new( method device_state_transition (line 356) | fn device_state_transition( method state_loop (line 417) | fn state_loop( method wait_destroyed (line 574) | fn wait_destroyed(&self) -> ExitCode { method vcpu_loop (line 584) | fn vcpu_loop( method generate_pins (line 727) | fn generate_pins(&self) -> (Arc, Arc) { method lock (line 751) | fn lock(&self) -> Option> { method eq (line 757) | fn eq(&self) -> Arc { function build_machine (line 762) | fn build_machine( function open_bootrom (line 798) | fn open_bootrom(path: &str) -> Result<(File, usize)> { function build_log (line 816) | fn build_log(level: slog::Level) -> slog::Logger { function populate_rom (line 849) | fn populate_rom( type SmbiosParams (line 871) | struct SmbiosParams { function generate_smbios (line 879) | fn generate_smbios(params: SmbiosParams) -> anyhow::Result std::io::Result<()> { type Args (line 1489) | struct Args { function main (line 1512) | fn main() -> anyhow::Result { type LogFilter (line 1592) | struct LogFilter(slog::Level); method value_variants (line 1595) | fn value_variants<'a>() -> &'a [Self] { method to_possible_value (line 1606) | fn to_possible_value(&self) -> Option { method fmt (line 1612) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { FILE: bin/propolis-standalone/src/snapshot.rs type SnapshotDevice (line 43) | struct SnapshotDevice { type SnapshotDevicePayload (line 48) | struct SnapshotDevicePayload { constant DEVICE_DIR (line 54) | const DEVICE_DIR: &str = "devices"; constant MEMORY_DIR (line 55) | const MEMORY_DIR: &str = "memory"; constant CONFIG_NAME (line 56) | const CONFIG_NAME: &str = "config.toml"; constant GLOBAL_NAME (line 57) | const GLOBAL_NAME: &str = "global.json"; function save (line 60) | pub(crate) fn save( function parse_mem_name (line 211) | fn parse_mem_name(name: &str) -> anyhow::Result<(usize, usize)> { function restore_config (line 231) | pub(crate) fn restore_config(path: impl AsRef) -> anyhow::Result io::Result { function import_global (line 451) | fn import_global(hdl: &VmmHdl, state: &VmGlobalState) -> io::Result<()> { type TarBuilder (line 469) | struct TarBuilder(tar::Builder); method new (line 471) | fn new(fp: File) -> Self { method append_data (line 474) | fn append_data( method append_space (line 483) | fn append_space( method append_dir (line 502) | fn append_dir( method rawfd (line 511) | fn rawfd(&mut self) -> RawFd { method inner_builder (line 514) | fn inner_builder(&mut self) -> &mut tar::Builder { method into_file (line 517) | fn into_file(self) -> io::Result { type TarInner (line 523) | enum TarInner { method as_tar (line 528) | fn as_tar(&mut self) -> Option<&mut tar::Archive> { method as_file (line 534) | fn as_file(&mut self) -> Option<&mut File> { type TarArchive (line 545) | struct TarArchive(TarInner); method new (line 547) | fn new(fp: File) -> Self { method reset_tar (line 551) | fn reset_tar(&mut self) -> io::Result<&mut tar::Archive> { method as_file (line 565) | fn as_file(&mut self) -> &mut File { method named_entry (line 577) | fn named_entry(&mut self, name: &str) -> io::Result io::Result> { FILE: bin/propolis-utils/src/bin/cpuid-gen.rs function print_text (line 10) | fn print_text(results: &CpuidSet) { function print_toml (line 27) | fn print_toml(results: &CpuidSet) { function print_json (line 41) | fn print_json(results: CpuidSet) { type OutputFormat (line 47) | enum OutputFormat { type Err (line 60) | type Err = &'static str; method from_str (line 62) | fn from_str(s: &str) -> Result { type Opts (line 77) | struct Opts { function main (line 91) | fn main() -> anyhow::Result<()> { FILE: bin/propolis-utils/src/bin/rsrvrctl.rs type Opts (line 9) | struct Opts { type Command (line 15) | enum Command { constant MB (line 41) | const MB: usize = 1024 * 1024; function do_resize (line 43) | fn do_resize( function main (line 59) | fn main() -> anyhow::Result<()> { FILE: crates/bhyve-api/header-check/build.rs function ver_gt (line 19) | fn ver_gt(ver: u32) -> bool { function ver_lt (line 23) | fn ver_lt(ver: u32) -> bool { function ver_eq (line 27) | fn ver_eq(ver: u32) -> bool { function main (line 31) | fn main() { FILE: crates/bhyve-api/src/lib.rs constant VMM_PATH_PREFIX (line 16) | pub const VMM_PATH_PREFIX: &str = "/dev/vmm"; constant VMM_CTL_PATH (line 17) | pub const VMM_CTL_PATH: &str = "/dev/vmmctl"; type VmmCtlFd (line 19) | pub struct VmmCtlFd(File); method open (line 21) | pub fn open() -> Result { method ioctl (line 36) | pub unsafe fn ioctl(&self, cmd: i32, data: *mut T) -> Result { method ioctl_usize (line 39) | pub fn ioctl_usize(&self, cmd: i32, data: usize) -> Result { method api_version (line 54) | pub fn api_version(&self) -> Result { method query_api_version (line 59) | fn query_api_version(&self) -> Result { method reservoir_resize (line 74) | pub fn reservoir_resize( method reservoir_query (line 99) | pub fn reservoir_query(&self) -> Result { method vm_destroy (line 109) | pub fn vm_destroy(&self, name: &[u8]) -> Result<()> { method ioctl_usize_safe (line 117) | const fn ioctl_usize_safe(cmd: i32) -> bool { method as_raw_fd (line 123) | fn as_raw_fd(&self) -> RawFd { type ReservoirError (line 128) | pub enum ReservoirError { method from (line 139) | fn from(val: ReservoirError) -> Self { type VmmFd (line 149) | pub struct VmmFd(File); method open (line 151) | pub fn open(name: &str) -> Result { method new_raw (line 166) | pub unsafe fn new_raw(fp: File) -> Self { method ioctl (line 177) | pub unsafe fn ioctl(&self, cmd: i32, data: *mut T) -> Result { method ioctl_usize (line 180) | pub fn ioctl_usize(&self, cmd: i32, data: usize) -> Result { method api_version (line 195) | pub fn api_version(&self) -> Result { method rtc_settime (line 218) | pub fn rtc_settime(&self, time: Duration) -> Result<()> { method data_op (line 236) | pub fn data_op(&self, class: u16, version: u16) -> VmmDataOp<'_> { method ioctl_usize_safe (line 242) | const fn ioctl_usize_safe(cmd: i32) -> bool { method as_raw_fd (line 256) | fn as_raw_fd(&self) -> RawFd { type VmmDataResult (line 261) | pub type VmmDataResult = std::result::Result; type VmmDataOp (line 267) | pub struct VmmDataOp<'a> { function new (line 275) | pub fn new(fd: &'a VmmFd, class: u16, version: u16) -> Self { function for_vcpu (line 283) | pub fn for_vcpu(mut self, vcpuid: i32) -> Self { function read (line 289) | pub fn read(self) -> VmmDataResult { function read_into (line 300) | pub fn read_into(self, data: &mut T) -> VmmDataResult<()> { function read_item (line 309) | pub fn read_item(self, data: &mut T) -> VmmDataResult<()> { function do_read_single (line 317) | fn do_read_single( function read_many (line 335) | pub fn read_many(self, data: &mut [T]) -> VmmDataResult<()> { function read_all (line 353) | pub fn read_all(self) -> VmmDataResult> { function write (line 385) | pub fn write(self, data: &T) -> VmmDataResult<()> { function write_many (line 398) | pub fn write_many(self, data: &[T]) -> VmmDataResult<()> { function xfer_base (line 410) | fn xfer_base(&self, len: u32, data: *mut libc::c_void) -> vm_data_xfer { function do_read (line 421) | fn do_read( function do_write (line 428) | fn do_write( function do_ioctl (line 440) | fn do_ioctl( type VmmDataError (line 458) | pub enum VmmDataError { method from (line 464) | fn from(err: VmmDataError) -> Self { function api_version (line 487) | pub fn api_version() -> Result { function cache_api_version (line 495) | fn cache_api_version(do_query: impl FnOnce() -> Result) -> Result Result<... function ioctl (line 531) | unsafe fn ioctl( type ApiVersion (line 543) | pub enum ApiVersion { method current (line 592) | pub const fn current() -> Self { function eq (line 598) | fn eq(&self, other: &ApiVersion) -> bool { function partial_cmp (line 603) | fn partial_cmp(&self, other: &ApiVersion) -> Option { function latest_api_version (line 613) | fn latest_api_version() { function u32_comparisons (line 619) | fn u32_comparisons() { FILE: crates/bhyve-api/sys/src/enums.rs type vm_reg_name (line 10) | pub enum vm_reg_name { type vm_exitcode (line 63) | pub enum vm_exitcode { type vcpu_reset_kind (line 96) | pub enum vcpu_reset_kind { type vm_entry_cmds (line 103) | pub enum vm_entry_cmds { type vm_cap_type (line 113) | pub enum vm_cap_type { type vm_suspend_how (line 124) | pub enum vm_suspend_how { FILE: crates/bhyve-api/sys/src/ioctls.rs constant VMMCTL_IOC_BASE (line 7) | const VMMCTL_IOC_BASE: i32 = ((b'V' as i32) << 16) | ((b'M' as i32) << 8); constant VMM_IOC_BASE (line 8) | const VMM_IOC_BASE: i32 = ((b'v' as i32) << 16) | ((b'm' as i32) << 8); constant VMM_LOCK_IOC_BASE (line 9) | const VMM_LOCK_IOC_BASE: i32 = ((b'v' as i32) << 16) | ((b'l' as i32) <<... constant VMM_CPU_IOC_BASE (line 10) | const VMM_CPU_IOC_BASE: i32 = ((b'v' as i32) << 16) | ((b'p' as i32) << 8); constant VMM_CREATE_VM (line 13) | pub const VMM_CREATE_VM: i32 = VMMCTL_IOC_BASE | 0x01; constant VMM_DESTROY_VM (line 14) | pub const VMM_DESTROY_VM: i32 = VMMCTL_IOC_BASE | 0x02; constant VMM_VM_SUPPORTED (line 15) | pub const VMM_VM_SUPPORTED: i32 = VMMCTL_IOC_BASE | 0x03; constant VMM_INTERFACE_VERSION (line 16) | pub const VMM_INTERFACE_VERSION: i32 = VMMCTL_IOC_BASE | 0x04; constant VMM_RESV_QUERY (line 19) | pub const VMM_RESV_QUERY: i32 = VMMCTL_IOC_BASE | 0x10; constant VMM_RESV_SET_TARGET (line 20) | pub const VMM_RESV_SET_TARGET: i32 = VMMCTL_IOC_BASE | 0x11; constant VM_RUN (line 23) | pub const VM_RUN: i32 = VMM_CPU_IOC_BASE | 0x01; constant VM_SET_REGISTER (line 24) | pub const VM_SET_REGISTER: i32 = VMM_CPU_IOC_BASE | 0x02; constant VM_GET_REGISTER (line 25) | pub const VM_GET_REGISTER: i32 = VMM_CPU_IOC_BASE | 0x03; constant VM_SET_SEGMENT_DESCRIPTOR (line 26) | pub const VM_SET_SEGMENT_DESCRIPTOR: i32 = VMM_CPU_IOC_BASE | 0x04; constant VM_GET_SEGMENT_DESCRIPTOR (line 27) | pub const VM_GET_SEGMENT_DESCRIPTOR: i32 = VMM_CPU_IOC_BASE | 0x05; constant VM_SET_REGISTER_SET (line 28) | pub const VM_SET_REGISTER_SET: i32 = VMM_CPU_IOC_BASE | 0x06; constant VM_GET_REGISTER_SET (line 29) | pub const VM_GET_REGISTER_SET: i32 = VMM_CPU_IOC_BASE | 0x07; constant VM_INJECT_EXCEPTION (line 30) | pub const VM_INJECT_EXCEPTION: i32 = VMM_CPU_IOC_BASE | 0x08; constant VM_SET_CAPABILITY (line 31) | pub const VM_SET_CAPABILITY: i32 = VMM_CPU_IOC_BASE | 0x09; constant VM_GET_CAPABILITY (line 32) | pub const VM_GET_CAPABILITY: i32 = VMM_CPU_IOC_BASE | 0x0a; constant VM_PPTDEV_MSI (line 33) | pub const VM_PPTDEV_MSI: i32 = VMM_CPU_IOC_BASE | 0x0b; constant VM_PPTDEV_MSIX (line 34) | pub const VM_PPTDEV_MSIX: i32 = VMM_CPU_IOC_BASE | 0x0c; constant VM_SET_X2APIC_STATE (line 35) | pub const VM_SET_X2APIC_STATE: i32 = VMM_CPU_IOC_BASE | 0x0d; constant VM_GLA2GPA (line 36) | pub const VM_GLA2GPA: i32 = VMM_CPU_IOC_BASE | 0x0e; constant VM_GLA2GPA_NOFAULT (line 37) | pub const VM_GLA2GPA_NOFAULT: i32 = VMM_CPU_IOC_BASE | 0x0f; constant VM_ACTIVATE_CPU (line 38) | pub const VM_ACTIVATE_CPU: i32 = VMM_CPU_IOC_BASE | 0x10; constant VM_SET_INTINFO (line 39) | pub const VM_SET_INTINFO: i32 = VMM_CPU_IOC_BASE | 0x11; constant VM_GET_INTINFO (line 40) | pub const VM_GET_INTINFO: i32 = VMM_CPU_IOC_BASE | 0x12; constant VM_RESTART_INSTRUCTION (line 41) | pub const VM_RESTART_INSTRUCTION: i32 = VMM_CPU_IOC_BASE | 0x13; constant VM_SET_KERNEMU_DEV (line 42) | pub const VM_SET_KERNEMU_DEV: i32 = VMM_CPU_IOC_BASE | 0x14; constant VM_GET_KERNEMU_DEV (line 43) | pub const VM_GET_KERNEMU_DEV: i32 = VMM_CPU_IOC_BASE | 0x15; constant VM_RESET_CPU (line 44) | pub const VM_RESET_CPU: i32 = VMM_CPU_IOC_BASE | 0x16; constant VM_GET_RUN_STATE (line 45) | pub const VM_GET_RUN_STATE: i32 = VMM_CPU_IOC_BASE | 0x17; constant VM_SET_RUN_STATE (line 46) | pub const VM_SET_RUN_STATE: i32 = VMM_CPU_IOC_BASE | 0x18; constant VM_GET_FPU (line 47) | pub const VM_GET_FPU: i32 = VMM_CPU_IOC_BASE | 0x19; constant VM_SET_FPU (line 48) | pub const VM_SET_FPU: i32 = VMM_CPU_IOC_BASE | 0x1a; constant VM_GET_CPUID (line 49) | pub const VM_GET_CPUID: i32 = VMM_CPU_IOC_BASE | 0x1b; constant VM_SET_CPUID (line 50) | pub const VM_SET_CPUID: i32 = VMM_CPU_IOC_BASE | 0x1c; constant VM_LEGACY_CPUID (line 51) | pub const VM_LEGACY_CPUID: i32 = VMM_CPU_IOC_BASE | 0x1d; constant VM_REINIT (line 54) | pub const VM_REINIT: i32 = VMM_LOCK_IOC_BASE | 0x01; constant VM_BIND_PPTDEV (line 55) | pub const VM_BIND_PPTDEV: i32 = VMM_LOCK_IOC_BASE | 0x02; constant VM_UNBIND_PPTDEV (line 56) | pub const VM_UNBIND_PPTDEV: i32 = VMM_LOCK_IOC_BASE | 0x03; constant VM_MAP_PPTDEV_MMIO (line 57) | pub const VM_MAP_PPTDEV_MMIO: i32 = VMM_LOCK_IOC_BASE | 0x04; constant VM_ALLOC_MEMSEG (line 58) | pub const VM_ALLOC_MEMSEG: i32 = VMM_LOCK_IOC_BASE | 0x05; constant VM_MMAP_MEMSEG (line 59) | pub const VM_MMAP_MEMSEG: i32 = VMM_LOCK_IOC_BASE | 0x06; constant VM_PMTMR_LOCATE (line 60) | pub const VM_PMTMR_LOCATE: i32 = VMM_LOCK_IOC_BASE | 0x07; constant VM_MUNMAP_MEMSEG (line 61) | pub const VM_MUNMAP_MEMSEG: i32 = VMM_LOCK_IOC_BASE | 0x08; constant VM_UNMAP_PPTDEV_MMIO (line 62) | pub const VM_UNMAP_PPTDEV_MMIO: i32 = VMM_LOCK_IOC_BASE | 0x09; constant VM_PAUSE (line 63) | pub const VM_PAUSE: i32 = VMM_LOCK_IOC_BASE | 0x0a; constant VM_RESUME (line 64) | pub const VM_RESUME: i32 = VMM_LOCK_IOC_BASE | 0x0b; constant VM_WRLOCK_CYCLE (line 66) | pub const VM_WRLOCK_CYCLE: i32 = VMM_LOCK_IOC_BASE | 0xff; constant VM_GET_GPA_PMAP (line 69) | pub const VM_GET_GPA_PMAP: i32 = VMM_IOC_BASE | 0x01; constant VM_GET_MEMSEG (line 70) | pub const VM_GET_MEMSEG: i32 = VMM_IOC_BASE | 0x02; constant VM_MMAP_GETNEXT (line 71) | pub const VM_MMAP_GETNEXT: i32 = VMM_IOC_BASE | 0x03; constant VM_LAPIC_IRQ (line 73) | pub const VM_LAPIC_IRQ: i32 = VMM_IOC_BASE | 0x04; constant VM_LAPIC_LOCAL_IRQ (line 74) | pub const VM_LAPIC_LOCAL_IRQ: i32 = VMM_IOC_BASE | 0x05; constant VM_LAPIC_MSI (line 75) | pub const VM_LAPIC_MSI: i32 = VMM_IOC_BASE | 0x06; constant VM_IOAPIC_ASSERT_IRQ (line 77) | pub const VM_IOAPIC_ASSERT_IRQ: i32 = VMM_IOC_BASE | 0x07; constant VM_IOAPIC_DEASSERT_IRQ (line 78) | pub const VM_IOAPIC_DEASSERT_IRQ: i32 = VMM_IOC_BASE | 0x08; constant VM_IOAPIC_PULSE_IRQ (line 79) | pub const VM_IOAPIC_PULSE_IRQ: i32 = VMM_IOC_BASE | 0x09; constant VM_ISA_ASSERT_IRQ (line 81) | pub const VM_ISA_ASSERT_IRQ: i32 = VMM_IOC_BASE | 0x0a; constant VM_ISA_DEASSERT_IRQ (line 82) | pub const VM_ISA_DEASSERT_IRQ: i32 = VMM_IOC_BASE | 0x0b; constant VM_ISA_PULSE_IRQ (line 83) | pub const VM_ISA_PULSE_IRQ: i32 = VMM_IOC_BASE | 0x0c; constant VM_ISA_SET_IRQ_TRIGGER (line 84) | pub const VM_ISA_SET_IRQ_TRIGGER: i32 = VMM_IOC_BASE | 0x0d; constant VM_RTC_WRITE (line 86) | pub const VM_RTC_WRITE: i32 = VMM_IOC_BASE | 0x0e; constant VM_RTC_READ (line 87) | pub const VM_RTC_READ: i32 = VMM_IOC_BASE | 0x0f; constant VM_RTC_SETTIME (line 88) | pub const VM_RTC_SETTIME: i32 = VMM_IOC_BASE | 0x10; constant VM_RTC_GETTIME (line 89) | pub const VM_RTC_GETTIME: i32 = VMM_IOC_BASE | 0x11; constant VM_SUSPEND (line 91) | pub const VM_SUSPEND: i32 = VMM_IOC_BASE | 0x12; constant VM_IOAPIC_PINCOUNT (line 93) | pub const VM_IOAPIC_PINCOUNT: i32 = VMM_IOC_BASE | 0x13; constant VM_GET_PPTDEV_LIMITS (line 94) | pub const VM_GET_PPTDEV_LIMITS: i32 = VMM_IOC_BASE | 0x14; constant VM_GET_HPET_CAPABILITIES (line 95) | pub const VM_GET_HPET_CAPABILITIES: i32 = VMM_IOC_BASE | 0x15; constant VM_STATS_IOC (line 97) | pub const VM_STATS_IOC: i32 = VMM_IOC_BASE | 0x16; constant VM_STAT_DESC (line 98) | pub const VM_STAT_DESC: i32 = VMM_IOC_BASE | 0x17; constant VM_INJECT_NMI (line 100) | pub const VM_INJECT_NMI: i32 = VMM_IOC_BASE | 0x18; constant VM_GET_X2APIC_STATE (line 101) | pub const VM_GET_X2APIC_STATE: i32 = VMM_IOC_BASE | 0x19; constant VM_SET_TOPOLOGY (line 102) | pub const VM_SET_TOPOLOGY: i32 = VMM_IOC_BASE | 0x1a; constant VM_GET_TOPOLOGY (line 103) | pub const VM_GET_TOPOLOGY: i32 = VMM_IOC_BASE | 0x1b; constant VM_GET_CPUS (line 104) | pub const VM_GET_CPUS: i32 = VMM_IOC_BASE | 0x1c; constant VM_SUSPEND_CPU (line 105) | pub const VM_SUSPEND_CPU: i32 = VMM_IOC_BASE | 0x1d; constant VM_RESUME_CPU (line 106) | pub const VM_RESUME_CPU: i32 = VMM_IOC_BASE | 0x1e; constant VM_TRACK_DIRTY_PAGES (line 107) | pub const VM_TRACK_DIRTY_PAGES: i32 = VMM_IOC_BASE | 0x20; constant VM_DESC_FPU_AREA (line 108) | pub const VM_DESC_FPU_AREA: i32 = VMM_IOC_BASE | 0x21; constant VM_DATA_READ (line 109) | pub const VM_DATA_READ: i32 = VMM_IOC_BASE | 0x22; constant VM_DATA_WRITE (line 110) | pub const VM_DATA_WRITE: i32 = VMM_IOC_BASE | 0x23; constant VM_SET_AUTODESTRUCT (line 111) | pub const VM_SET_AUTODESTRUCT: i32 = VMM_IOC_BASE | 0x24; constant VM_DESTROY_SELF (line 112) | pub const VM_DESTROY_SELF: i32 = VMM_IOC_BASE | 0x25; constant VM_DESTROY_PENDING (line 113) | pub const VM_DESTROY_PENDING: i32 = VMM_IOC_BASE | 0x26; constant VM_VCPU_BARRIER (line 114) | pub const VM_VCPU_BARRIER: i32 = VMM_IOC_BASE | 0x27; constant VM_NPT_OPERATION (line 115) | pub const VM_NPT_OPERATION: i32 = VMM_IOC_BASE | 0x28; constant VM_DEVMEM_GETOFFSET (line 117) | pub const VM_DEVMEM_GETOFFSET: i32 = VMM_IOC_BASE | 0xff; FILE: crates/bhyve-api/sys/src/lib.rs constant VM_MAXCPU (line 15) | pub const VM_MAXCPU: usize = 32; constant VMM_CURRENT_INTERFACE_VERSION (line 20) | pub const VMM_CURRENT_INTERFACE_VERSION: u32 = 18; FILE: crates/bhyve-api/sys/src/structs.rs constant SEG_ACCESS_S (line 12) | pub const SEG_ACCESS_S: u32 = 1 << 4; constant SEG_ACCESS_P (line 15) | pub const SEG_ACCESS_P: u32 = 1 << 7; constant SEG_ACCESS_AVAIL (line 18) | pub const SEG_ACCESS_AVAIL: u32 = 1 << 12; constant SEG_ACCESS_L (line 19) | pub const SEG_ACCESS_L: u32 = 1 << 13; constant SEG_ACCESS_DB (line 20) | pub const SEG_ACCESS_DB: u32 = 1 << 14; constant SEG_ACCESS_G (line 21) | pub const SEG_ACCESS_G: u32 = 1 << 15; constant SEG_ACCESS_UNUSABLE (line 22) | pub const SEG_ACCESS_UNUSABLE: u32 = 1 << 16; type seg_desc (line 26) | pub struct seg_desc { constant INOUT_IN (line 32) | pub const INOUT_IN: u8 = 1 << 0; type vm_inout (line 36) | pub struct vm_inout { type vm_mmio (line 49) | pub struct vm_mmio { type vm_rwmsr (line 59) | pub struct vm_rwmsr { type vm_exit (line 66) | pub struct vm_exit { type vm_entry (line 75) | pub struct vm_entry { method default (line 98) | fn default() -> Self { method default (line 113) | fn default() -> Self { type vm_exit_vmx (line 120) | pub struct vm_exit_vmx { type vm_exit_svm (line 130) | pub struct vm_exit_svm { type vm_exit_msr (line 138) | pub struct vm_exit_msr { type vm_exit_suspend (line 145) | pub struct vm_exit_suspend { type vm_inst_emul (line 157) | pub struct vm_inst_emul { type vm_paging (line 164) | pub struct vm_paging { type vm_memmap (line 171) | pub struct vm_memmap { constant VM_MEMMAP_F_WIRED (line 180) | pub const VM_MEMMAP_F_WIRED: c_int = 0x01; constant VM_MEMMAP_F_IOMMU (line 182) | pub const VM_MEMMAP_F_IOMMU: c_int = 0x02; type vm_memseg (line 186) | pub struct vm_memseg { type vm_devmem_offset (line 194) | pub struct vm_devmem_offset { type vm_register (line 201) | pub struct vm_register { type vm_seg_desc (line 209) | pub struct vm_seg_desc { type vm_intinfo (line 217) | pub struct vm_intinfo { type vm_exception (line 225) | pub struct vm_exception { type vm_lapic_msi (line 235) | pub struct vm_lapic_msi { type vm_lapic_irq (line 242) | pub struct vm_lapic_irq { type vm_ioapic_irq (line 249) | pub struct vm_ioapic_irq { type vm_isa_irq (line 255) | pub struct vm_isa_irq { type vm_isa_irq_trigger (line 262) | pub struct vm_isa_irq_trigger { type vm_rtc_data (line 270) | pub struct vm_rtc_data { type vm_capability (line 277) | pub struct vm_capability { type vm_nmi (line 286) | pub struct vm_nmi { type vm_suspend (line 292) | pub struct vm_suspend { constant VM_REINIT_F_FORCE_SUSPEND (line 299) | pub const VM_REINIT_F_FORCE_SUSPEND: u64 = 1 << 0; type vm_reinit (line 303) | pub struct vm_reinit { type vm_vcpu_reset (line 309) | pub struct vm_vcpu_reset { constant VRS_HALT (line 316) | pub const VRS_HALT: u32 = 0; constant VRS_INIT (line 317) | pub const VRS_INIT: u32 = 1 << 0; constant VRS_RUN (line 318) | pub const VRS_RUN: u32 = 1 << 1; constant VRS_PEND_INIT (line 319) | pub const VRS_PEND_INIT: u32 = 1 << 14; constant VRS_PEND_SIPI (line 320) | pub const VRS_PEND_SIPI: u32 = 1 << 15; type vm_run_state (line 324) | pub struct vm_run_state { type vm_fpu_state (line 333) | pub struct vm_fpu_state { type vm_fpu_desc_entry (line 341) | pub struct vm_fpu_desc_entry { type vm_fpu_desc (line 349) | pub struct vm_fpu_desc { method default (line 355) | fn default() -> Self { type vmm_dirty_tracker (line 366) | pub struct vmm_dirty_tracker { constant VDX_FLAG_READ_COPYIN (line 373) | pub const VDX_FLAG_READ_COPYIN: u32 = 1 << 0; constant VDX_FLAG_WRITE_COPYOUT (line 374) | pub const VDX_FLAG_WRITE_COPYOUT: u32 = 1 << 1; constant VM_DATA_XFER_LIMIT (line 377) | pub const VM_DATA_XFER_LIMIT: u32 = 8192; type vm_data_xfer (line 381) | pub struct vm_data_xfer { method default (line 391) | fn default() -> Self { constant VCE_FLAG_MATCH_INDEX (line 405) | pub const VCE_FLAG_MATCH_INDEX: u32 = 1 << 0; type vcpu_cpuid_entry (line 409) | pub struct vcpu_cpuid_entry { method match_idx (line 420) | fn match_idx(&self) -> bool { method eval_sort (line 446) | pub fn eval_sort(a: &Self, b: &Self) -> std::cmp::Ordering { constant VCC_FLAG_LEGACY_HANDLING (line 462) | pub const VCC_FLAG_LEGACY_HANDLING: u32 = 1 << 0; constant VCC_FLAG_INTEL_FALLBACK (line 467) | pub const VCC_FLAG_INTEL_FALLBACK: u32 = 1 << 1; type vm_vcpu_cpuid_config (line 471) | pub struct vm_vcpu_cpuid_config { method default (line 479) | fn default() -> Self { type vm_legacy_cpuid (line 492) | pub struct vm_legacy_cpuid { constant VM_MAX_NAMELEN (line 500) | pub const VM_MAX_NAMELEN: usize = 128; constant VM_MAX_SEG_NAMELEN (line 501) | pub const VM_MAX_SEG_NAMELEN: usize = 128; function validate_name (line 505) | fn validate_name(value: &[u8]) -> Result<[u8; VM_MAX_NAMELEN]> { type vm_create_req (line 521) | pub struct vm_create_req { method new (line 531) | pub fn new(name: &[u8]) -> Result { method default (line 526) | fn default() -> Self { constant VCF_RESERVOIR_MEM (line 540) | pub const VCF_RESERVOIR_MEM: u64 = 1; constant VCF_TRACK_DIRTY (line 543) | pub const VCF_TRACK_DIRTY: u64 = 1 << 1; type vm_destroy_req (line 547) | pub struct vm_destroy_req { method new (line 556) | pub fn new(name: &[u8]) -> Result { method default (line 551) | fn default() -> Self { type vmm_resv_query (line 563) | pub struct vmm_resv_query { type vmm_resv_target (line 572) | pub struct vmm_resv_target { type vm_npt_operation (line 587) | pub struct vm_npt_operation { method default (line 594) | fn default() -> Self { constant VNO_OP_RESET_DIRTY (line 606) | pub const VNO_OP_RESET_DIRTY: u32 = 0x1; constant VNO_OP_SET_DIRTY (line 607) | pub const VNO_OP_SET_DIRTY: u32 = 0x2; constant VNO_OP_GET_DIRTY (line 608) | pub const VNO_OP_GET_DIRTY: u32 = 0x3; constant VNO_OP_GET_TRACK_DIRTY (line 609) | pub const VNO_OP_GET_TRACK_DIRTY: u32 = 0x20; constant VNO_OP_EN_TRACK_DIRTY (line 610) | pub const VNO_OP_EN_TRACK_DIRTY: u32 = 0x21; constant VNO_OP_DIS_TRACK_DIRTY (line 611) | pub const VNO_OP_DIS_TRACK_DIRTY: u32 = 0x22; constant VNO_FLAG_BITMAP_IN (line 612) | pub const VNO_FLAG_BITMAP_IN: u32 = 1 << 30; constant VNO_FLAG_BITMAP_OUT (line 613) | pub const VNO_FLAG_BITMAP_OUT: u32 = 1 << 31; FILE: crates/bhyve-api/sys/src/vmm_data.rs constant VDC_VERSION (line 8) | pub const VDC_VERSION: u16 = 1; constant VDC_REGISTER (line 12) | pub const VDC_REGISTER: u16 = 2; constant VDC_MSR (line 13) | pub const VDC_MSR: u16 = 3; constant VDC_FPU (line 14) | pub const VDC_FPU: u16 = 4; constant VDC_LAPIC (line 15) | pub const VDC_LAPIC: u16 = 5; constant VDC_VMM_ARCH (line 16) | pub const VDC_VMM_ARCH: u16 = 6; constant VDC_PMU_AMD (line 17) | pub const VDC_PMU_AMD: u16 = 14; constant VDC_IOAPIC (line 21) | pub const VDC_IOAPIC: u16 = 7; constant VDC_ATPIT (line 22) | pub const VDC_ATPIT: u16 = 8; constant VDC_ATPIC (line 23) | pub const VDC_ATPIC: u16 = 9; constant VDC_HPET (line 24) | pub const VDC_HPET: u16 = 10; constant VDC_PM_TIMER (line 25) | pub const VDC_PM_TIMER: u16 = 11; constant VDC_RTC (line 26) | pub const VDC_RTC: u16 = 12; constant VDC_VMM_TIME (line 27) | pub const VDC_VMM_TIME: u16 = 13; type vdi_version_entry_v1 (line 31) | pub struct vdi_version_entry_v1 { type vdi_field_entry_v1 (line 40) | pub struct vdi_field_entry_v1 { method new (line 50) | pub const fn new(ident: u32, value: u64) -> Self { type vdi_lapic_page_v1 (line 57) | pub struct vdi_lapic_page_v1 { type vdi_lapic_v1 (line 83) | pub struct vdi_lapic_v1 { type vdi_ioapic_v1 (line 92) | pub struct vdi_ioapic_v1 { type vdi_atpit_channel_v1 (line 101) | pub struct vdi_atpit_channel_v1 { type vdi_atpit_v1 (line 121) | pub struct vdi_atpit_v1 { type vdi_atpic_chip_v1 (line 127) | pub struct vdi_atpic_chip_v1 { type vdi_atpic_v1 (line 151) | pub struct vdi_atpic_v1 { type vdi_hpet_timer_v1 (line 157) | pub struct vdi_hpet_timer_v1 { type vdi_hpet_v1 (line 167) | pub struct vdi_hpet_v1 { type vdi_pm_timer_v1 (line 178) | pub struct vdi_pm_timer_v1 { type vdi_rtc_v1 (line 187) | pub struct vdi_rtc_v1 { method default (line 195) | fn default() -> Self { type vdi_rtc_v2 (line 208) | pub struct vdi_rtc_v2 { method default (line 215) | fn default() -> Self { type vdi_time_info_v1 (line 229) | pub struct vdi_time_info_v1 { constant VAI_VM_IS_PAUSED (line 243) | pub const VAI_VM_IS_PAUSED: u32 = 4; constant VAI_TSC_BOOT_OFFSET (line 249) | pub const VAI_TSC_BOOT_OFFSET: u32 = 1; constant VAI_BOOT_HRTIME (line 251) | pub const VAI_BOOT_HRTIME: u32 = 2; constant VAI_TSC_FREQ (line 253) | pub const VAI_TSC_FREQ: u32 = 3; constant VAI_PEND_NMI (line 258) | pub const VAI_PEND_NMI: u32 = 10; constant VAI_PEND_EXTINT (line 260) | pub const VAI_PEND_EXTINT: u32 = 11; constant VAI_PEND_EXCP (line 262) | pub const VAI_PEND_EXCP: u32 = 12; constant VAI_PEND_INTINFO (line 264) | pub const VAI_PEND_INTINFO: u32 = 13; type vdi_pmu_amd_v1 (line 270) | pub struct vdi_pmu_amd_v1 { FILE: crates/cpuid-profile-config/src/lib.rs type CpuVendor (line 11) | pub enum CpuVendor { type CpuidProfile (line 17) | pub struct CpuidProfile { type CpuidEntry (line 25) | pub struct CpuidEntry { type CpuidParseError (line 36) | pub enum CpuidParseError { type Error (line 44) | type Error = CpuidParseError; function try_from (line 46) | fn try_from(value: &CpuidProfile) -> Result { FILE: crates/cpuid-utils/src/bits.rs constant STANDARD_BASE_LEAF (line 11) | pub const STANDARD_BASE_LEAF: u32 = 0; constant HYPERVISOR_BASE_LEAF (line 12) | pub const HYPERVISOR_BASE_LEAF: u32 = 0x4000_0000; constant EXTENDED_BASE_LEAF (line 13) | pub const EXTENDED_BASE_LEAF: u32 = 0x8000_0000; constant MAX_REASONABLE_SUBLEAVES (line 21) | pub const MAX_REASONABLE_SUBLEAVES: u32 = 0x20; type AmdExtLeaf1DCacheType (line 223) | pub enum AmdExtLeaf1DCacheType { method is_null (line 232) | pub fn is_null(&self) -> bool { type Error (line 238) | type Error = (); method try_from (line 243) | fn try_from(value: u32) -> Result { method cache_type (line 256) | pub fn cache_type(&self) -> AmdExtLeaf1DCacheType { FILE: crates/cpuid-utils/src/host.rs type GetHostCpuidError (line 18) | pub enum GetHostCpuidError { type Vm (line 31) | struct Vm(bhyve_api::VmmFd); method new (line 34) | fn new() -> Result { method query (line 54) | fn query( method drop (line 75) | fn drop(&mut self) { function query (line 82) | pub fn query(leaf: CpuidIdent) -> CpuidValues { function query (line 90) | pub fn query(leaf: CpuidIdent) -> CpuidValues { function collect_cpuid (line 94) | fn collect_cpuid( type CpuidSource (line 283) | pub enum CpuidSource { function query_complete (line 295) | pub fn query_complete( FILE: crates/cpuid-utils/src/instance_spec.rs function into_instance_spec_cpuid (line 12) | pub fn into_instance_spec_cpuid(self) -> Cpuid { function from (line 18) | fn from(value: CpuidMap) -> Self { type Error (line 39) | type Error = CpuidMapConversionError; method try_from (line 49) | fn try_from( function subleaf_aliasing_forbidden (line 84) | fn subleaf_aliasing_forbidden() { FILE: crates/cpuid-utils/src/lib.rs type CpuidSubleafMap (line 67) | type CpuidSubleafMap = BTreeMap; type CpuidMapInsertResult (line 68) | type CpuidMapInsertResult = Result, CpuidMapInsertEr... type Subleaves (line 72) | enum Subleaves { type CpuidMapInsertError (line 85) | pub enum CpuidMapInsertError { type CpuidMap (line 117) | pub struct CpuidMap(BTreeMap); method get (line 122) | pub fn get(&self, ident: CpuidIdent) -> Option<&CpuidValues> { method get_mut (line 138) | pub fn get_mut(&mut self, ident: CpuidIdent) -> Option<&mut CpuidValue... method contains_leaf (line 153) | pub fn contains_leaf(&self, leaf: u32) -> bool { method insert_leaf_no_subleaf (line 157) | fn insert_leaf_no_subleaf( method insert_leaf_subleaf (line 176) | fn insert_leaf_subleaf( method insert (line 211) | pub fn insert( method remove (line 227) | pub fn remove(&mut self, ident: CpuidIdent) -> Option { method remove_leaf (line 270) | pub fn remove_leaf(&mut self, leaf: u32) { method retain (line 275) | pub fn retain(&mut self, mut f: F) method clear (line 291) | pub fn clear(&mut self) { method is_empty (line 296) | pub fn is_empty(&self) -> bool { method len (line 301) | pub fn len(&self) -> usize { method iter (line 315) | pub fn iter(&self) -> CpuidMapIterator<'_> { type CpuidMapIterator (line 321) | pub struct CpuidMapIterator<'a> { function new (line 327) | fn new(map: &'a CpuidMap) -> Self { type Item (line 333) | type Item = (CpuidIdent, CpuidValues); method next (line 335) | fn next(&mut self) -> Option { type CpuidSet (line 378) | pub struct CpuidSet { method new (line 412) | pub fn new(vendor: CpuidVendor) -> Self { method from_map (line 418) | pub fn from_map(map: CpuidMap, vendor: CpuidVendor) -> Self { method vendor (line 423) | pub fn vendor(&self) -> CpuidVendor { method new_host (line 434) | pub fn new_host() -> Self { method insert (line 441) | pub fn insert( method get (line 450) | pub fn get(&self, ident: CpuidIdent) -> Option<&CpuidValues> { method get_mut (line 455) | pub fn get_mut(&mut self, ident: CpuidIdent) -> Option<&mut CpuidValue... method contains_leaf (line 460) | pub fn contains_leaf(&self, leaf: u32) -> bool { method remove_leaf (line 465) | pub fn remove_leaf(&mut self, leaf: u32) { method retain (line 470) | pub fn retain(&mut self, f: F) method is_empty (line 478) | pub fn is_empty(&self) -> bool { method iter (line 483) | pub fn iter(&self) -> CpuidMapIterator<'_> { method is_equivalent_to (line 490) | pub fn is_equivalent_to( method default (line 385) | fn default() -> Self { type CpuidSetMismatch (line 392) | pub enum CpuidSetMismatch { function from (line 533) | fn from(value: CpuidSet) -> Self { type CpuidMapConversionError (line 558) | pub enum CpuidMapConversionError { constant STANDARD_LEAVES (line 570) | pub const STANDARD_LEAVES: RangeInclusive = 0..=0xFFFF; constant EXTENDED_LEAVES (line 574) | pub const EXTENDED_LEAVES: RangeInclusive = 0x8000_0000..=0x8000_FFFF; function insert_leaf_then_subleaf_fails (line 583) | fn insert_leaf_then_subleaf_fails() { function insert_subleaf_then_leaf_fails (line 595) | fn insert_subleaf_then_leaf_fails() { function insert_leaf_then_remove_then_insert_subleaf (line 607) | fn insert_leaf_then_remove_then_insert_subleaf() { function insert_multiple_subleaves (line 622) | fn insert_multiple_subleaves() { function leaf_subleaf_removal (line 634) | fn leaf_subleaf_removal() { type MapEntry (line 716) | enum MapEntry { function map_entry_strategy (line 731) | fn map_entry_strategy() -> impl Strategy { FILE: crates/dladm/src/lib.rs type Handle (line 16) | pub struct Handle { method new (line 20) | pub fn new() -> Result { method query_link (line 28) | pub fn query_link(&self, name: &str) -> Result { method get_mtu (line 72) | fn get_mtu(name: &str) -> Result { method get_vnic_mac (line 92) | fn get_vnic_mac(name: &str, mac: &mut [u8]) -> Result<()> { method get_misc_mac (line 123) | fn get_misc_mac( method handle_dladm_err (line 187) | fn handle_dladm_err(v: i32) -> Result<()> { method drop (line 197) | fn drop(&mut self) { constant ETHERADDRL (line 203) | const ETHERADDRL: usize = 6; type LinkInfo (line 206) | pub struct LinkInfo { FILE: crates/dladm/src/sys.rs function dladm_open (line 11) | pub fn dladm_open(handle: *mut dladm_handle_t) -> c_int; function dladm_close (line 12) | pub fn dladm_close(handle: dladm_handle_t); function dladm_name2info (line 13) | pub fn dladm_name2info( function dladm_walk_macaddr (line 22) | pub fn dladm_walk_macaddr( function dladm_open (line 38) | pub unsafe extern "C" fn dladm_open(handle: *mut dladm_handle_t) -> c_int { function dladm_close (line 41) | pub unsafe extern "C" fn dladm_close(handle: dladm_handle_t) { function dladm_name2info (line 44) | pub unsafe extern "C" fn dladm_name2info( function dladm_walk_macaddr (line 55) | pub unsafe extern "C" fn dladm_walk_macaddr( type dladm_handle (line 71) | pub enum dladm_handle {} type dladm_handle_t (line 72) | pub type dladm_handle_t = *mut dladm_handle; type datalink_id_t (line 73) | pub type datalink_id_t = u32; type dladm_macaddr_attr_t (line 75) | pub struct dladm_macaddr_attr_t { type boolean_t (line 84) | pub enum boolean_t { constant MAXMACADDRLEN (line 89) | const MAXMACADDRLEN: usize = 20; constant MAXNAMELEN (line 90) | const MAXNAMELEN: usize = 256; type datalink_class (line 94) | pub enum datalink_class { type dladm_status (line 109) | pub enum dladm_status { FILE: crates/nvpair/header-check/build.rs function main (line 7) | fn main() { FILE: crates/nvpair/src/lib.rs type NvList (line 12) | pub struct NvList(NonNull); method new (line 15) | pub fn new() -> Self { method pack (line 21) | pub fn pack(&mut self) -> Packed { method unpack (line 29) | pub fn unpack(buf: &mut [u8]) -> std::io::Result { method unpack_ptr (line 33) | pub fn unpack_ptr(buf: *mut u8, len: usize) -> std::io::Result { method add (line 45) | pub fn add<'a>( method add_name_value (line 53) | pub fn add_name_value(&mut self, name: NvName, value: NvData) { method drop (line 105) | fn drop(&mut self) { type Packed (line 112) | pub struct Packed { method as_ptr (line 117) | pub fn as_ptr(&self) -> *const u8 { method as_mut_ptr (line 120) | pub fn as_mut_ptr(&mut self) -> *mut u8 { method as_ref (line 125) | fn as_ref(&self) -> &[u8] { method drop (line 130) | fn drop(&mut self) { type NvData (line 152) | pub enum NvData<'a> { type NvName (line 179) | pub enum NvName<'a> { function as_ptr (line 184) | pub fn as_ptr(&self) -> *const i8 { function as_ref (line 192) | fn as_ref(&self) -> &[u8] { method clone (line 200) | fn clone(&self) -> Self { function from (line 208) | fn from(value: &'a str) -> Self { function from (line 226) | fn from(value: &'a CStr) -> Self { FILE: crates/nvpair/sys/src/lib.rs type data_type_t (line 13) | pub enum data_type_t { type nvpair_t (line 46) | pub struct nvpair_t { method NVP_NAME (line 59) | pub const unsafe fn NVP_NAME(nvp: *mut nvpair_t) -> *mut c_char { method NVP_VALUE (line 67) | pub unsafe fn NVP_VALUE(nvp: *mut nvpair_t) -> *mut c_char { type nvlist_t (line 76) | pub struct nvlist_t { constant NV_VERSION (line 84) | pub const NV_VERSION: i32 = 0; constant NV_ENCODE_NATIVE (line 86) | pub const NV_ENCODE_NATIVE: u32 = 0; constant NV_ENCODE_XDR (line 87) | pub const NV_ENCODE_XDR: u32 = 1; constant NV_UNIQUE_NAME (line 89) | pub const NV_UNIQUE_NAME: u32 = 0x1; constant NV_UNIQUE_NAME_TYPE (line 90) | pub const NV_UNIQUE_NAME_TYPE: u32 = 0x2; constant NV_FLAG_NOENTOK (line 92) | pub const NV_FLAG_NOENTOK: u32 = 0x1; function NV_ALIGN (line 94) | pub const fn NV_ALIGN(addr: usize) -> usize { type boolean_t (line 99) | pub enum boolean_t { method from (line 104) | fn from(value: bool) -> Self { function from (line 112) | fn from(value: boolean_t) -> Self { function nvlist_remove (line 122) | pub fn nvlist_remove( function nvlist_remove_all (line 127) | pub fn nvlist_remove_all(nvl: *mut nvlist_t, name: *const c_char) -> c_int; function nvlist_remove_nvpair (line 128) | pub fn nvlist_remove_nvpair( function nvlist_lookup_nvpair (line 132) | pub fn nvlist_lookup_nvpair( function nvlist_next_nvpair (line 138) | pub fn nvlist_next_nvpair( function nvlist_prev_nvpair (line 142) | pub fn nvlist_prev_nvpair( function nvlist_exists (line 147) | pub fn nvlist_exists(nvl: *mut nvlist_t, nvp: *const c_char) -> boolean_t; function nvlist_empty (line 148) | pub fn nvlist_empty(nvl: *mut nvlist_t) -> boolean_t; function nvlist_unpack (line 150) | pub fn nvlist_unpack( function fnvlist_alloc (line 157) | pub fn fnvlist_alloc() -> *mut nvlist_t; function fnvlist_free (line 158) | pub fn fnvlist_free(nvl: *mut nvlist_t); function fnvlist_size (line 159) | pub fn fnvlist_size(nvl: *mut nvlist_t) -> size_t; function fnvlist_pack (line 160) | pub fn fnvlist_pack(nvl: *mut nvlist_t, sizep: *mut size_t) -> *mut c_char; function fnvlist_pack_free (line 161) | pub fn fnvlist_pack_free(packed: *mut c_char, size: size_t); function fnvlist_unpack (line 162) | pub fn fnvlist_unpack(buf: *mut c_char, size: size_t) -> *mut nvlist_t; function fnvlist_dup (line 163) | pub fn fnvlist_dup(nvl: *mut nvlist_t) -> *mut nvlist_t; function fnvlist_merge (line 164) | pub fn fnvlist_merge(dst_nvl: *mut nvlist_t, src_nvl: *mut nvlist_t); function fnvlist_num_pairs (line 165) | pub fn fnvlist_num_pairs(nvl: *mut nvlist_t) -> size_t; function fnvlist_add_boolean (line 167) | pub fn fnvlist_add_boolean(nvl: *mut nvlist_t, name: *const c_char); function fnvlist_add_boolean_value (line 168) | pub fn fnvlist_add_boolean_value( function fnvlist_add_byte (line 173) | pub fn fnvlist_add_byte(nvl: *mut nvlist_t, name: *const c_char, val: u8); function fnvlist_add_int8 (line 174) | pub fn fnvlist_add_int8(nvl: *mut nvlist_t, name: *const c_char, val: i8); function fnvlist_add_uint8 (line 175) | pub fn fnvlist_add_uint8(nvl: *mut nvlist_t, name: *const c_char, val: u8); function fnvlist_add_int16 (line 176) | pub fn fnvlist_add_int16(nvl: *mut nvlist_t, name: *const c_char, val: i... function fnvlist_add_uint16 (line 177) | pub fn fnvlist_add_uint16( function fnvlist_add_int32 (line 182) | pub fn fnvlist_add_int32(nvl: *mut nvlist_t, name: *const c_char, val: i... function fnvlist_add_uint32 (line 183) | pub fn fnvlist_add_uint32( function fnvlist_add_int64 (line 188) | pub fn fnvlist_add_int64(nvl: *mut nvlist_t, name: *const c_char, val: i... function fnvlist_add_uint64 (line 189) | pub fn fnvlist_add_uint64( function fnvlist_add_string (line 194) | pub fn fnvlist_add_string( function fnvlist_add_nvlist (line 199) | pub fn fnvlist_add_nvlist( function fnvlist_add_nvpair (line 204) | pub fn fnvlist_add_nvpair(nvl: *mut nvlist_t, val: *mut nvpair_t); FILE: crates/pbind/src/lib.rs type id_t (line 16) | pub type id_t = i32; type processorid_t (line 19) | pub type processorid_t = i32; type idtype_t (line 22) | pub type idtype_t = i32; type IdType (line 29) | pub enum IdType { function online_cpus (line 52) | pub fn online_cpus() -> Result { function bind_lwp (line 67) | pub fn bind_lwp(bind_cpu: processorid_t) -> Result<(), Error> { function bind_lwp (line 100) | pub fn bind_lwp(_bind_cpu: processorid_t) -> Result<(), Error> { FILE: crates/propolis-api-types-versions/src/add_vsock/api.rs type InstanceInitializationMethod (line 20) | pub enum InstanceInitializationMethod { method from (line 40) | fn from(old: v2::api::InstanceInitializationMethod) -> Self { type InstanceEnsureRequest (line 32) | pub struct InstanceEnsureRequest { method from (line 59) | fn from(old: v2::api::InstanceEnsureRequest) -> Self { FILE: crates/propolis-api-types-versions/src/add_vsock/components/devices.rs type VirtioSocket (line 15) | pub struct VirtioSocket { FILE: crates/propolis-api-types-versions/src/add_vsock/instance_spec.rs type Component (line 28) | pub enum Component { method from (line 132) | fn from(old: V1Component) -> Self { type InstanceSpec (line 50) | pub struct InstanceSpec { method from (line 191) | fn from(old: v2::instance_spec::InstanceSpec) -> Self { type InstanceSpecStatus (line 58) | pub enum InstanceSpecStatus { type InstanceSpecGetResponse (line 64) | pub struct InstanceSpecGetResponse { type InvalidV1Component (line 72) | pub struct InvalidV1Component(Component); type Error (line 75) | type Error = InvalidV1Component; method try_from (line 77) | fn try_from(value: Component) -> Result { function from (line 116) | fn from(new: InstanceSpec) -> Self { function from (line 168) | fn from(new: InstanceSpecStatus) -> Self { function from (line 181) | fn from(new: InstanceSpecGetResponse) -> Self { FILE: crates/propolis-api-types-versions/src/crucible_volume_info/disk.rs type VolumeStatus (line 11) | pub struct VolumeStatus { FILE: crates/propolis-api-types-versions/src/impls/instance.rs method vm_name (line 11) | pub fn vm_name(&self) -> String { method fmt (line 17) | fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { type Err (line 23) | type Err = &'static str; method from_str (line 24) | fn from_str(s: &str) -> Result { FILE: crates/propolis-api-types-versions/src/impls/instance_spec.rs method fmt (line 12) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Err (line 21) | type Err = core::convert::Infallible; method from_str (line 22) | fn from_str(s: &str) -> Result { method from (line 28) | fn from(s: &str) -> Self { method from (line 37) | fn from(value: String) -> Self { method from (line 46) | fn from(value: Uuid) -> Self { type TestMap (line 61) | type TestMap = BTreeMap; function spec_key_uuid_roundtrip (line 66) | fn spec_key_uuid_roundtrip() { function spec_key_uuid_string_deserializes_as_uuid_variant (line 88) | fn spec_key_uuid_string_deserializes_as_uuid_variant() { FILE: crates/propolis-api-types-versions/src/initial/components/backends.rs type CrucibleStorageBackend (line 16) | pub struct CrucibleStorageBackend { method fmt (line 32) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type FileStorageBackend (line 45) | pub struct FileStorageBackend { type BlobStorageBackend (line 63) | pub struct BlobStorageBackend { method fmt (line 72) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type VirtioNetworkBackend (line 83) | pub struct VirtioNetworkBackend { type DlpiNetworkBackend (line 91) | pub struct DlpiNetworkBackend { FILE: crates/propolis-api-types-versions/src/initial/components/board.rs type I440Fx (line 20) | pub struct I440Fx { type Chipset (line 36) | pub enum Chipset { method default (line 42) | fn default() -> Self { type Cpuid (line 50) | pub struct Cpuid { type CpuidEntry (line 83) | pub struct CpuidEntry { type HyperVFeatureFlag (line 124) | pub enum HyperVFeatureFlag { type GuestHypervisorInterface (line 136) | pub enum GuestHypervisorInterface { method is_default (line 148) | pub(crate) fn is_default(&self) -> bool { type Board (line 156) | pub struct Board { FILE: crates/propolis-api-types-versions/src/initial/components/devices.rs type VirtioDisk (line 15) | pub struct VirtioDisk { type NvmeDisk (line 26) | pub struct NvmeDisk { type VirtioNic (line 41) | pub struct VirtioNic { type SerialPortNumber (line 61) | pub enum SerialPortNumber { type SerialPort (line 73) | pub struct SerialPort { type PciPciBridge (line 83) | pub struct PciPciBridge { type QemuPvpanic (line 105) | pub struct QemuPvpanic { type BootSettings (line 116) | pub struct BootSettings { type BootOrderEntry (line 123) | pub struct BootOrderEntry { type SoftNpuPciPort (line 141) | pub struct SoftNpuPciPort { type SoftNpuPort (line 152) | pub struct SoftNpuPort { type SoftNpuP9 (line 167) | pub struct SoftNpuP9 { type P9fs (line 178) | pub struct P9fs { type MigrationFailureInjector (line 200) | pub struct MigrationFailureInjector { FILE: crates/propolis-api-types-versions/src/initial/disk.rs type InstanceVCRReplace (line 12) | pub struct InstanceVCRReplace { type SnapshotRequestPathParams (line 18) | pub struct SnapshotRequestPathParams { type VCRRequestPathParams (line 25) | pub struct VCRRequestPathParams { type VolumeStatusPathParams (line 31) | pub struct VolumeStatusPathParams { type VolumeStatus (line 36) | pub struct VolumeStatus { FILE: crates/propolis-api-types-versions/src/initial/instance.rs type InstanceMetadata (line 23) | pub struct InstanceMetadata { type InstanceProperties (line 33) | pub struct InstanceProperties { type InstanceState (line 48) | pub enum InstanceState { type Instance (line 62) | pub struct Instance { type InstanceGetResponse (line 68) | pub struct InstanceGetResponse { type InstanceStateChange (line 74) | pub struct InstanceStateChange { type InstanceStateRequested (line 79) | pub enum InstanceStateRequested { type InstanceStateMonitorRequest (line 86) | pub struct InstanceStateMonitorRequest { type InstanceStateMonitorResponse (line 91) | pub struct InstanceStateMonitorResponse { type ReplacementComponent (line 124) | pub enum ReplacementComponent { type InstanceInitializationMethod (line 132) | pub enum InstanceInitializationMethod { type InstanceEnsureRequest (line 144) | pub struct InstanceEnsureRequest { type InstanceEnsureResponse (line 150) | pub struct InstanceEnsureResponse { type InstanceNameParams (line 156) | pub struct InstanceNameParams { type InstancePathParams (line 162) | pub struct InstancePathParams { type ErrorCode (line 170) | pub enum ErrorCode { FILE: crates/propolis-api-types-versions/src/initial/instance_spec.rs type SpecKey (line 55) | pub enum SpecKey { method schema_name (line 63) | fn schema_name() -> String { method json_schema (line 67) | fn json_schema( type Component (line 124) | pub enum Component { type InstanceSpec (line 146) | pub struct InstanceSpec { type VersionedInstanceSpec (line 176) | pub enum VersionedInstanceSpec { type InstanceSpecStatus (line 182) | pub enum InstanceSpecStatus { type InstanceSpecGetResponse (line 188) | pub struct InstanceSpecGetResponse { FILE: crates/propolis-api-types-versions/src/initial/migration.rs type InstanceMigrateInitiateRequest (line 15) | pub struct InstanceMigrateInitiateRequest { type InstanceMigrateInitiateResponse (line 22) | pub struct InstanceMigrateInitiateResponse { type InstanceMigrateStartRequest (line 28) | pub struct InstanceMigrateStartRequest { type InstanceMigrationStatus (line 34) | pub struct InstanceMigrationStatus { type InstanceMigrateStatusResponse (line 55) | pub struct InstanceMigrateStatusResponse { type MigrationState (line 77) | pub enum MigrationState { FILE: crates/propolis-api-types-versions/src/initial/serial.rs type InstanceSerialConsoleHistoryRequest (line 14) | pub struct InstanceSerialConsoleHistoryRequest { type InstanceSerialConsoleHistoryResponse (line 32) | pub struct InstanceSerialConsoleHistoryResponse { type InstanceSerialConsoleStreamRequest (line 45) | pub struct InstanceSerialConsoleStreamRequest { type InstanceSerialConsoleControlMessage (line 67) | pub enum InstanceSerialConsoleControlMessage { FILE: crates/propolis-api-types-versions/src/programmable_smbios/api.rs type InstanceInitializationMethod (line 20) | pub enum InstanceInitializationMethod { method from (line 40) | fn from(old: v1::instance::InstanceInitializationMethod) -> Self { type InstanceEnsureRequest (line 32) | pub struct InstanceEnsureRequest { method from (line 59) | fn from(old: v1::instance::InstanceEnsureRequest) -> Self { FILE: crates/propolis-api-types-versions/src/programmable_smbios/instance_spec.rs type SmbiosType1Input (line 19) | pub struct SmbiosType1Input { type InstanceSpec (line 27) | pub struct InstanceSpec { method from (line 79) | fn from(old: v1::instance_spec::InstanceSpec) -> Self { type InstanceSpecStatus (line 35) | pub enum InstanceSpecStatus { type InstanceSpecGetResponse (line 41) | pub struct InstanceSpecGetResponse { function from (line 48) | fn from(new: InstanceSpec) -> Self { function from (line 54) | fn from(new: InstanceSpecStatus) -> Self { function from (line 69) | fn from(new: InstanceSpecGetResponse) -> Self { FILE: crates/propolis-config-toml/src/lib.rs type Config (line 23) | pub struct Config { method default (line 40) | fn default() -> Self { type Chipset (line 53) | pub struct Chipset { method get_string (line 59) | pub fn get_string>(&self, key: S) -> Option<&str> { method get (line 63) | pub fn get>(&self, key: S) -> Option { type PciBridge (line 70) | pub struct PciBridge { type Device (line 88) | pub struct Device { method get_string (line 96) | pub fn get_string>(&self, key: S) -> Option<&str> { method get (line 100) | pub fn get>(&self, key: S) -> Option { type BlockOpts (line 106) | pub struct BlockOpts { type BlockDevice (line 114) | pub struct BlockDevice { type ParseError (line 127) | pub enum ParseError { function parse (line 142) | pub fn parse>(path: P) -> Result { function config_can_be_serialized_as_toml (line 153) | fn config_can_be_serialized_as_toml() { function parse_basic_config (line 161) | fn parse_basic_config() { FILE: crates/propolis-config-toml/src/spec.rs constant MIGRATION_FAILURE_DEVICE_NAME (line 23) | pub const MIGRATION_FAILURE_DEVICE_NAME: &str = "test-migration-failure"; type TomlToSpecError (line 26) | pub enum TomlToSpecError { type SpecConfig (line 74) | pub struct SpecConfig { type Error (line 101) | type Error = TomlToSpecError; method try_from (line 103) | fn try_from(config: &super::Config) -> Result { function spec_component_add (line 87) | fn spec_component_add( function parse_storage_device_from_config (line 294) | fn parse_storage_device_from_config( function parse_storage_backend_from_config (line 348) | fn parse_storage_backend_from_config( type ParsedNic (line 392) | struct ParsedNic { function parse_network_device_from_config (line 398) | fn parse_network_device_from_config( function parse_p9fs_from_config (line 422) | fn parse_p9fs_from_config( function parse_vsock_from_config (line 445) | fn parse_vsock_from_config( function translate_cpuid_entry (line 465) | fn translate_cpuid_entry( function toml_cpuid_to_spec_cpuid (line 483) | pub fn toml_cpuid_to_spec_cpuid( FILE: crates/propolis-server-api/src/lib.rs type PropolisServerApi (line 45) | pub trait PropolisServerApi { method instance_ensure (line 53) | async fn instance_ensure( method instance_ensure_v2 (line 67) | async fn instance_ensure_v2( method instance_ensure_v1 (line 87) | async fn instance_ensure_v1( method instance_spec_get (line 106) | async fn instance_spec_get( method instance_spec_get_v2 (line 119) | async fn instance_spec_get_v2( method instance_spec_get_v1 (line 136) | async fn instance_spec_get_v1( method instance_get (line 151) | async fn instance_get( method instance_state_monitor (line 159) | async fn instance_state_monitor( method instance_state_put (line 171) | async fn instance_state_put( method instance_serial_history_get (line 180) | async fn instance_serial_history_get( method instance_serial (line 192) | async fn instance_serial( method instance_vnc (line 207) | async fn instance_vnc( method instance_migrate_start (line 241) | async fn instance_migrate_start( method instance_migrate_status (line 251) | async fn instance_migrate_status( method instance_issue_crucible_snapshot_request (line 263) | async fn instance_issue_crucible_snapshot_request( method disk_volume_status_v1 (line 275) | async fn disk_volume_status_v1( method disk_volume_status (line 286) | async fn disk_volume_status( method instance_issue_crucible_vcr_request (line 296) | async fn instance_issue_crucible_vcr_request( method instance_issue_nmi (line 307) | async fn instance_issue_nmi( FILE: crates/propolis-types/src/lib.rs constant PCI_DEVICES_PER_BUS (line 19) | const PCI_DEVICES_PER_BUS: u8 = 32; constant PCI_FUNCTIONS_PER_DEVICE (line 20) | const PCI_FUNCTIONS_PER_DEVICE: u8 = 8; type PciPath (line 29) | pub struct PciPath { method new (line 36) | pub fn new( method bus (line 65) | pub fn bus(&self) -> u8 { method device (line 70) | pub fn device(&self) -> u8 { method function (line 75) | pub fn function(&self) -> u8 { method deserialize (line 115) | fn deserialize(deserializer: D) -> Result type Err (line 81) | type Err = std::io::Error; method from_str (line 82) | fn from_str(s: &str) -> Result { method fmt (line 108) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function pci_path_from_str (line 141) | fn pci_path_from_str() { function check_pci_path_deserialization (line 167) | fn check_pci_path_deserialization( function pci_path_deserialization (line 185) | fn pci_path_deserialization() { function pci_path_deserialization_exhaustive (line 207) | fn pci_path_deserialization_exhaustive() { type CpuidIdent (line 240) | pub struct CpuidIdent { method leaf (line 255) | pub fn leaf(leaf: u32) -> Self { method subleaf (line 260) | pub fn subleaf(leaf: u32, subleaf: u32) -> Self { type CpuidValues (line 277) | pub struct CpuidValues { method iter_mut (line 286) | pub fn iter_mut(&mut self) -> impl Iterator { method all_zero (line 291) | pub fn all_zero(&self) -> bool { method from (line 298) | fn from(value: core::arch::x86_64::CpuidResult) -> Self { method from (line 304) | fn from(value: [u32; 4]) -> Self { type CpuidVendor (line 315) | pub enum CpuidVendor { method fmt (line 321) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method is_amd (line 334) | pub fn is_amd(self) -> bool { method is_intel (line 338) | pub fn is_intel(self) -> bool { type Error (line 344) | type Error = &'static str; method try_from (line 346) | fn try_from(value: CpuidValues) -> Result { FILE: crates/rfb/examples/shared.rs constant IMG_OXIDE (line 21) | const IMG_OXIDE: &[u8] = include_bytes!("images/oxide.png"); constant IMG_COLORBARS (line 22) | const IMG_COLORBARS: &[u8] = include_bytes!("images/color-bars.png"); type Image (line 25) | pub enum Image { type ExampleBackend (line 35) | pub struct ExampleBackend(Image); method new (line 37) | pub fn new(img: Image) -> Self { method generate (line 40) | pub async fn generate( type Size (line 66) | struct Size { method len (line 71) | const fn len(&self, bytes_per_pixel: usize) -> usize { function generate_image (line 76) | fn generate_image(size: Size, img_bytes: &[u8]) -> Frame { function generate_solid (line 107) | fn generate_solid(size: Size, rgb_pixel: [u8; 3]) -> Frame { function generate_frame (line 124) | fn generate_frame(size: Size, img: Image) -> Frame { function build_logger (line 136) | pub fn build_logger() -> slog::Logger { FILE: crates/rfb/examples/socket.rs constant WIDTH (line 25) | const WIDTH: usize = 1024; constant HEIGHT (line 26) | const HEIGHT: usize = 768; type Args (line 45) | struct Args { function main (line 56) | async fn main() -> Result<()> { FILE: crates/rfb/examples/websock.rs constant WIDTH (line 31) | const WIDTH: usize = 1024; constant HEIGHT (line 32) | const HEIGHT: usize = 768; type Args (line 36) | struct Args { type AppCtx (line 46) | struct AppCtx { function run_server (line 51) | async fn run_server( function main (line 133) | async fn main() -> Result<(), String> { function ws_websockify (line 167) | async fn ws_websockify( FILE: crates/rfb/src/encodings.rs type EncodingType (line 13) | pub enum EncodingType { type Encoding (line 31) | pub trait Encoding: Send { method get_type (line 32) | fn get_type(&self) -> EncodingType; method encode (line 36) | fn encode(&self) -> &[u8]; method get_type (line 51) | fn get_type(&self) -> EncodingType { method encode (line 55) | fn encode(&self) -> &[u8] { type RawEncoding (line 40) | pub struct RawEncoding { method new (line 45) | pub fn new(pixels: Vec) -> Self { type RREncoding (line 61) | struct RREncoding { type Pixel (line 67) | struct Pixel { type RRESubrectangle (line 72) | struct RRESubrectangle { type HextileEncoding (line 79) | struct HextileEncoding { type HextileTile (line 84) | enum HextileTile { type HextileTileEncoded (line 90) | struct HextileTileEncoded { FILE: crates/rfb/src/keysym.rs constant ASCII_MAX (line 12) | const ASCII_MAX: u32 = 0x7f; constant KEYSYM_BACKSPACE (line 14) | const KEYSYM_BACKSPACE: u32 = 0xff08; constant KEYSYM_TAB (line 15) | const KEYSYM_TAB: u32 = 0xff09; constant KEYSYM_RETURN_ENTER (line 16) | const KEYSYM_RETURN_ENTER: u32 = 0xff0d; constant KEYSYM_ESCAPE (line 17) | const KEYSYM_ESCAPE: u32 = 0xff1b; constant KEYSYM_INSERT (line 18) | const KEYSYM_INSERT: u32 = 0xff63; constant KEYSYM_DELETE (line 19) | const KEYSYM_DELETE: u32 = 0xffff; constant KEYSYM_HOME (line 20) | const KEYSYM_HOME: u32 = 0xff50; constant KEYSYM_END (line 21) | const KEYSYM_END: u32 = 0xff57; constant KEYSYM_PAGE_UP (line 22) | const KEYSYM_PAGE_UP: u32 = 0xff55; constant KEYSYM_PAGE_DOWN (line 23) | const KEYSYM_PAGE_DOWN: u32 = 0xff56; constant KEYSYM_PRINT (line 24) | const KEYSYM_PRINT: u32 = 0xff61; constant KEYSYM_PAUSE (line 25) | const KEYSYM_PAUSE: u32 = 0xff13; constant KEYSYM_CAPS_LOCK (line 26) | const KEYSYM_CAPS_LOCK: u32 = 0xffe5; constant KEYSYM_SUPER_LEFT (line 27) | const KEYSYM_SUPER_LEFT: u32 = 0xffeb; constant KEYSYM_SUPER_RIGHT (line 28) | const KEYSYM_SUPER_RIGHT: u32 = 0xffec; constant KEYSYM_MENU (line 29) | const KEYSYM_MENU: u32 = 0xff67; constant KEYSYM_LEFT (line 31) | const KEYSYM_LEFT: u32 = 0xff51; constant KEYSYM_UP (line 32) | const KEYSYM_UP: u32 = 0xff52; constant KEYSYM_RIGHT (line 33) | const KEYSYM_RIGHT: u32 = 0xff53; constant KEYSYM_DOWN (line 34) | const KEYSYM_DOWN: u32 = 0xff54; constant KEYSYM_F1 (line 36) | const KEYSYM_F1: u32 = 0xffbe; constant KEYSYM_F12 (line 37) | const KEYSYM_F12: u32 = 0xffc9; constant KEYSYM_SHIFT_LEFT (line 38) | const KEYSYM_SHIFT_LEFT: u32 = 0xffe1; constant KEYSYM_SHIFT_RIGHT (line 39) | const KEYSYM_SHIFT_RIGHT: u32 = 0xffe2; constant KEYSYM_CTRL_LEFT (line 40) | const KEYSYM_CTRL_LEFT: u32 = 0xffe3; constant KEYSYM_CTRL_RIGHT (line 41) | const KEYSYM_CTRL_RIGHT: u32 = 0xffe4; constant KEYSYM_ALT_LEFT (line 45) | const KEYSYM_ALT_LEFT: u32 = 0xffe9; constant KEYSYM_ALT_RIGHT (line 46) | const KEYSYM_ALT_RIGHT: u32 = 0xffea; constant KEYSYM_SCROLL_LOCK (line 47) | const KEYSYM_SCROLL_LOCK: u32 = 0xff14; constant KEYSYM_NUM_LOCK (line 48) | const KEYSYM_NUM_LOCK: u32 = 0xff7f; constant KEYSYM_KP_ENTER (line 50) | const KEYSYM_KP_ENTER: u32 = 0xff8d; constant KEYSYM_KP_SLASH (line 51) | const KEYSYM_KP_SLASH: u32 = 0xffaf; constant KEYSYM_KP_ASTERISK (line 52) | const KEYSYM_KP_ASTERISK: u32 = 0xffaa; constant KEYSYM_KP_MINUS (line 53) | const KEYSYM_KP_MINUS: u32 = 0xffad; constant KEYSYM_KP_PLUS (line 54) | const KEYSYM_KP_PLUS: u32 = 0xffab; constant KEYSYM_KP_7 (line 55) | const KEYSYM_KP_7: u32 = 0xffb7; constant KEYSYM_KP_HOME (line 56) | const KEYSYM_KP_HOME: u32 = 0xff95; constant KEYSYM_KP_8 (line 57) | const KEYSYM_KP_8: u32 = 0xffb8; constant KEYSYM_KP_UP (line 58) | const KEYSYM_KP_UP: u32 = 0xff97; constant KEYSYM_KP_9 (line 59) | const KEYSYM_KP_9: u32 = 0xffb9; constant KEYSYM_KP_PGUP (line 60) | const KEYSYM_KP_PGUP: u32 = 0xff9a; constant KEYSYM_KP_4 (line 61) | const KEYSYM_KP_4: u32 = 0xffb4; constant KEYSYM_KP_LEFT (line 62) | const KEYSYM_KP_LEFT: u32 = 0xff96; constant KEYSYM_KP_5 (line 63) | const KEYSYM_KP_5: u32 = 0xffb5; constant KEYSYM_KP_EMPTY (line 64) | const KEYSYM_KP_EMPTY: u32 = 0xff9d; constant KEYSYM_KP_6 (line 65) | const KEYSYM_KP_6: u32 = 0xffb6; constant KEYSYM_KP_RIGHT (line 66) | const KEYSYM_KP_RIGHT: u32 = 0xff98; constant KEYSYM_KP_1 (line 67) | const KEYSYM_KP_1: u32 = 0xffb1; constant KEYSYM_KP_END (line 68) | const KEYSYM_KP_END: u32 = 0xff9c; constant KEYSYM_KP_2 (line 69) | const KEYSYM_KP_2: u32 = 0xffb2; constant KEYSYM_KP_DOWN (line 70) | const KEYSYM_KP_DOWN: u32 = 0xff99; constant KEYSYM_KP_3 (line 71) | const KEYSYM_KP_3: u32 = 0xffb3; constant KEYSYM_KP_PGDOWN (line 72) | const KEYSYM_KP_PGDOWN: u32 = 0xff9b; constant KEYSYM_KP_0 (line 73) | const KEYSYM_KP_0: u32 = 0xffb0; constant KEYSYM_KP_INSERT (line 74) | const KEYSYM_KP_INSERT: u32 = 0xff9e; constant KEYSYM_KP_PERIOD (line 75) | const KEYSYM_KP_PERIOD: u32 = 0xffae; constant KEYSYM_KP_DELETE (line 76) | const KEYSYM_KP_DELETE: u32 = 0xff9f; type KeySym (line 79) | pub enum KeySym { type Error (line 149) | type Error = (); method try_from (line 151) | fn try_from(value: u32) -> Result { FILE: crates/rfb/src/proto.rs type ProtocolError (line 22) | pub enum ProtocolError { type Result (line 48) | pub type Result = std::result::Result; type ProtoVersion (line 51) | pub enum ProtoVersion { method read_from (line 58) | pub async fn read_from( method write_to (line 71) | pub async fn write_to( type SecurityTypes (line 87) | pub struct SecurityTypes(pub Vec); method write_to (line 96) | pub async fn write_to( type SecurityType (line 90) | pub enum SecurityType { method read_from (line 111) | pub async fn read_from( method write_to (line 121) | pub async fn write_to( type SecurityResult (line 136) | pub enum SecurityResult { method write_to (line 142) | pub async fn write_to( type ClientInit (line 161) | pub struct ClientInit { method read_from (line 166) | pub async fn read_from( type ServerInit (line 176) | pub struct ServerInit { method write_to (line 183) | pub async fn write_to( type FramebufferUpdate (line 198) | pub struct FramebufferUpdate(pub Vec); method write_to (line 201) | pub async fn write_to( type Position (line 218) | pub struct Position { type Resolution (line 224) | pub struct Resolution { method write_to (line 230) | pub async fn write_to( type Rectangle (line 240) | pub struct Rectangle { method write_to (line 247) | pub async fn write_to( type PixelFormat (line 266) | pub struct PixelFormat { method write_to (line 274) | pub async fn write_to( type Error (line 284) | type Error = ProtocolError; method try_from (line 286) | fn try_from( method from (line 348) | fn from(value: FourCC) -> Self { function from (line 312) | fn from(value: PixelFormat) -> Self { type Error (line 366) | type Error = &'static str; function try_into (line 368) | fn try_into(self) -> std::result::Result { type ColorSpecification (line 392) | pub enum ColorSpecification { type ColorFormat (line 398) | pub struct ColorFormat { type ClientMessage (line 410) | pub enum ClientMessage { type ClientMessageType (line 426) | enum ClientMessageType { function read_data (line 435) | fn read_data(buf: &mut BytesMut) -> Option { type ClientMessageDecoder (line 446) | pub struct ClientMessageDecoder { method default (line 451) | fn default() -> Self { type Item (line 458) | type Item = ClientMessage; type Error (line 459) | type Error = ProtocolError; method decode (line 461) | fn decode( type FramebufferUpdateRequest (line 576) | pub struct FramebufferUpdateRequest { method from (line 583) | fn from(value: raw::FramebufferUpdateRequest) -> Self { type KeyEvent (line 593) | pub struct KeyEvent { type Error (line 599) | type Error = ProtocolError; method try_from (line 601) | fn try_from( type PointerEvent (line 625) | pub struct PointerEvent { method from (line 630) | fn from(value: raw::PointerEvent) -> Self { type PixelFormat (line 645) | pub(crate) struct PixelFormat { method write_to (line 274) | pub async fn write_to( type Error (line 284) | type Error = ProtocolError; method try_from (line 286) | fn try_from( method from (line 348) | fn from(value: FourCC) -> Self { type FramebufferUpdateRequest (line 661) | pub(crate) struct FramebufferUpdateRequest { method from (line 583) | fn from(value: raw::FramebufferUpdateRequest) -> Self { type KeyEvent (line 669) | pub(crate) struct KeyEvent { type Error (line 599) | type Error = ProtocolError; method try_from (line 601) | fn try_from( type PointerEvent (line 677) | pub(crate) struct PointerEvent { method from (line 630) | fn from(value: raw::PointerEvent) -> Self { type Position (line 684) | pub(crate) struct Position { function from (line 689) | fn from(value: Position) -> Self { type Resolution (line 696) | pub(crate) struct Resolution { method write_to (line 230) | pub async fn write_to( function from (line 701) | fn from(value: Resolution) -> Self { type FramebufferUpdateHeader (line 709) | pub(crate) struct FramebufferUpdateHeader { method new (line 715) | pub fn new(num_rects: u16) -> Self { FILE: crates/rfb/src/server.rs type InitError (line 16) | pub enum InitError { type Result (line 36) | pub type Result = std::result::Result; type InitParams (line 38) | pub struct InitParams { function rfb_handshake (line 53) | async fn rfb_handshake( function rfb_initialization (line 87) | async fn rfb_initialization( function initialize (line 103) | pub async fn initialize( FILE: crates/rfb/src/tungstenite.rs function tung_err_to_io (line 20) | fn tung_err_to_io(err: TungError) -> io::Error { type BinaryWs (line 28) | pub struct BinaryWs { function new (line 34) | pub fn new(ws: WebSocketStream) -> Self { method poll_write (line 39) | fn poll_write( method poll_flush (line 60) | fn poll_flush( method poll_shutdown (line 68) | fn poll_shutdown( method poll_read (line 77) | fn poll_read( FILE: crates/rgb-frame/src/lib.rs type Spec (line 11) | pub struct Spec { method new (line 24) | pub fn new(width: usize, height: usize, fourcc: FourCC) -> Self { type Frame (line 42) | pub struct Frame { method new (line 52) | pub fn new(spec: Spec) -> Self { method new_uninit (line 66) | pub fn new_uninit(spec: Spec, populate: F) -> Self method allocate_for_spec (line 79) | fn allocate_for_spec(spec: &Spec) -> (Vec, NonZeroUsize) { method spec (line 95) | pub fn spec(&self) -> Spec { method bytes (line 100) | pub fn bytes(&self) -> &[u8] { method bytes_mut (line 105) | pub fn bytes_mut(&mut self) -> &mut [u8] { method convert (line 110) | pub fn convert(&mut self, target: FourCC) { type FourCC (line 156) | pub enum FourCC { method has_alpha (line 177) | pub const fn has_alpha(self) -> bool { method le_idx_rgba (line 182) | pub const fn le_idx_rgba(self) -> (usize, usize, usize, usize) { method bytes_per_pixel (line 190) | pub const fn bytes_per_pixel(self) -> NonZeroUsize { FILE: crates/viona-api/header-check/build.rs function main (line 11) | fn main() { FILE: crates/viona-api/src/ffi.rs function vna_ioc (line 10) | const fn vna_ioc(ioc: i32) -> i32 { constant VNA_IOC_CREATE (line 16) | pub const VNA_IOC_CREATE: i32 = vna_ioc(0x01); constant VNA_IOC_DELETE (line 17) | pub const VNA_IOC_DELETE: i32 = vna_ioc(0x02); constant VNA_IOC_VERSION (line 18) | pub const VNA_IOC_VERSION: i32 = vna_ioc(0x03); constant VNA_IOC_DEFAULT_PARAMS (line 19) | pub const VNA_IOC_DEFAULT_PARAMS: i32 = vna_ioc(0x04); constant VNA_IOC_RING_INIT (line 21) | pub const VNA_IOC_RING_INIT: i32 = vna_ioc(0x10); constant VNA_IOC_RING_RESET (line 22) | pub const VNA_IOC_RING_RESET: i32 = vna_ioc(0x11); constant VNA_IOC_RING_KICK (line 23) | pub const VNA_IOC_RING_KICK: i32 = vna_ioc(0x12); constant VNA_IOC_RING_SET_MSI (line 24) | pub const VNA_IOC_RING_SET_MSI: i32 = vna_ioc(0x13); constant VNA_IOC_RING_INTR_CLR (line 25) | pub const VNA_IOC_RING_INTR_CLR: i32 = vna_ioc(0x14); constant VNA_IOC_RING_SET_STATE (line 26) | pub const VNA_IOC_RING_SET_STATE: i32 = vna_ioc(0x15); constant VNA_IOC_RING_GET_STATE (line 27) | pub const VNA_IOC_RING_GET_STATE: i32 = vna_ioc(0x16); constant VNA_IOC_RING_PAUSE (line 28) | pub const VNA_IOC_RING_PAUSE: i32 = vna_ioc(0x17); constant VNA_IOC_RING_INIT_MODERN (line 29) | pub const VNA_IOC_RING_INIT_MODERN: i32 = vna_ioc(0x18); constant VNA_IOC_INTR_POLL (line 31) | pub const VNA_IOC_INTR_POLL: i32 = vna_ioc(0x20); constant VNA_IOC_SET_FEATURES (line 32) | pub const VNA_IOC_SET_FEATURES: i32 = vna_ioc(0x21); constant VNA_IOC_GET_FEATURES (line 33) | pub const VNA_IOC_GET_FEATURES: i32 = vna_ioc(0x22); constant VNA_IOC_SET_NOTIFY_IOP (line 34) | pub const VNA_IOC_SET_NOTIFY_IOP: i32 = vna_ioc(0x23); constant VNA_IOC_SET_PROMISC (line 35) | pub const VNA_IOC_SET_PROMISC: i32 = vna_ioc(0x24); constant VNA_IOC_GET_PARAMS (line 36) | pub const VNA_IOC_GET_PARAMS: i32 = vna_ioc(0x25); constant VNA_IOC_SET_PARAMS (line 37) | pub const VNA_IOC_SET_PARAMS: i32 = vna_ioc(0x26); constant VNA_IOC_GET_MTU (line 38) | pub const VNA_IOC_GET_MTU: i32 = vna_ioc(0x27); constant VNA_IOC_SET_MTU (line 39) | pub const VNA_IOC_SET_MTU: i32 = vna_ioc(0x28); constant VNA_IOC_SET_NOTIFY_MMIO (line 40) | pub const VNA_IOC_SET_NOTIFY_MMIO: i32 = vna_ioc(0x29); constant VNA_IOC_INTR_POLL_MQ (line 41) | pub const VNA_IOC_INTR_POLL_MQ: i32 = vna_ioc(0x2a); constant VNA_IOC_GET_PAIRS (line 44) | pub const VNA_IOC_GET_PAIRS: i32 = vna_ioc(0x30); constant VNA_IOC_SET_PAIRS (line 45) | pub const VNA_IOC_SET_PAIRS: i32 = vna_ioc(0x31); constant VNA_IOC_GET_USEPAIRS (line 46) | pub const VNA_IOC_GET_USEPAIRS: i32 = vna_ioc(0x32); constant VNA_IOC_SET_USEPAIRS (line 47) | pub const VNA_IOC_SET_USEPAIRS: i32 = vna_ioc(0x33); function test_vna_ioc (line 54) | fn test_vna_ioc() { constant VIONA_MIN_QPAIR (line 60) | pub const VIONA_MIN_QPAIR: usize = 1; constant VIONA_MAX_QPAIR (line 67) | pub const VIONA_MAX_QPAIR: usize = 0x100; function howmany (line 69) | const fn howmany(x: usize, y: usize) -> usize { constant VIONA_INTR_WORDS (line 77) | pub const VIONA_INTR_WORDS: usize = howmany(VIONA_MAX_QPAIR * 2, 32); type vioc_create (line 80) | pub struct vioc_create { type vioc_ring_init_modern (line 87) | pub struct vioc_ring_init_modern { type vioc_ring_msi (line 98) | pub struct vioc_ring_msi { type vioc_intr_poll_mq (line 107) | pub struct vioc_intr_poll_mq { type vioc_notify_mmio (line 115) | pub struct vioc_notify_mmio { type vioc_ring_state (line 122) | pub struct vioc_ring_state { constant VIONA_PROMISC_NONE (line 132) | pub const VIONA_PROMISC_NONE: i32 = 0; constant VIONA_PROMISC_MULTI (line 133) | pub const VIONA_PROMISC_MULTI: i32 = 1; constant VIONA_PROMISC_ALL (line 134) | pub const VIONA_PROMISC_ALL: i32 = 2; constant VIONA_PROMISC_ALL_VLAN (line 136) | pub const VIONA_PROMISC_ALL_VLAN: i32 = 3; type vioc_get_params (line 140) | pub struct vioc_get_params { type vioc_set_params (line 147) | pub struct vioc_set_params { constant VIONA_CURRENT_INTERFACE_VERSION (line 157) | pub const VIONA_CURRENT_INTERFACE_VERSION: u32 = 6; constant VIONA_MAX_PARAM_NVLIST_SZ (line 160) | pub const VIONA_MAX_PARAM_NVLIST_SZ: usize = 4096; FILE: crates/viona-api/src/lib.rs constant VIONA_DEV_PATH (line 18) | pub const VIONA_DEV_PATH: &str = "/dev/viona"; type VionaFd (line 20) | pub struct VionaFd(File); method new (line 24) | pub fn new(link_id: u32, vm_fd: RawFd) -> Result { method open (line 33) | pub fn open() -> Result { method set_parameters (line 41) | pub fn set_parameters( method get_parameters (line 72) | pub fn get_parameters(&self) -> Result { method ioctl (line 94) | pub unsafe fn ioctl(&self, cmd: i32, data: *mut T) -> Result { method ioctl_usize (line 98) | pub fn ioctl_usize(&self, cmd: i32, data: usize) -> Result { method api_version (line 113) | pub fn api_version(&self) -> Result { method instance_id (line 124) | pub fn instance_id(&self) -> Result { method ioctl_usize_safe (line 131) | const fn ioctl_usize_safe(cmd: i32) -> bool { method as_raw_fd (line 152) | fn as_raw_fd(&self) -> RawFd { type ParamError (line 158) | pub enum ParamError { function ioctl (line 164) | unsafe fn ioctl(fd: RawFd, cmd: i32, data: *mut libc::c_void) -> Result<... function ioctl (line 172) | unsafe fn ioctl( function minor (line 181) | fn minor(meta: &std::fs::Metadata) -> u32 { function minor (line 190) | fn minor(meta: &std::fs::Metadata) -> u32 { type ApiVersion (line 199) | pub enum ApiVersion { method current (line 220) | pub const fn current() -> Self { function eq (line 225) | fn eq(&self, other: &ApiVersion) -> bool { function partial_cmp (line 230) | fn partial_cmp(&self, other: &ApiVersion) -> Option { function api_version (line 248) | pub fn api_version() -> Result { function cache_api_version (line 256) | fn cache_api_version(do_query: impl FnOnce() -> Result) -> Result Self { function nvme_serial_from_str (line 46) | pub fn nvme_serial_from_str(s: &str, pad: u8) -> [u8; 20] { type InstanceSerialConsoleControlMessage (line 62) | pub enum InstanceSerialConsoleControlMessage { type SerialConsoleStream (line 67) | pub trait SerialConsoleStream: AsyncRead + AsyncWrite + Unpin + Send {} type SerialConsoleStreamBuilder (line 72) | pub(crate) trait SerialConsoleStreamBuilder: Send { method build (line 73) | async fn build( method build (line 94) | async fn build( method build (line 154) | async fn build( type PropolisSerialBuilder (line 83) | struct PropolisSerialBuilder {} method new (line 87) | pub fn new() -> Self { type TestSerialBuilder (line 131) | pub struct TestSerialBuilder { function new (line 136) | fn new( type WSClientOffset (line 175) | pub enum WSClientOffset { type InstanceSerialConsoleHelper (line 191) | pub struct InstanceSerialConsoleHelper { method new (line 202) | pub async fn new( method new_test (line 216) | pub async fn new_test( method new_test_with_delays (line 237) | pub async fn new_test_with_delays( method new_with_builder (line 248) | pub(crate) async fn new_with_builder( method recv (line 271) | pub async fn recv( type Error (line 294) | type Error = WSError; method poll_ready (line 296) | fn poll_ready( method start_send (line 303) | fn start_send( method poll_flush (line 310) | fn poll_flush( method poll_close (line 317) | fn poll_close( type InstanceSerialConsoleMessage (line 326) | pub struct InstanceSerialConsoleMessage<'a> { function process (line 391) | pub async fn process(self) -> Result { function assert_send (line 432) | fn assert_send() {} function _assert_impls (line 434) | fn _assert_impls() { function test_connection_helper (line 458) | async fn test_connection_helper() { function test_recv_cancel_safety (line 502) | async fn test_recv_cancel_safety() { function make_ws_server (line 594) | async fn make_ws_server(conn: S) -> WebSocketStream function test_nvme_serial_from_str (line 602) | fn test_nvme_serial_from_str() { FILE: lib/propolis/src/accessors.rs type AccessedResource (line 58) | pub trait AccessedResource { method derive (line 63) | fn derive(root: &Self::Root) -> Self::Leaf; method deref (line 64) | fn deref(leaf: &Self::Leaf) -> &Self::Target; type Root (line 90) | type Root = (); type Leaf (line 91) | type Leaf = (); type Target (line 92) | type Target = (); method derive (line 93) | fn derive(_root: &Self::Root) -> Self::Leaf { method deref (line 96) | fn deref(_derived: &Self::Root) -> &Self::Target { type Root (line 744) | type Root = Arc; type Leaf (line 745) | type Leaf = Arc; type Target (line 746) | type Target = VmmHdl; method derive (line 748) | fn derive(root: &Self::Root) -> Self::Leaf { method deref (line 751) | fn deref(leaf: &Self::Leaf) -> &Self::Target { type Root (line 815) | type Root = Arc; type Leaf (line 816) | type Leaf = Arc; type Target (line 817) | type Target = AtomicUsize; method derive (line 819) | fn derive(root: &Self::Root) -> Self::Leaf { method deref (line 822) | fn deref(leaf: &Self::Leaf) -> &Self::Target { type NodeKey (line 69) | pub struct NodeKey(NonNull>); method from (line 71) | fn from(value: &Arc>) -> Self { method fmt (line 79) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type NodeKeyNull (line 88) | enum NodeKeyNull {} type TreeNode (line 101) | struct TreeNode { function new (line 115) | fn new( function new_root (line 127) | fn new_root(node_ref: Weak>) -> Self { type Tree (line 137) | struct Tree { function add_child (line 156) | fn add_child( function adopt (line 187) | fn adopt(&mut self, parent_key: NodeKey, adopt_tree: &mut Tree) { function remove_dead_node (line 241) | fn remove_dead_node(&mut self, key: NodeKey) { function orphan_node (line 269) | fn orphan_node(&mut self, key: NodeKey) { function rename_node (line 315) | fn rename_node(&mut self, key: NodeKey, name: Option) { function node_is_root (line 322) | fn node_is_root(&self, node: &Arc>) -> bool { function set_root_resource (line 326) | fn set_root_resource( function node_count (line 344) | fn node_count(&self) -> usize { function print (line 350) | fn print(&self, print_fn: impl Fn(PrintNode)) { function root_key (line 384) | fn root_key(&self) -> NodeKey { function new_empty (line 389) | fn new_empty(primary: Option) -> Arc>> { function new (line 401) | fn new(res_root: Option) -> Arc> { type PrintNode (line 417) | pub struct PrintNode<'a> { function print_basic (line 425) | fn print_basic(match_node: Option) -> impl Fn(PrintNode) { type TreeBackref (line 440) | type TreeBackref = Arc>>; type NodeEntry (line 442) | struct NodeEntry { type Node (line 452) | struct Node(Mutex>); function try_lock_tree (line 463) | fn try_lock_tree<'node, 'guard>( function lock_tree (line 481) | fn lock_tree<'node, F, R>(&'node self, f: F) -> R function new_root (line 499) | fn new_root(tree: Arc>>) -> Arc> { function new_child (line 502) | fn new_child(self: &Arc>, name: Option) -> Arc> { function guard (line 511) | fn guard(&self) -> Option> { function guard_borrow (line 526) | fn guard_borrow(&self) -> Option>> { function drop_from_tree (line 546) | fn drop_from_tree(self: &mut Arc>) { type Guard (line 565) | pub struct Guard<'a, T: AccessedResource> { type Target (line 570) | type Target = T::Target; function deref (line 571) | fn deref(&self) -> &Self::Target { type LockedView (line 576) | pub struct LockedView<'node, T: AccessedResource> { function view (line 581) | pub fn view(&self) -> &T::Target { type Accessor (line 591) | pub struct Accessor(Arc>); function new (line 594) | pub fn new(resource: T::Root) -> Self { function new_orphan (line 601) | pub fn new_orphan() -> Self { function child (line 606) | pub fn child(&self, name: Option) -> Self { function adopt (line 615) | pub fn adopt(&self, child: &Self, name: Option) { function remove_resource (line 648) | pub fn remove_resource(&self) -> Option { function access (line 669) | pub fn access(&self) -> Option> { function access_locked (line 696) | pub fn access_locked(&self) -> Option> { function node_count (line 706) | pub fn node_count(&self) -> usize { function print (line 711) | pub fn print(&self, highlight_self: bool) { method drop (line 735) | fn drop(&mut self) { type MemAccessor (line 740) | pub type MemAccessor = Accessor; type MsiAccessed (line 742) | enum MsiAccessed {} type MsiAccessor (line 757) | pub struct MsiAccessor(Accessor); method new (line 760) | pub fn new(hdl: Arc) -> Self { method new_orphan (line 764) | pub fn new_orphan() -> Self { method child (line 768) | pub fn child(&self, name: Option) -> Self { method adopt (line 772) | pub fn adopt(&self, child: &Self, name: Option) { method remove_resource (line 776) | pub fn remove_resource(&self) -> Option> { method send (line 783) | pub fn send(&self, addr: u64, msg: u64) -> Result<(), ()> { method fmt (line 793) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type AtomicRes (line 813) | enum AtomicRes {} function new_root (line 829) | fn new_root() -> Accessor { function new_orphan (line 832) | fn new_orphan() -> Accessor { function new_depth (line 835) | fn new_depth( function tree_root (line 852) | fn tree_root() { function simple_orphan (line 867) | fn simple_orphan() { function only_root_can_remove_resource (line 880) | fn only_root_can_remove_resource() { function adopt_self (line 892) | fn adopt_self() { function adopt_nonroot (line 899) | fn adopt_nonroot() { function simple_depth (line 908) | fn simple_depth() { function orphan_split (line 926) | fn orphan_split() { function orphan_sibling (line 964) | fn orphan_sibling() { function print_names (line 985) | fn print_names() { FILE: lib/propolis/src/api_version.rs type Error (line 6) | pub enum Error { type VersionCheckError (line 22) | pub struct VersionCheckError { method vmm (line 30) | fn vmm(err: Error) -> Self { method viona (line 34) | fn viona(err: Error) -> Self { function check (line 39) | pub fn check() -> Result<(), VersionCheckError> { FILE: lib/propolis/src/attestation/boot_digest/crucible.rs function boot_disk_digest (line 18) | pub async fn boot_disk_digest( FILE: lib/propolis/src/attestation/boot_digest/mod.rs type Backend (line 14) | pub enum Backend { function compute (line 19) | pub async fn compute(backend: Backend, log: &Logger) -> Result Self { type AttestationSock (line 34) | pub struct AttestationSock { method new (line 108) | pub async fn new(log: Logger, sa_addr: SocketAddrV6) -> io::Result; type QueueSlotState (line 48) | struct QueueSlotState { type QueueSlot (line 52) | struct QueueSlot { method new (line 59) | fn new(queue_id: QueueId) -> Self { method request_notify (line 67) | fn request_notify(&self, hint: ReqCountHint) { method flush_notifications (line 75) | fn flush_notifications(&self) { type QueueColState (line 131) | struct QueueColState { method queue_associate (line 137) | fn queue_associate(&mut self, qid: QueueId) -> Versioned { method queue_dissociate (line 141) | fn queue_dissociate(&mut self, qid: QueueId) -> Versioned { type QueueCollection (line 146) | struct QueueCollection { method new (line 152) | fn new(max_queues: NonZeroUsize, devid: DeviceId) -> Arc { method attach (line 160) | fn attach(&self, workers: &Arc) { method detach (line 166) | fn detach(&self) { method slot (line 172) | fn slot(&self, queue_id: QueueId) -> &QueueSlot { method notify (line 175) | fn notify(&self, queue_id: QueueId, hint: ReqCountHint) { method set_metric_consumer (line 180) | fn set_metric_consumer(&self, consumer: Arc) { method associated_qids (line 189) | fn associated_qids(&self) -> Versioned { method pause (line 192) | fn pause(&self) { method resume (line 203) | fn resume(&self) { method none_processing (line 219) | fn none_processing(&self) -> NoneProcessing { method next_req (line 235) | fn next_req( method next_req_any (line 257) | fn next_req_any( type MinderRefs (line 292) | struct MinderRefs { type Output (line 315) | type Output = (); method poll (line 317) | fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { type AttachPair (line 363) | struct AttachPair { method attach (line 368) | fn attach( method detach (line 406) | fn detach(self) { method eq (line 443) | fn eq(&self, other: &Self) -> bool { type OnAttachFn (line 449) | pub type OnAttachFn = Box; type DeviceState (line 452) | struct DeviceState { type DeviceAttachInner (line 456) | struct DeviceAttachInner { type DeviceAttachment (line 465) | pub struct DeviceAttachment(Arc); method new (line 470) | pub fn new(max_queues: NonZeroUsize, acc_mem: MemAccessor) -> Self { method queues_update_assoc (line 484) | fn queues_update_assoc(&self, queues_associated: Versioned) { method queue_associate (line 503) | pub fn queue_associate( method queue_dissociate (line 546) | pub fn queue_dissociate(&self, queue_id: QueueId) { method notify (line 565) | pub fn notify(&self, queue_id: QueueId, hint: ReqCountHint) { method device_id (line 569) | pub fn device_id(&self) -> DeviceId { method max_queues (line 574) | pub fn max_queues(&self) -> NonZeroUsize { method info (line 579) | pub fn info(&self) -> Option { method detach (line 586) | pub fn detach(&self) { method pause (line 597) | pub fn pause(&self) { method resume (line 603) | pub fn resume(&self) { method none_processing (line 609) | pub fn none_processing(&self) -> NoneProcessing { method set_metric_consumer (line 615) | pub fn set_metric_consumer(&self, consumer: Arc) { method on_attach (line 622) | pub fn on_attach(&self, cb: OnAttachFn) { method drop (line 627) | fn drop(&mut self) { type PollCursor (line 633) | struct PollCursor(QueueId); method suggest (line 636) | fn suggest(&mut self, queue_id: QueueId) { type WorkerState (line 642) | struct WorkerState { type WorkerSlot (line 656) | pub(crate) struct WorkerSlot { method new (line 664) | fn new(id: WorkerId) -> Self { method block_for_req (line 673) | fn block_for_req(&self) -> Option { method next_req (line 696) | fn next_req(&self, state: &mut MutexGuard) -> PollResult { method async_start_sleep (line 725) | fn async_start_sleep( method async_stop_sleep (line 734) | fn async_stop_sleep(&self) { method wait_for_req (line 741) | fn wait_for_req(&self) -> WaitForReq<'_> { method update_assignment (line 745) | fn update_assignment(&self, assign: &Assignment) { method wake (line 765) | fn wake( type PollAssignment (line 790) | enum PollAssignment { type WorkerColState (line 803) | struct WorkerColState { method set_worker_state (line 815) | fn set_worker_state(&mut self, wid: WorkerId, is_active: bool) { method generate_assignments (line 825) | fn generate_assignments(&mut self) -> Assignment { type Strategy (line 903) | pub enum Strategy { method choose (line 920) | pub fn choose(worker_count: usize, queue_count: usize) -> Self { type Assignment (line 936) | struct Assignment { type WorkerCollection (line 942) | pub(crate) struct WorkerCollection { method new (line 947) | fn new(max_workers: NonZeroUsize) -> Arc { method set_active (line 955) | fn set_active(&self, id: WorkerId, new_type: Option) -> bo... method assignments_refresh (line 976) | fn assignments_refresh(&self, mut state: MutexGuard) { method slot (line 990) | fn slot(&self, id: WorkerId) -> &WorkerSlot { method attach (line 993) | fn attach(&self, parent_mem: &MemAccessor, queues: &Arc Option { method activate_async (line 1092) | pub fn activate_async(self) -> Option { type SyncWorkerCtx (line 1105) | pub struct SyncWorkerCtx(WorkerCtxInner); method block_for_req (line 1111) | pub fn block_for_req(&self) -> Option { method acc_mem (line 1115) | pub fn acc_mem(&self) -> &MemAccessor { type AsyncWorkerCtx (line 1124) | pub struct AsyncWorkerCtx(WorkerCtxInner); method wait_for_req (line 1128) | pub fn wait_for_req(&self) -> WaitForReq<'_> { method acc_mem (line 1132) | pub fn acc_mem(&self) -> &MemAccessor { type WorkerCtxInner (line 1137) | struct WorkerCtxInner { method from (line 1142) | fn from(value: InactiveWorkerCtx) -> Self { method acc_mem (line 1148) | fn acc_mem(&self) -> &MemAccessor { method drop (line 1154) | fn drop(&mut self) { type BackendAttachInner (line 1162) | struct BackendAttachInner { type BackendAttachment (line 1170) | pub struct BackendAttachment(Arc); method new (line 1172) | pub fn new(max_workers: NonZeroUsize, info: DeviceInfo) -> Self { method worker (line 1181) | pub fn worker(&self, id: WorkerId) -> InactiveWorkerCtx { method max_workers (line 1186) | pub fn max_workers(&self) -> NonZeroUsize { method info (line 1191) | pub fn info(&self) -> DeviceInfo { method backend_id (line 1195) | pub fn backend_id(&self) -> BackendId { method start (line 1201) | pub fn start(&self) { method stop (line 1208) | pub fn stop(&self) { method detach (line 1213) | pub fn detach(&self) { method drop (line 1224) | fn drop(&mut self) { function attach (line 1230) | pub fn attach( function new (line 1257) | fn new<'a>(slot: &'a WorkerSlot) -> WaitForReq<'a> { type Output (line 1264) | type Output = Option; method poll (line 1265) | fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { type PollResult (line 1305) | enum PollResult { type AttachError (line 1317) | pub enum AttachError { type Versioned (line 1326) | struct Versioned { function new (line 1331) | fn new(item: T) -> Self { function newer_than (line 1335) | fn newer_than(&self, compare: &Self) -> bool { function update (line 1339) | fn update(&mut self) -> &mut T { function replace (line 1344) | fn replace(&mut self, item: T) { function replace_if_newer (line 1347) | fn replace_if_newer(&mut self, compare: &Self) { function get (line 1352) | fn get(&self) -> T { function generation (line 1355) | fn generation(&self) -> usize { method default (line 1360) | fn default() -> Self { type Bitmap (line 1367) | pub(crate) struct Bitmap(u64); constant TOP_BIT (line 1369) | const TOP_BIT: usize = u64::BITS as usize; constant ALL (line 1371) | pub const ALL: Self = Self(u64::MAX); method set (line 1373) | pub fn set(&mut self, idx: usize) { method unset (line 1377) | pub fn unset(&mut self, idx: usize) { method set_all (line 1381) | pub fn set_all(&mut self, other: Bitmap) { method lowest_set (line 1384) | pub fn lowest_set(&self) -> Option { method count (line 1391) | pub fn count(&self) -> usize { method is_empty (line 1394) | pub fn is_empty(&self) -> bool { method take (line 1397) | pub fn take(&mut self) -> Self { method iter (line 1401) | pub fn iter(&self) -> BitIter { method looping_iter (line 1407) | pub fn looping_iter(&self) -> LoopIter { type BitIter (line 1412) | pub struct BitIter(Bitmap); method remainder (line 1423) | fn remainder(self) -> Bitmap { type Item (line 1414) | type Item = usize; method next (line 1416) | fn next(&mut self) -> Option { type LoopIter (line 1427) | pub struct LoopIter { type Item (line 1432) | type Item = usize; method next (line 1434) | fn next(&mut self) -> Option { FILE: lib/propolis/src/block/crucible.rs constant WORKER_COUNT (line 30) | const WORKER_COUNT: NonZeroUsize = NonZeroUsize::new(8).unwrap(); type CrucibleBackend (line 32) | pub struct CrucibleBackend { method create (line 161) | pub async fn create( method block_size (line 242) | pub async fn block_size(&self) -> Option { method create_mem (line 253) | pub async fn create_mem( method remove_read_only_parent (line 295) | async fn remove_read_only_parent( method get_uuid (line 321) | pub async fn get_uuid(&self) -> io::Result { method snapshot (line 326) | pub async fn snapshot(&self, snapshot_id: Uuid) -> io::Result<()> { method vcr_replace (line 337) | pub async fn vcr_replace( method spawn_workers (line 351) | fn spawn_workers(&self) { method volume_is_active (line 366) | pub async fn volume_is_active(&self) -> Result { method clone_volume (line 370) | pub fn clone_volume(&self) -> Volume { method is_read_only (line 374) | pub fn is_read_only(&self) -> bool { method query_volume_info (line 378) | pub async fn query_volume_info(&self) -> Result &block::BackendAttachment { method start (line 388) | async fn start(&self) -> anyhow::Result<()> { method stop (line 394) | async fn stop(&self) -> () { method as_any (line 398) | fn as_any(&self) -> &dyn std::any::Any { type WorkerState (line 37) | struct WorkerState { method process_loop (line 43) | async fn process_loop(&self, wctx: block::AsyncWorkerCtx) { method process_request (line 79) | async fn process_request( type Error (line 404) | pub enum Error { function from (line 425) | fn from(value: Error) -> Self { function block_offset_count (line 435) | fn block_offset_count( function err_on_bad_offset (line 457) | fn err_on_bad_offset() { function err_on_bad_size (line 464) | fn err_on_bad_size() { function ok_for_valid (line 471) | fn ok_for_valid() { function block_calc_ok (line 478) | fn block_calc_ok() { FILE: lib/propolis/src/block/file.rs type FileBackend (line 19) | pub struct FileBackend { method create (line 179) | pub fn create( method spawn_workers (line 234) | fn spawn_workers(&self) -> std::io::Result<()> { method attachment (line 258) | fn attachment(&self) -> &block::BackendAttachment { method start (line 262) | async fn start(&self) -> anyhow::Result<()> { method stop (line 273) | async fn stop(&self) -> () { method as_any (line 278) | fn as_any(&self) -> &dyn std::any::Any { type SharedState (line 26) | struct SharedState { method new (line 42) | fn new( method processing_loop (line 65) | fn processing_loop(&self, wctx: SyncWorkerCtx) { method process_request (line 89) | fn process_request( method set_wce (line 151) | fn set_wce(&self, enabled: bool) { type WceState (line 37) | struct WceState { method drop (line 166) | fn drop(&mut self) { constant DKIOC (line 295) | const DKIOC: i32 = 0x04 << 8; constant DKIOCGETWCE (line 296) | const DKIOCGETWCE: i32 = DKIOC | 36; constant DKIOCSETWCE (line 297) | const DKIOCSETWCE: i32 = DKIOC | 37; constant DKIOCGMEDIAINFOEXT (line 298) | const DKIOCGMEDIAINFOEXT: i32 = DKIOC | 48; constant DKIOCFREE (line 299) | const DKIOCFREE: i32 = DKIOC | 50; constant DKIOC_CANFREE (line 300) | const DKIOC_CANFREE: i32 = DKIOC | 60; type DiscardMech (line 303) | pub(crate) enum DiscardMech { type DiskInfo (line 312) | pub(crate) struct DiskInfo { method default (line 326) | fn default() -> Self { function disk_info (line 335) | pub(crate) fn disk_info(fp: &File) -> DiskInfo { function set_wce (line 388) | pub(crate) fn set_wce(fp: &File, enabled: bool) -> Result { function do_discard (line 396) | pub(crate) fn do_discard( type dkioc_free_list_ext (line 466) | struct dkioc_free_list_ext { type dkioc_free_list (line 473) | struct dkioc_free_list { type dk_minfo_ext (line 482) | struct dk_minfo_ext { FILE: lib/propolis/src/block/in_memory.rs type InMemoryBackend (line 20) | pub struct InMemoryBackend { method create (line 99) | pub fn create( method spawn_workers (line 135) | fn spawn_workers(&self) -> Result<()> { method attachment (line 156) | fn attachment(&self) -> &block::BackendAttachment { method start (line 160) | async fn start(&self) -> anyhow::Result<()> { method stop (line 171) | async fn stop(&self) -> () { method as_any (line 176) | fn as_any(&self) -> &dyn std::any::Any { type SharedState (line 26) | struct SharedState { method processing_loop (line 31) | fn processing_loop(&self, wctx: block::SyncWorkerCtx) { method process_request (line 57) | fn process_request( function process_read_request (line 182) | fn process_read_request( function process_write_request (line 215) | fn process_write_request( method type_name (line 248) | fn type_name(&self) -> &'static str { method migrate (line 252) | fn migrate(&self) -> Migrator<'_> { method export (line 258) | fn export( method import (line 266) | fn import( type InMemoryBlockBackendV1 (line 293) | pub struct InMemoryBlockBackendV1 { method fmt (line 298) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method id (line 306) | fn id() -> SchemaId { FILE: lib/propolis/src/block/mem_async.rs type MemAsyncBackend (line 19) | pub struct MemAsyncBackend { method create (line 102) | pub fn create( method spawn_workers (line 138) | fn spawn_workers(&self) { method attachment (line 154) | fn attachment(&self) -> &block::BackendAttachment { method start (line 157) | async fn start(&self) -> anyhow::Result<()> { method stop (line 162) | async fn stop(&self) -> () { method as_any (line 166) | fn as_any(&self) -> &dyn std::any::Any { type SharedState (line 25) | struct SharedState { method processing_loop (line 30) | async fn processing_loop(&self, wctx: block::AsyncWorkerCtx) { method process_request (line 54) | fn process_request( type MmapSeg (line 171) | struct MmapSeg(NonNull, usize); method new (line 173) | fn new(size: usize) -> Result { method write (line 190) | unsafe fn write(&self, off: usize, data: *const u8, sz: usize) -> bool { method read (line 198) | unsafe fn read(&self, off: usize, data: *mut u8, sz: usize) -> bool { method drop (line 208) | fn drop(&mut self) { FILE: lib/propolis/src/block/minder.rs type DeviceQueue (line 28) | pub trait DeviceQueue: Send + Sync + 'static { method next_req (line 37) | fn next_req(&self) -> Option<(Request, Self::Token, Option)>; method complete (line 41) | fn complete( method abandon (line 61) | fn abandon(&self, token: Self::Token); type DeviceRequest (line 69) | pub struct DeviceRequest { method new (line 76) | fn new(id: ReqId, req: Request, source: Weak) -> Self { method req (line 81) | pub fn req(&self) -> &Request { method complete (line 86) | pub fn complete(self, result: super::Result) { type NoDropDevReq (line 98) | struct NoDropDevReq; method drop (line 100) | fn drop(&mut self) { type NextReqFn (line 107) | type NextReqFn = Box< type CompleteReqFn (line 118) | type CompleteReqFn = Box< type AbandonReqFn (line 124) | type AbandonReqFn = Box) + Send + Sync>; type QmEntry (line 126) | struct QmEntry { type QmInner (line 133) | struct QmInner { method default (line 155) | fn default() -> Self { type QueueMinder (line 168) | pub(super) struct QueueMinder { method destroy (line 183) | pub fn destroy(self: Arc) { method new (line 209) | pub fn new( method next_req (line 258) | pub fn next_req(&self, wid: WorkerId) -> Option { method complete (line 312) | pub fn complete(&self, id: ReqId, result: block::Result) { method take_notifications (line 402) | pub(in crate::block) fn take_notifications(&self) -> Option { method add_notifications (line 418) | pub(in crate::block) fn add_notifications(&self, worker_ids: Bitmap) { method set_metric_consumer (line 427) | pub(crate) fn set_metric_consumer( method pause (line 434) | pub(crate) fn pause(&self) { method resume (line 440) | pub(crate) fn resume(&self) { method none_in_flight (line 446) | pub(crate) fn none_in_flight(&self) -> NoneInFlight<'_> { type Output (line 461) | type Output = (); method poll (line 463) | fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { type ReqId (line 486) | pub struct ReqId(u64); constant START (line 488) | const START: Self = ReqId(0); method advance (line 490) | fn advance(&mut self) { method borrow (line 495) | fn borrow(&self) -> &u64 { function from (line 500) | fn from(value: ReqId) -> Self { FILE: lib/propolis/src/block/mod.rs type ByteOffset (line 38) | pub type ByteOffset = usize; type ByteLen (line 39) | pub type ByteLen = usize; constant DEFAULT_BLOCK_SIZE (line 43) | pub const DEFAULT_BLOCK_SIZE: u32 = 512; function block_attach (line 47) | fn block_attach(dev_id: u32, backend_id: u32) {} function block_detach (line 48) | fn block_detach(dev_id: u32, backend_id: u32) {} function block_begin_read (line 50) | fn block_begin_read(devq_id: u64, req_id: u64, offset: u64, len: u64) {} function block_begin_write (line 51) | fn block_begin_write(devq_id: u64, req_id: u64, offset: u64, len: u64) {} function block_begin_flush (line 52) | fn block_begin_flush(devq_id: u64, req_id: u64) {} function block_begin_discard (line 53) | fn block_begin_discard(devq_id: u64, req_id: u64, nr: u64) {} function block_complete_read (line 55) | fn block_complete_read( function block_complete_write (line 63) | fn block_complete_write( function block_complete_flush (line 71) | fn block_complete_flush( function block_complete_discard (line 79) | fn block_complete_discard( function block_completion_sent (line 88) | fn block_completion_sent(devq_id: u64, req_id: u64, complete_ns: u64) {} function block_poll (line 90) | fn block_poll(devq_id: u64, worker_id: u64, emit_req: u8) {} function block_sleep (line 91) | fn block_sleep(dev_id: u32, worker_id: u64) {} function block_wake (line 92) | fn block_wake(dev_id: u32, worker_id: u64) {} function block_notify (line 93) | fn block_notify(devq_id: u64) {} function block_strategy (line 94) | fn block_strategy(dev_id: u32, strat: String, generation: u64) {} function block_worker_collection_wake (line 96) | fn block_worker_collection_wake(wake_wids: u64, limit: usize) {} function block_worker_collection_woken (line 97) | fn block_worker_collection_woken(remaining_wids: u64, num_woken: usize) {} type Operation (line 102) | pub enum Operation { method is_read (line 113) | pub const fn is_read(&self) -> bool { method is_write (line 116) | pub const fn is_write(&self) -> bool { method is_flush (line 119) | pub const fn is_flush(&self) -> bool { method is_discard (line 122) | pub const fn is_discard(&self) -> bool { type Result (line 129) | pub enum Result { method is_err (line 140) | pub const fn is_err(&self) -> bool { type QueueId (line 146) | pub struct QueueId(u8); constant MAX_QUEUES (line 150) | pub const MAX_QUEUES: usize = 64; constant MAX (line 152) | pub const MAX: Self = Self(Self::MAX_QUEUES as u8); method next (line 155) | fn next(self, max: usize) -> Self { method from (line 168) | fn from(value: usize) -> Self { method from (line 179) | fn from(value: u16) -> Self { function from (line 174) | fn from(value: QueueId) -> Self { function from (line 185) | fn from(value: QueueId) -> Self { type WorkerId (line 190) | pub type WorkerId = usize; function devq_id (line 193) | pub(crate) fn devq_id(dev: DeviceId, queue: QueueId) -> u64 { type Request (line 199) | pub struct Request { method new_read (line 212) | pub fn new_read( method new_write (line 220) | pub fn new_write( method new_flush (line 228) | pub fn new_flush() -> Self { method new_discard (line 233) | pub fn new_discard(ranges: Vec<(ByteOffset, ByteLen)>) -> Self { method mappings (line 238) | pub fn mappings<'a>(&self, mem: &'a MemCtx) -> Option bool { type Device (line 291) | pub trait Device: Send + Sync + 'static { method attachment (line 293) | fn attachment(&self) -> &DeviceAttachment; type Backend (line 299) | pub trait Backend: Send + Sync + 'static { method attachment (line 301) | fn attachment(&self) -> &BackendAttachment; method start (line 318) | async fn start(&self) -> anyhow::Result<()>; method stop (line 333) | async fn stop(&self); method as_any (line 336) | fn as_any(&self) -> &dyn std::any::Any; type MetricConsumer (line 340) | pub trait MetricConsumer: Send + Sync + 'static { method request_completed (line 343) | fn request_completed( FILE: lib/propolis/src/chardev/file_out.rs type Inner (line 16) | struct Inner { type BlockingFileOutput (line 20) | pub struct BlockingFileOutput { method new (line 28) | pub fn new(fp: FsFile) -> Arc { method attach (line 39) | pub fn attach(&self, source: Arc) { method run (line 53) | async fn run(poller: Arc, mut fp: File) { constant BUF_SIZE (line 25) | const BUF_SIZE: usize = 256; FILE: lib/propolis/src/chardev/mod.rs type SinkNotifier (line 15) | pub type SinkNotifier = Box; type SourceNotifier (line 16) | pub type SourceNotifier = Box; type BlockingSourceConsumer (line 17) | pub type BlockingSourceConsumer = Box bool; method set_notifier (line 25) | fn set_notifier(&self, f: Option); type Source (line 28) | pub trait Source: Send + Sync + 'static { method read (line 30) | fn read(&self) -> Option; method discard (line 32) | fn discard(&self, count: usize) -> usize; method set_autodiscard (line 33) | fn set_autodiscard(&self, active: bool); method set_notifier (line 36) | fn set_notifier(&self, f: Option); type BlockingSource (line 41) | pub trait BlockingSource: Send + Sync + 'static { method set_consumer (line 42) | fn set_consumer(&self, f: Option); type NotifierFn (line 45) | type NotifierFn = dyn Fn(&T) + Send + Sync + 'static; type NotifierCell (line 46) | pub struct NotifierCell { function new (line 51) | pub fn new() -> Self { function set (line 56) | pub fn set(&self, f: Option) { function notify (line 61) | pub fn notify(&self, sink: &dyn Sink) { function set (line 71) | pub fn set(&self, f: Option) { function notify (line 76) | pub fn notify(&self, source: &dyn Source) { type ConsumerCell (line 86) | pub struct ConsumerCell { method new (line 91) | pub fn new() -> Self { method set (line 94) | pub fn set(&self, f: Option) { method consume (line 99) | pub fn consume(&self, data: &[u8]) { FILE: lib/propolis/src/chardev/pollers.rs type Params (line 16) | pub struct Params { method test_defaults (line 548) | pub(crate) fn test_defaults() -> Self { type SourceInner (line 21) | struct SourceInner { method is_full (line 26) | fn is_full(&self) -> bool { type SourceBuffer (line 30) | pub struct SourceBuffer { method new (line 37) | pub fn new(params: Params) -> Arc { method attach (line 50) | pub fn attach(self: &Arc, source: &dyn Source) { method read (line 64) | pub async fn read( method leading_delay (line 87) | async fn leading_delay(&self) -> Option { method wait (line 112) | async fn wait(&self) { method read_data (line 140) | pub fn read_data(&self, buf: &mut [u8], source: &dyn Source) -> usize { method notify (line 154) | fn notify(&self, source: &dyn Source) { type SinkInner (line 173) | struct SinkInner { method is_full (line 178) | fn is_full(&self) -> bool { type SinkBuffer (line 183) | pub struct SinkBuffer { method new (line 189) | pub fn new(size: NonZeroUsize) -> Arc { method attach (line 200) | pub fn attach(self: &Arc, sink: &dyn Sink) { method wait_empty (line 207) | pub async fn wait_empty(&self) { method write (line 227) | pub async fn write( method notify (line 275) | fn notify(&self, sink: &dyn Sink) { type BlockingParams (line 289) | pub struct BlockingParams { type BlockingSourceInner (line 294) | struct BlockingSourceInner { method is_full (line 299) | fn is_full(&self) -> bool { type BlockingSourceBuffer (line 303) | pub struct BlockingSourceBuffer { method new (line 311) | pub fn new(params: BlockingParams) -> Arc { method attach (line 325) | pub fn attach(self: &Arc, source: &dyn BlockingSource) { method read (line 332) | pub async fn read(&self, buf: &mut [u8]) -> Option { method leading_delay (line 357) | async fn leading_delay(&self) -> Option { method wait_for_data (line 382) | async fn wait_for_data(&self) { method consume (line 410) | fn consume(&self, mut data: &[u8]) { function copy_and_consume (line 444) | fn copy_and_consume(src: &mut Vec, dest: &mut [u8]) -> usize { function test_copy_and_consume_1 (line 460) | fn test_copy_and_consume_1() { function test_copy_and_consume_one_u8 (line 526) | fn test_copy_and_consume_one_u8() { function read_empty_returns_zero_bytes (line 565) | async fn read_empty_returns_zero_bytes() { function write_empty_fills_zero_bytes (line 576) | async fn write_empty_fills_zero_bytes() { function read_byte (line 587) | async fn read_byte() { function read_bytes (line 603) | async fn read_bytes() { function read_bytes_blocking (line 621) | async fn read_bytes_blocking() { function write_byte (line 646) | async fn write_byte() { function write_bytes (line 660) | async fn write_bytes() { function write_bytes_beyond_internal_buffer_size (line 675) | async fn write_bytes_beyond_internal_buffer_size() { type TestUart (line 717) | struct TestUart { method new (line 733) | fn new(sink_size: usize, source_size: usize) -> Self { method push_source (line 746) | fn push_source(&self, byte: u8) { method pop_sink (line 753) | fn pop_sink(&self) -> Option { method notify_source (line 758) | async fn notify_source(&self) { method notify_sink (line 762) | async fn notify_sink(&self) { method write (line 768) | fn write(&self, data: u8) -> bool { method set_notifier (line 777) | fn set_notifier(&self, f: Option) { method read (line 783) | fn read(&self) -> Option { method discard (line 787) | fn discard(&self, _count: usize) -> usize { method set_autodiscard (line 790) | fn set_autodiscard(&self, active: bool) { method set_notifier (line 793) | fn set_notifier(&self, f: Option) { FILE: lib/propolis/src/chardev/sock.rs constant BUF_SIZE (line 20) | const BUF_SIZE: usize = 512; constant POLL_INTERVAL_MS (line 21) | const POLL_INTERVAL_MS: usize = 10; constant POLL_MISS_THRESH (line 22) | const POLL_MISS_THRESH: usize = 5; type Inner (line 24) | struct Inner { type UDSock (line 29) | pub struct UDSock { method bind (line 37) | pub fn bind(path: &Path) -> Result> { method spawn (line 67) | pub fn spawn( method notify_connected (line 82) | fn notify_connected(&self, addr: Option) { method wait_for_connect (line 88) | pub fn wait_for_connect(&self) -> bool { method wait_for_disconnect (line 104) | pub fn wait_for_disconnect(&self) { method shutdown (line 112) | pub fn shutdown(&self) { method run (line 117) | pub async fn run( method run_sink (line 150) | async fn run_sink( method run_source (line 165) | async fn run_source( type TestChardev (line 189) | struct TestChardev { method new (line 194) | fn new() -> Self { method write (line 203) | fn write(&self, _data: u8) -> bool { method set_notifier (line 208) | fn set_notifier(&self, f: Option) { method read (line 213) | fn read(&self) -> Option { method discard (line 217) | fn discard(&self, count: usize) -> usize { method set_autodiscard (line 221) | fn set_autodiscard(&self, _active: bool) {} method set_notifier (line 223) | fn set_notifier(&self, f: Option) { function wait_connected (line 228) | async fn wait_connected(sock: &Arc) -> bool { function wait_disconnected (line 236) | async fn wait_disconnected(sock: &Arc) { function bail_on_shutdown_sock (line 245) | async fn bail_on_shutdown_sock() { function abort_wait_for_connect (line 275) | async fn abort_wait_for_connect() { FILE: lib/propolis/src/common.rs type VcpuId (line 14) | pub struct VcpuId(u32); method from (line 17) | fn from(value: u32) -> Self { method from (line 30) | fn from(value: i32) -> Self { method into (line 39) | fn into(self) -> u32 { method into (line 52) | fn into(self) -> i32 { type GuestData (line 88) | pub struct GuestData(T); function fmt (line 91) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function fmt (line 101) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Target (line 111) | type Target = T; function deref (line 113) | fn deref(&self) -> &Self::Target { function deref_mut (line 119) | fn deref_mut(&mut self) -> &mut Self::Target { function from (line 125) | fn from(value: T) -> Self { function borrow (line 131) | fn borrow(&self) -> &T { function numeric_bounds (line 136) | fn numeric_bounds( type ROInner (line 173) | enum ROInner<'a> { type ReadOp (line 181) | pub struct ReadOp<'a> { function from_mapping (line 195) | pub fn from_mapping(op_offset: usize, mapping: SubMapping<'a>) -> Self { function from_buf (line 210) | pub fn from_buf(op_offset: usize, buffer: &'a mut [u8]) -> Self { function new_child (line 224) | pub fn new_child<'b, R>( function len (line 252) | pub fn len(&self) -> usize { function avail (line 258) | pub fn avail(&self) -> usize { function offset (line 261) | pub fn offset(&self) -> usize { function bytes_written (line 264) | pub fn bytes_written(&self) -> usize { function write_u8 (line 268) | pub fn write_u8(&mut self, val: u8) { function write_u16 (line 271) | pub fn write_u16(&mut self, val: u16) { function write_u32 (line 274) | pub fn write_u32(&mut self, val: u32) { function write_u64 (line 277) | pub fn write_u64(&mut self, val: u64) { function write_bytes (line 280) | pub fn write_bytes(&mut self, data: &[u8]) { function fill (line 298) | pub fn fill(&mut self, val: u8) { type WOInner (line 313) | enum WOInner<'a> { type WriteOp (line 321) | pub struct WriteOp<'a> { function from_mapping (line 335) | pub fn from_mapping(op_offset: usize, mapping: SubMapping<'a>) -> Self { function from_buf (line 347) | pub fn from_buf(op_offset: usize, buf: &'a [u8]) -> Self { function new_child (line 361) | pub fn new_child<'b, R>( function len (line 389) | pub fn len(&self) -> usize { function avail (line 395) | pub fn avail(&self) -> usize { function offset (line 398) | pub fn offset(&self) -> usize { function bytes_read (line 401) | pub fn bytes_read(&self) -> usize { function read_val (line 405) | fn read_val(&mut self) -> [u8; COUNT] { function read_u8 (line 410) | pub fn read_u8(&mut self) -> u8 { function read_u16 (line 413) | pub fn read_u16(&mut self) -> u16 { function read_u32 (line 416) | pub fn read_u32(&mut self) -> u32 { function read_u64 (line 419) | pub fn read_u64(&mut self) -> u64 { function read_bytes (line 422) | pub fn read_bytes(&mut self, data: &mut [u8]) { type RWOp (line 444) | pub enum RWOp<'a, 'b> { function offset (line 449) | pub fn offset(&self) -> usize { function len (line 455) | pub fn len(&self) -> usize { function is_read (line 461) | pub fn is_read(&self) -> bool { function is_write (line 464) | pub fn is_write(&self) -> bool { type GuestAddr (line 471) | pub struct GuestAddr(pub u64); method offset (line 474) | pub fn offset(&self, count: usize) -> Self { type Output (line 484) | type Output = Self; method add (line 486) | fn add(self, rhs: usize) -> Self::Output { type Output (line 491) | type Output = Self; method bitand (line 493) | fn bitand(self, rhs: usize) -> Self::Output { type GuestRegion (line 481) | pub struct GuestRegion(pub GuestAddr, pub usize); constant PAGE_SIZE (line 500) | pub const PAGE_SIZE: usize = 0x1000; constant PAGE_OFFSET (line 501) | pub const PAGE_OFFSET: usize = 0xfff; constant PAGE_MASK (line 502) | pub const PAGE_MASK: usize = usize::MAX - PAGE_OFFSET; constant PAGE_SHIFT (line 503) | pub const PAGE_SHIFT: usize = 12; function round_up_p2 (line 505) | pub fn round_up_p2(val: usize, to: usize) -> usize { constant KB (line 513) | pub const KB: usize = 1024; constant MB (line 515) | pub const MB: usize = 1024 * 1024; constant GB (line 517) | pub const GB: usize = 1024 * 1024 * 1024; constant TB (line 519) | pub const TB: usize = 1024 * 1024 * 1024 * 1024; function readop_base_size (line 526) | fn readop_base_size() { function writeop_base_size (line 546) | fn writeop_base_size() { function readop_oversize (line 563) | fn readop_oversize() { function writeop_oversize (line 571) | fn writeop_oversize() { function readop_short (line 578) | fn readop_short() { function writeop_short (line 587) | fn writeop_short() { FILE: lib/propolis/src/cpuid.rs function from_raw (line 20) | pub fn from_raw( type SpecializeError (line 41) | pub enum SpecializeError { type Specializer (line 57) | pub struct Specializer { method new (line 66) | pub fn new() -> Self { method with_vcpu_count (line 71) | pub fn with_vcpu_count(self, count: NonZeroU8, has_smt: bool) -> Self { method with_vcpuid (line 76) | pub fn with_vcpuid(self, vcpuid: i32) -> Self { method with_cpu_topo (line 86) | pub fn with_cpu_topo( method clear_cpu_topo (line 104) | pub fn clear_cpu_topo(self, clear: impl Iterator) -> ... method with_cache_topo (line 115) | pub fn with_cache_topo(self) -> Self { method execute (line 121) | pub fn execute( method fix_amd_cache_topo (line 161) | fn fix_amd_cache_topo( method fix_cpu_topo (line 201) | fn fix_cpu_topo(&self, set: &mut CpuidSet) -> Result<(), SpecializeErr... type TopoKind (line 467) | pub enum TopoKind { method supported (line 482) | pub fn supported() -> std::array::IntoIter { function parse_brand_string (line 491) | pub fn parse_brand_string( FILE: lib/propolis/src/enlightenment/bhyve.rs type BhyveGuestInterface (line 29) | pub struct BhyveGuestInterface; method type_name (line 32) | fn type_name(&self) -> &'static str { method add_cpuid (line 38) | fn add_cpuid(&self, cpuid: &mut CpuidSet) -> Result<(), AddCpuidError> { method rdmsr (line 57) | fn rdmsr(&self, _vcpu: VcpuId, _msr: MsrId) -> RdmsrOutcome { method wrmsr (line 61) | fn wrmsr(&self, _vcpu: VcpuId, _msr: MsrId, _value: u64) -> WrmsrOutcome { method attach (line 65) | fn attach(&self, _parent: &MemAccessor, _vmm_hdl: Arc) {} FILE: lib/propolis/src/enlightenment/hyperv/bits.rs constant HYPERV_MIN_REQUIRED_CPUID_LEAF (line 16) | pub(super) const HYPERV_MIN_REQUIRED_CPUID_LEAF: u32 = 0x40000005; constant HYPERV_LEAF_0_VALUES (line 27) | const HYPERV_LEAF_0_VALUES: CpuidValues = CpuidValues { function hyperv_leaf_0_values (line 44) | pub(super) fn hyperv_leaf_0_values(max_leaf: u32) -> CpuidValues { constant HYPERV_LEAF_1_VALUES (line 55) | pub(super) const HYPERV_LEAF_1_VALUES: CpuidValues = constant HYPERV_LEAF_2_VALUES (line 62) | pub(super) const HYPERV_LEAF_2_VALUES: CpuidValues = method default (line 83) | fn default() -> Self { constant HYPERV_LEAF_4_VALUES (line 92) | pub(super) const HYPERV_LEAF_4_VALUES: CpuidValues = constant HYPERV_LEAF_5_VALUES (line 98) | pub(super) const HYPERV_LEAF_5_VALUES: CpuidValues = constant HV_X64_MSR_GUEST_OS_ID (line 108) | pub(super) const HV_X64_MSR_GUEST_OS_ID: u32 = 0x4000_0000; constant HV_X64_MSR_HYPERCALL (line 117) | pub(super) const HV_X64_MSR_HYPERCALL: u32 = 0x4000_0001; constant HV_X64_MSR_VP_INDEX (line 123) | pub(super) const HV_X64_MSR_VP_INDEX: u32 = 0x4000_0002; constant HV_X64_MSR_TIME_REF_COUNT (line 130) | pub(super) const HV_X64_MSR_TIME_REF_COUNT: u32 = 0x4000_0020; constant HV_X64_MSR_REFERENCE_TSC (line 140) | pub(super) const HV_X64_MSR_REFERENCE_TSC: u32 = 0x4000_0021; FILE: lib/propolis/src/enlightenment/hyperv/hypercall.rs constant LOCKED_BIT (line 12) | const LOCKED_BIT: u64 = 1; constant LOCKED_MASK (line 13) | const LOCKED_MASK: u64 = 1 << LOCKED_BIT; constant ENABLED_BIT (line 14) | const ENABLED_BIT: u64 = 0; constant ENABLED_MASK (line 15) | const ENABLED_MASK: u64 = 1 << ENABLED_BIT; type MsrHypercallValue (line 30) | pub(super) struct MsrHypercallValue(pub(super) u64); method fmt (line 33) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method gpfn (line 46) | pub fn gpfn(&self) -> Pfn { method gpa (line 52) | pub fn gpa(&self) -> GuestAddr { method locked (line 59) | pub fn locked(&self) -> bool { method enabled (line 64) | pub fn enabled(&self) -> bool { method clear_enabled (line 69) | pub fn clear_enabled(&mut self) { constant HYPERCALL_INSTRUCTION_SEQUENCE (line 81) | const HYPERCALL_INSTRUCTION_SEQUENCE: [u8; 8] = function hypercall_page_contents (line 85) | pub(super) fn hypercall_page_contents() -> [u8; PAGE_SIZE] { FILE: lib/propolis/src/enlightenment/hyperv/mod.rs function hyperv_wrmsr_guest_os_id (line 49) | fn hyperv_wrmsr_guest_os_id(val: u64) {} function hyperv_wrmsr_hypercall (line 50) | fn hyperv_wrmsr_hypercall(val: u64, gpa: u64, locked: bool, enabled: boo... function hyperv_wrmsr_reference_tsc (line 52) | fn hyperv_wrmsr_reference_tsc(val: u64, gpa: u64, enabled: bool) {} function hyperv_wrmsr_hypercall_bad_gpa (line 53) | fn hyperv_wrmsr_hypercall_bad_gpa(gpa: u64) {} function hyperv_rdmsr_reference_time (line 54) | fn hyperv_rdmsr_reference_time(time_units: u64) {} constant TYPE_NAME (line 57) | const TYPE_NAME: &str = "guest-hyperv-interface"; type Features (line 61) | pub struct Features { type HypercallOverlay (line 67) | struct HypercallOverlay(OverlayPage); type TscOverlay (line 70) | struct TscOverlay(OverlayPage); type OverlayPages (line 75) | struct OverlayPages { type Inner (line 80) | struct Inner { method new (line 98) | fn new(features: &Features) -> Self { method reset (line 114) | fn reset(&mut self) { method handle_rdmsr_reference_tsc (line 132) | fn handle_rdmsr_reference_tsc(&self) -> RdmsrOutcome { method handle_wrmsr_reference_tsc (line 150) | fn handle_wrmsr_reference_tsc(&mut self, value: u64) -> WrmsrOutcome { type HyperV (line 181) | pub struct HyperV { method new (line 198) | pub fn new(log: &slog::Logger, features: Features) -> Self { method vmm_hdl (line 223) | fn vmm_hdl(&self) -> &Arc { method handle_wrmsr_guest_os_id (line 231) | fn handle_wrmsr_guest_os_id(&self, value: u64) -> WrmsrOutcome { method handle_wrmsr_hypercall (line 253) | fn handle_wrmsr_hypercall(&self, value: u64) -> WrmsrOutcome { method handle_rdmsr_time_ref_count (line 319) | fn handle_rdmsr_time_ref_count(&self) -> RdmsrOutcome { method handle_wrmsr_reference_tsc (line 387) | fn handle_wrmsr_reference_tsc(&self, value: u64) -> WrmsrOutcome { method add_cpuid (line 393) | fn add_cpuid(&self, cpuid: &mut CpuidSet) -> Result<(), AddCpuidError> { method rdmsr (line 439) | fn rdmsr(&self, vcpu: VcpuId, msr: MsrId) -> RdmsrOutcome { method wrmsr (line 459) | fn wrmsr(&self, _vcpu: VcpuId, msr: MsrId, value: u64) -> WrmsrOutcome { method attach (line 471) | fn attach(&self, mem_acc: &MemAccessor, vmm_hdl: Arc) { method type_name (line 503) | fn type_name(&self) -> &'static str { method pause (line 507) | fn pause(&self) { method resume (line 531) | fn resume(&self) { method reset (line 566) | fn reset(&self) { method halt (line 577) | fn halt(&self) { method migrate (line 582) | fn migrate(&'_ self) -> Migrator<'_> { method export (line 588) | fn export( method import (line 612) | fn import( type ReferenceTscV1 (line 712) | pub struct ReferenceTscV1 { type HyperVEnlightenmentV1 (line 730) | pub struct HyperVEnlightenmentV1 { method id (line 737) | fn id() -> SchemaId { FILE: lib/propolis/src/enlightenment/hyperv/overlay.rs type OverlayError (line 92) | pub(super) enum OverlayError { type OverlayContents (line 124) | pub(super) struct OverlayContents(pub(super) Box<[u8; PAGE_SIZE]>); method fmt (line 133) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Error (line 139) | type Error = usize; method try_from (line 141) | fn try_from(value: Vec) -> Result { method default (line 127) | fn default() -> Self { type OverlayKind (line 150) | pub(super) enum OverlayKind { method priority (line 179) | fn priority(&self) -> u32 { method get_contents (line 198) | fn get_contents(&self) -> OverlayContents { method eq (line 213) | fn eq(&self, other: &Self) -> bool { method cmp (line 221) | fn cmp(&self, other: &Self) -> std::cmp::Ordering { method partial_cmp (line 227) | fn partial_cmp(&self, other: &Self) -> Option { type OverlayPage (line 234) | pub(super) struct OverlayPage { method fmt (line 248) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method move_to (line 259) | pub(super) fn move_to(&mut self, new_pfn: Pfn) -> Result<(), OverlayEr... method drop (line 267) | fn drop(&mut self) { type OverlaySet (line 277) | struct OverlaySet { method active (line 293) | fn active(&self) -> &OverlayKind { type ManagerInner (line 300) | struct ManagerInner { method add_overlay (line 307) | fn add_overlay( method add_overlay_using_mapping (line 321) | fn add_overlay_using_mapping( method remove_overlay (line 353) | fn remove_overlay( method move_overlay (line 394) | fn move_overlay( type OverlayManager (line 456) | pub(super) struct OverlayManager { method attach (line 470) | pub(super) fn attach(&self, parent_mem: &MemAccessor) { method is_empty (line 476) | pub(super) fn is_empty(&self) -> bool { method add_overlay (line 482) | pub(super) fn add_overlay( method remove_overlay (line 494) | fn remove_overlay( method move_overlay (line 507) | fn move_overlay( method default (line 462) | fn default() -> Self { type MappedPfn (line 534) | pub(super) struct MappedPfn<'a> { function new (line 541) | pub(super) fn new( function pfn (line 557) | pub(super) fn pfn(&self) -> Pfn { function write_page (line 568) | pub(super) fn write_page(&mut self, page: &OverlayContents) { function read_page (line 583) | pub(super) fn read_page(&mut self, page: &mut OverlayContents) { function filled (line 603) | fn filled(fill: u8) -> Self { type TestCtx (line 609) | struct TestCtx { method new (line 619) | fn new() -> Self { method write_page (line 632) | fn write_page(&self, pfn: Pfn, contents: &OverlayContents) { method assert_pfn_has_fill (line 640) | fn assert_pfn_has_fill(&self, pfn: Pfn, fill: u8) { function basic_add (line 657) | fn basic_add() { function basic_move (line 673) | fn basic_move() { function underlay_restored_after_drop (line 695) | fn underlay_restored_after_drop() { function out_of_bounds_pfn (line 713) | fn out_of_bounds_pfn() { function duplicate_kind_at_pfn (line 727) | fn duplicate_kind_at_pfn() { function multiple_overlays (line 742) | fn multiple_overlays() { function remove_nonexistent_overlay (line 769) | fn remove_nonexistent_overlay() { FILE: lib/propolis/src/enlightenment/hyperv/tsc.rs constant ENABLED_BIT (line 148) | const ENABLED_BIT: u64 = 0; constant ENABLED_MASK (line 149) | const ENABLED_MASK: u64 = 1 << ENABLED_BIT; type MsrReferenceTscValue (line 155) | pub(super) struct MsrReferenceTscValue(pub(super) u64); method fmt (line 158) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method gpfn (line 170) | pub fn gpfn(&self) -> Pfn { method gpa (line 176) | pub fn gpa(&self) -> GuestAddr { method enabled (line 181) | pub fn enabled(&self) -> bool { type ReferenceTscPage (line 189) | pub(super) struct ReferenceTscPage { method new (line 225) | pub(super) fn new(guest_freq: u64) -> Self { function from (line 238) | fn from(value: &ReferenceTscPage) -> Self { function guest_freq_to_scale (line 249) | fn guest_freq_to_scale(guest_freq: u64) -> Option { type ReferenceTsc (line 261) | pub(super) enum ReferenceTsc { method is_present (line 275) | pub(super) fn is_present(&self) -> bool { method set_msr_value (line 287) | pub(super) fn set_msr_value(&mut self, value: MsrReferenceTscValue) { method create_overlay (line 308) | pub(super) fn create_overlay( FILE: lib/propolis/src/enlightenment/mod.rs type Enlightenment (line 74) | pub trait Enlightenment: Lifecycle + Send + Sync { method as_lifecycle (line 75) | fn as_lifecycle(self: Arc) -> Arc method attach (line 95) | fn attach(&self, mem_acc: &MemAccessor, vmm_hdl: Arc); method add_cpuid (line 102) | fn add_cpuid(&self, cpuid: &mut CpuidSet) -> Result<(), AddCpuidError>; method rdmsr (line 106) | fn rdmsr(&self, vcpu: VcpuId, msr: MsrId) -> RdmsrOutcome; method wrmsr (line 110) | fn wrmsr(&self, vcpu: VcpuId, msr: MsrId, value: u64) -> WrmsrOutcome; type AddCpuidError (line 119) | pub enum AddCpuidError { function add_cpuid (line 142) | fn add_cpuid( FILE: lib/propolis/src/exits.rs type VmExit (line 18) | pub struct VmExit { method parse (line 33) | pub fn parse(exit: &vm_exit, api_version: u32) -> Self { method default (line 28) | fn default() -> Self { type IoPort (line 43) | pub struct IoPort { type InoutReq (line 49) | pub enum InoutReq { type MmioReadReq (line 55) | pub struct MmioReadReq { type MmioWriteReq (line 60) | pub struct MmioWriteReq { type MmioReq (line 67) | pub enum MmioReq { type SvmDetail (line 73) | pub struct SvmDetail { type VmxDetail (line 79) | pub struct VmxDetail { method from (line 87) | fn from(raw: &bhyve_api::vm_exit_vmx) -> Self { type InstEmul (line 99) | pub struct InstEmul { method bytes (line 105) | pub fn bytes(&self) -> &[u8] { method from (line 110) | fn from(raw: &bhyve_api::vm_inst_emul) -> Self { type Suspend (line 121) | pub enum Suspend { type SuspendDetail (line 128) | pub struct SuspendDetail { type VmExitKind (line 134) | pub enum VmExitKind { method code (line 150) | pub const fn code(&self) -> i32 { method is_consistent (line 173) | pub const fn is_consistent(&self) -> bool { method parse (line 209) | pub fn parse(exit: &vm_exit, api_version: u32) -> Self { type InoutRes (line 338) | pub enum InoutRes { method emulate_failed (line 345) | pub fn emulate_failed(req: &InoutReq) -> Self { type MmioReadRes (line 353) | pub struct MmioReadRes { type MmioWriteRes (line 358) | pub struct MmioWriteRes { type MmioRes (line 363) | pub enum MmioRes { method emulate_failed (line 370) | pub fn emulate_failed(req: &MmioReq) -> Self { type VmEntry (line 385) | pub enum VmEntry { method to_raw (line 391) | pub fn to_raw(&self, cpuid: i32, exit_ptr: *mut vm_exit) -> vm_entry { FILE: lib/propolis/src/firmware/smbios/bits.rs constant ANCHOR (line 7) | const ANCHOR: [u8; 4] = [b'_', b'S', b'M', b'_']; constant IANCHOR (line 8) | const IANCHOR: [u8; 5] = [b'_', b'D', b'M', b'I', b'_']; constant TABLE_TERMINATOR (line 11) | pub const TABLE_TERMINATOR: [u8; 2] = [0, 0]; type EntryPoint (line 16) | pub(crate) struct EntryPoint { method new (line 47) | pub(crate) fn new() -> Self { method update_cksums (line 65) | pub(crate) fn update_cksums(&mut self) { method to_raw_bytes (line 79) | pub(crate) fn to_raw_bytes(&self) -> &[u8] { type StructureHeader (line 91) | pub(crate) struct StructureHeader { type Type0 (line 111) | pub(crate) struct Type0 { type Type1 (line 130) | pub(crate) struct Type1 { type Type2 (line 148) | pub(crate) struct Type2 { type Type3 (line 169) | pub(crate) struct Type3 { type Type4 (line 191) | pub(crate) struct Type4 { type Type16 (line 222) | pub(crate) struct Type16 { type Type17 (line 237) | pub(crate) struct Type17 { type Type32 (line 267) | pub(crate) struct Type32 { type Type127 (line 277) | pub(crate) struct Type127 { type RawTable (line 282) | pub(crate) unsafe trait RawTable: Sized { constant TYPE (line 283) | const TYPE: u8; method new (line 285) | fn new(handle: u16) -> Self { method header_mut (line 299) | fn header_mut(&mut self) -> &mut StructureHeader; method to_raw_bytes (line 301) | fn to_raw_bytes(&self) -> &[u8] { function entry_point (line 317) | fn entry_point() { function struct_header (line 321) | fn struct_header() { function bios_information (line 326) | fn bios_information() { function system_information (line 333) | fn system_information() { function baseboard_information (line 340) | fn baseboard_information() { function system_enclosure (line 347) | fn system_enclosure() { function processor_information (line 354) | fn processor_information() { function physical_memory_array (line 361) | fn physical_memory_array() { function memory_device (line 368) | fn memory_device() { function system_boot_information (line 375) | fn system_boot_information() { FILE: lib/propolis/src/firmware/smbios/mod.rs type Tables (line 16) | pub struct Tables { method new (line 29) | pub fn new(eot_handle: Handle) -> Self { method add (line 46) | pub fn add( method commit (line 68) | pub fn commit(self) -> TableBytes { type TableBytes (line 98) | pub struct TableBytes { type TableError (line 105) | pub enum TableError { type Handle (line 118) | pub struct Handle(pub u16); constant UNKNOWN (line 120) | pub const UNKNOWN: Self = Self(0xffff); method fmt (line 123) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { method from (line 134) | fn from(value: u16) -> Self { method default (line 129) | fn default() -> Self { function from (line 139) | fn from(value: Handle) -> Self { type SmbString (line 151) | pub struct SmbString(Vec); method empty (line 153) | pub const fn empty() -> Self { method is_empty (line 156) | pub fn is_empty(&self) -> bool { method len (line 159) | pub fn len(&self) -> usize { method as_ref (line 164) | fn as_ref(&self) -> &[u8] { type Error (line 169) | type Error = SmbStringNulError; method try_from (line 171) | fn try_from(value: Vec) -> Result { type Error (line 180) | type Error = SmbStringNulError; method try_from (line 182) | fn try_from(value: &str) -> Result { type Error (line 187) | type Error = SmbStringNulError; method try_from (line 189) | fn try_from(value: String) -> Result { type SmbStringNulError (line 198) | pub struct SmbStringNulError(); FILE: lib/propolis/src/firmware/smbios/table.rs type Table (line 20) | pub trait Table { method render (line 21) | fn render(&self, handle: Handle) -> Vec; method render (line 45) | fn render(&self, handle: Handle) -> Vec { method render (line 366) | fn render(&self, handle: Handle) -> Vec { method render (line 469) | fn render(&self, handle: Handle) -> Vec { method render (line 648) | fn render(&self, handle: Handle) -> Vec { method render (line 823) | fn render(&self, handle: Handle) -> Vec { method render (line 858) | fn render(&self, handle: Handle) -> Vec { method render (line 871) | fn render(&self, handle: Handle) -> Vec { type Type0 (line 25) | pub struct Type0 { method default (line 283) | fn default() -> Self { type Type1 (line 355) | pub struct Type1 { type WakeUpType (line 394) | pub enum WakeUpType { type Type4 (line 432) | pub struct Type4 { method set_family (line 458) | pub fn set_family(&mut self, family: u16) { type ProcType (line 511) | pub enum ProcType { type ProcStatus (line 534) | pub enum ProcStatus { method is_populated (line 561) | pub fn is_populated(&self) -> bool { constant STATUS_POPULATED (line 558) | const STATUS_POPULATED: u8 = 1 << 6; type Type16 (line 626) | pub struct Type16 { method set_max_capacity (line 636) | pub fn set_max_capacity(&mut self, capacity_bytes: usize) { type Location (line 672) | pub enum Location { type ArrayUse (line 712) | pub enum ArrayUse { type ErrorCorrection (line 737) | pub enum ErrorCorrection { type Type17 (line 780) | pub struct Type17 { method set_size (line 805) | pub fn set_size(&mut self, size_bytes: Option) { type Type32 (line 856) | pub struct Type32(); type Type127 (line 869) | pub struct Type127(); function render_table (line 883) | fn render_table( type StringTable (line 927) | struct StringTable<'a> { function new (line 932) | fn new() -> Self { function add (line 937) | fn add(&mut self, data: &'a SmbString) -> u8 { function render (line 952) | fn render(mut self) -> Option> { FILE: lib/propolis/src/hw/bhyve/atpic.rs type BhyveAtPic (line 12) | pub struct BhyveAtPic { method create (line 16) | pub fn create(hdl: Arc) -> Arc { method type_name (line 22) | fn type_name(&self) -> &'static str { method migrate (line 25) | fn migrate(&self) -> Migrator<'_> { method export (line 30) | fn export( method import (line 38) | fn import( type AtPicV1 (line 55) | pub struct AtPicV1 { method from (line 71) | fn from(value: bhyve_api::vdi_atpic_v1) -> Self { method read (line 113) | pub(super) fn read(hdl: &vmm::VmmHdl) -> std::io::Result { method write (line 121) | pub(super) fn write(self, hdl: &vmm::VmmHdl) -> std::io::Result<()> { method id (line 129) | fn id() -> SchemaId { type AtPicChipV1 (line 59) | pub struct AtPicChipV1 { method from (line 82) | fn from(value: bhyve_api::vdi_atpic_chip_v1) -> Self { function from (line 76) | fn from(value: AtPicV1) -> Self { function from (line 97) | fn from(value: AtPicChipV1) -> Self { FILE: lib/propolis/src/hw/bhyve/atpit.rs type BhyveAtPit (line 12) | pub struct BhyveAtPit { method create (line 16) | pub fn create(hdl: Arc) -> Arc { method type_name (line 22) | fn type_name(&self) -> &'static str { method migrate (line 25) | fn migrate(&self) -> Migrator<'_> { method export (line 30) | fn export( method import (line 38) | fn import( type AtPitV1 (line 55) | pub struct AtPitV1 { method from (line 59) | fn from(value: bhyve_api::vdi_atpit_v1) -> Self { method into (line 70) | fn into(self) -> bhyve_api::vdi_atpit_v1 { method read (line 119) | pub(super) fn read(hdl: &vmm::VmmHdl) -> std::io::Result { method write (line 127) | pub(super) fn write(self, hdl: &vmm::VmmHdl) -> std::io::Result<()> { method id (line 135) | fn id() -> SchemaId { type AtPitChannelV1 (line 82) | pub struct AtPitChannelV1 { method from (line 92) | fn from(value: bhyve_api::vdi_atpit_channel_v1) -> Self { method into (line 105) | fn into(self) -> bhyve_api::vdi_atpit_channel_v1 { FILE: lib/propolis/src/hw/bhyve/hpet.rs type BhyveHpet (line 12) | pub struct BhyveHpet { method create (line 16) | pub fn create(hdl: Arc) -> Arc { method type_name (line 22) | fn type_name(&self) -> &'static str { method migrate (line 25) | fn migrate(&self) -> Migrator<'_> { method export (line 30) | fn export( method import (line 37) | fn import( type HpetV1 (line 54) | pub struct HpetV1 { method from (line 63) | fn from(value: bhyve_api::vdi_hpet_v1) -> Self { method read (line 117) | pub(super) fn read(hdl: &vmm::VmmHdl) -> std::io::Result { method write (line 125) | pub(super) fn write(self, hdl: &vmm::VmmHdl) -> std::io::Result<()> { method id (line 133) | fn id() -> SchemaId { function from (line 74) | fn from(value: HpetV1) -> Self { type HpetTimerV1 (line 86) | pub struct HpetTimerV1 { method from (line 94) | fn from(value: bhyve_api::vdi_hpet_timer_v1) -> Self { function from (line 105) | fn from(value: HpetTimerV1) -> Self { FILE: lib/propolis/src/hw/bhyve/ioapic.rs type BhyveIoApic (line 12) | pub struct BhyveIoApic { method create (line 16) | pub fn create(hdl: Arc) -> Arc { method type_name (line 22) | fn type_name(&self) -> &'static str { method migrate (line 25) | fn migrate(&self) -> Migrator<'_> { method export (line 30) | fn export( method import (line 38) | fn import( type IoApicV1 (line 55) | pub struct IoApicV1 { method from (line 62) | fn from(value: bhyve_api::vdi_ioapic_v1) -> Self { method into (line 72) | fn into(self) -> bhyve_api::vdi_ioapic_v1 { method read (line 83) | pub(super) fn read(hdl: &vmm::VmmHdl) -> std::io::Result { method write (line 91) | pub(super) fn write(self, hdl: &vmm::VmmHdl) -> std::io::Result<()> { method id (line 99) | fn id() -> SchemaId { FILE: lib/propolis/src/hw/bhyve/pmtimer.rs type BhyvePmTimer (line 12) | pub struct BhyvePmTimer { method create (line 21) | pub fn create(hdl: Arc, ioport: u16) -> Arc { method update_attachment (line 27) | fn update_attachment(&self) { type Inner (line 16) | struct Inner { method type_name (line 50) | fn type_name(&self) -> &'static str { method reset (line 53) | fn reset(&self) { method resume (line 62) | fn resume(&self) { method start (line 66) | fn start(&self) -> anyhow::Result<()> { method migrate (line 70) | fn migrate(&self) -> Migrator<'_> { method export (line 75) | fn export( method import (line 83) | fn import( type PmTimerV1 (line 102) | pub struct PmTimerV1 { method read (line 106) | pub(super) fn read(hdl: &vmm::VmmHdl) -> std::io::Result { method write (line 119) | pub(super) fn write(self, hdl: &vmm::VmmHdl) -> std::io::Result<()> { method id (line 130) | fn id() -> SchemaId { FILE: lib/propolis/src/hw/bhyve/rtc.rs type BhyveRtc (line 14) | pub struct BhyveRtc { method create (line 18) | pub fn create(hdl: Arc) -> Arc { method set_time (line 25) | pub fn set_time(&self, time: Duration) -> io::Result<()> { method memsize_to_nvram (line 37) | pub fn memsize_to_nvram( method type_name (line 117) | fn type_name(&self) -> &'static str { method migrate (line 120) | fn migrate(&self) -> Migrator<'_> { method export (line 125) | fn export( method import (line 133) | fn import( type BhyveRtcV2 (line 150) | pub struct BhyveRtcV2 { method from (line 158) | fn from(value: bhyve_api::vdi_rtc_v2) -> Self { method into (line 168) | fn into(self) -> bhyve_api::vdi_rtc_v2 { method read (line 179) | pub(super) fn read(hdl: &vmm::VmmHdl) -> std::io::Result { method write (line 187) | pub(super) fn write(self, hdl: &vmm::VmmHdl) -> std::io::Result<()> { method id (line 195) | fn id() -> SchemaId { FILE: lib/propolis/src/hw/chipset/i440fx.rs constant ADDR_PCIE_ECAM_REGION (line 33) | const ADDR_PCIE_ECAM_REGION: usize = 0xe000_0000; constant LEN_PCI_ECAM_REGION (line 34) | const LEN_PCI_ECAM_REGION: usize = 0x1000_0000; constant DEFAULT_HB_BDF (line 36) | pub const DEFAULT_HB_BDF: Bdf = Bdf::new_unchecked(0, 0, 0); constant DEFAULT_LPC_BDF (line 37) | pub const DEFAULT_LPC_BDF: Bdf = Bdf::new_unchecked(0, 1, 0); constant DEFAULT_PM_BDF (line 38) | pub const DEFAULT_PM_BDF: Bdf = Bdf::new_unchecked(0, 1, 3); type LNKPin (line 40) | struct LNKPin { method new (line 48) | fn new() -> Self { method reassign (line 51) | fn reassign(&self, new_pin: Option) { type LNKPinInner (line 43) | struct LNKPinInner { method assert (line 68) | fn assert(&self) { method deassert (line 75) | fn deassert(&self) { method pulse (line 82) | fn pulse(&self) { method is_asserted (line 88) | fn is_asserted(&self) -> bool { method import_state (line 92) | fn import_state(&self, is_asserted: bool) { type IrqConfig (line 101) | struct IrqConfig { method create (line 111) | fn create(hdl: Arc) -> Arc { method set_lnk_route (line 126) | fn set_lnk_route(&self, idx: usize, irq: Option) { method intr_pin (line 130) | fn intr_pin(&self, idx: usize) -> Arc { constant PIR_OFFSET (line 136) | const PIR_OFFSET: usize = 0x60; constant PIR_LEN (line 137) | const PIR_LEN: usize = 4; constant PIR_END (line 138) | const PIR_END: usize = PIR_OFFSET + PIR_LEN; constant PIR_MASK_DISABLE (line 140) | const PIR_MASK_DISABLE: u8 = 0x80; constant PIR_MASK_IRQ (line 141) | const PIR_MASK_IRQ: u8 = 0x0f; constant SCI_IRQ (line 143) | const SCI_IRQ: u8 = 0x9; function valid_pir_irq (line 145) | fn valid_pir_irq(irq: u8) -> bool { type Opts (line 151) | pub struct Opts { type I440FxHostBridge (line 157) | pub struct I440FxHostBridge { method create (line 169) | pub fn create( method attach (line 205) | pub fn attach(self: &Arc, machine: &Machine) { method pci_cfg_rw (line 239) | fn pci_cfg_rw(&self, bdf: &Bdf, rwo: RWOp) -> Option<()> { method pio_rw (line 247) | fn pio_rw(&self, port: u16, rwo: RWOp) { method pcie_ecam_rw (line 261) | fn pcie_ecam_rw(&self, rwo: RWOp) { method device_state (line 271) | fn device_state(&self) -> &pci::DeviceState { method type_name (line 276) | fn type_name(&self) -> &'static str { method reset (line 279) | fn reset(&self) { method start (line 282) | fn start(&self) -> anyhow::Result<()> { method pause (line 286) | fn pause(&self) { method resume (line 289) | fn resume(&self) { method halt (line 292) | fn halt(&self) { method migrate (line 295) | fn migrate(&self) -> Migrator<'_> { method pci_attach (line 300) | fn pci_attach( method power_pin (line 315) | fn power_pin(&self) -> Arc { method reset_pin (line 318) | fn reset_pin(&self) -> Arc { method export (line 323) | fn export( method import (line 335) | fn import( type Piix3Lpc (line 347) | pub struct Piix3Lpc { method create (line 360) | pub fn create(hdl: Arc) -> Arc { method attach (line 389) | pub fn attach(self: &Arc, pio: &PioBus) { method pio_rw (line 403) | fn pio_rw(&self, port: u16, rwo: RWOp) { method write_pir (line 429) | fn write_pir(&self, idx: usize, val: u8) { method route_lintr (line 447) | pub fn route_lintr(&self, bdf: Bdf) -> Option { method irq_pin (line 463) | pub fn irq_pin(&self, irq: u8) -> Option> { method device_state (line 471) | fn device_state(&self) -> &pci::DeviceState { method cfg_rw (line 475) | fn cfg_rw(&self, region: u8, rwo: RWOp) { method type_name (line 495) | fn type_name(&self) -> &'static str { method reset (line 498) | fn reset(&self) { method migrate (line 501) | fn migrate(&self) -> Migrator<'_> { method export (line 506) | fn export( method import (line 530) | fn import( constant PMCFG_OFFSET (line 553) | const PMCFG_OFFSET: usize = 0x40; constant PMCFG_LEN (line 554) | const PMCFG_LEN: usize = 0x98; constant PMBASE_DEFAULT (line 556) | const PMBASE_DEFAULT: u16 = 0xb000; constant PMBASE_LEN (line 557) | const PMBASE_LEN: u16 = 0x40; constant SMBBASE_DEFAULT (line 558) | const SMBBASE_DEFAULT: u16 = 0xb100; type PmCfg (line 562) | enum PmCfg { type PmReg (line 625) | enum PmReg { constant PM_TMR_OFFSET (line 730) | const PM_TMR_OFFSET: u16 = 0x8; type PMRegs (line 733) | struct PMRegs { method reset (line 750) | fn reset(&mut self) { method pmtimer_port (line 753) | fn pmtimer_port(&self) -> u16 { type Error (line 769) | type Error = MigrateStateError; method try_from (line 771) | fn try_from(value: migrate::Piix3PmV1) -> Result { method default (line 740) | fn default() -> Self { function from (line 759) | fn from(value: PMRegs) -> Self { type Piix3PM (line 798) | pub struct Piix3PM { method create (line 809) | pub fn create( method attach (line 843) | pub fn attach(self: &Arc, pio: &PioBus) { method pio_rw (line 851) | fn pio_rw(&self, _port: u16, mut rwo: RWOp) { method pmcfg_read (line 858) | fn pmcfg_read(&self, id: &PmCfg, ro: &mut ReadOp) { method pmcfg_write (line 909) | fn pmcfg_write(&self, id: &PmCfg, _wo: &WriteOp) { method pmreg_read (line 914) | fn pmreg_read(&self, id: &PmReg, ro: &mut ReadOp) { method pmreg_write (line 950) | fn pmreg_write(&self, id: &PmReg, wo: &mut WriteOp) { method device_state (line 995) | fn device_state(&self) -> &pci::DeviceState { method cfg_rw (line 998) | fn cfg_rw(&self, region: u8, mut rwo: RWOp) { method type_name (line 1008) | fn type_name(&self) -> &'static str { method reset (line 1011) | fn reset(&self) { method resume (line 1021) | fn resume(&self) { method start (line 1024) | fn start(&self) -> anyhow::Result<()> { method migrate (line 1027) | fn migrate(&self) -> Migrator<'_> { method export (line 1032) | fn export( method import (line 1047) | fn import( type I440FxHostBridgeV1 (line 1070) | pub struct I440FxHostBridgeV1 { method id (line 1074) | fn id() -> SchemaId { type Piix3LpcV1 (line 1080) | pub struct Piix3LpcV1 { method id (line 1085) | fn id() -> SchemaId { type Piix3PmV1 (line 1091) | pub struct Piix3PmV1 { method id (line 1098) | fn id() -> SchemaId { function setup_attach (line 1115) | fn setup_attach(scaffold: &Scaffold, dev: Arc) -> pci::Bus { function topo_attach (line 1122) | fn topo_attach(topo: &pci::topology::Topology, dev: Arc) { function hb_pci_cfg_read (line 1133) | fn hb_pci_cfg_read() { function hb_pci_cfg_write (line 1147) | fn hb_pci_cfg_write() { function lpc_pci_cfg_read (line 1161) | fn lpc_pci_cfg_read() { function lpc_pci_cfg_write (line 1172) | fn lpc_pci_cfg_write() { function pm_pci_cfg_read (line 1183) | fn pm_pci_cfg_read() { function pm_pci_cfg_write (line 1196) | fn pm_pci_cfg_write() { FILE: lib/propolis/src/hw/chipset/mod.rs type Chipset (line 12) | pub trait Chipset: Send + Sync { method pci_attach (line 13) | fn pci_attach( method power_pin (line 19) | fn power_pin(&self) -> Arc; method reset_pin (line 20) | fn reset_pin(&self) -> Arc; FILE: lib/propolis/src/hw/ibmpc.rs constant PORT_COM1 (line 7) | pub const PORT_COM1: u16 = 0x3f8; constant PORT_COM2 (line 8) | pub const PORT_COM2: u16 = 0x2f8; constant PORT_COM3 (line 9) | pub const PORT_COM3: u16 = 0x3e8; constant PORT_COM4 (line 10) | pub const PORT_COM4: u16 = 0x2e8; constant IRQ_COM1 (line 11) | pub const IRQ_COM1: u8 = 4; constant IRQ_COM2 (line 12) | pub const IRQ_COM2: u8 = 3; constant IRQ_COM3 (line 13) | pub const IRQ_COM3: u8 = 4; constant IRQ_COM4 (line 14) | pub const IRQ_COM4: u8 = 3; constant PORT_FAST_A20 (line 16) | pub const PORT_FAST_A20: u16 = 0x92; constant PORT_POST_CODE (line 17) | pub const PORT_POST_CODE: u16 = 0x80; constant LEN_FAST_A20 (line 19) | pub const LEN_FAST_A20: u16 = 1; constant LEN_POST_CODE (line 20) | pub const LEN_POST_CODE: u16 = 1; constant PORT_PS2_DATA (line 22) | pub const PORT_PS2_DATA: u16 = 0x60; constant PORT_PS2_CMD_STATUS (line 23) | pub const PORT_PS2_CMD_STATUS: u16 = 0x64; constant IRQ_PS2_PRI (line 25) | pub const IRQ_PS2_PRI: u8 = 1; constant IRQ_PS2_AUX (line 26) | pub const IRQ_PS2_AUX: u8 = 12; FILE: lib/propolis/src/hw/ids.rs constant OXIDE_OUI (line 8) | pub const OXIDE_OUI: [u8; 3] = [0xa8, 0x40, 0x25]; constant VENDOR_OXIDE (line 19) | pub const VENDOR_OXIDE: u16 = 0x1de; constant VENDOR_VIRTIO (line 24) | pub const VENDOR_VIRTIO: u16 = 0x1AF4; constant VENDOR_INTEL (line 27) | pub const VENDOR_INTEL: u16 = 0x8086; constant PIIX4_HB_DEV_ID (line 32) | pub const PIIX4_HB_DEV_ID: u16 = 0x1237; constant PIIX3_ISA_DEV_ID (line 35) | pub const PIIX3_ISA_DEV_ID: u16 = 0x7000; constant PIIX4_PM_DEV_ID (line 38) | pub const PIIX4_PM_DEV_ID: u16 = 0x7113; constant PIIX4_HB_SUB_DEV_ID (line 43) | pub const PIIX4_HB_SUB_DEV_ID: u16 = 0xfffe; constant PIIX3_ISA_SUB_DEV_ID (line 46) | pub const PIIX3_ISA_SUB_DEV_ID: u16 = 0xfffd; constant PIIX4_PM_SUB_DEV_ID (line 49) | pub const PIIX4_PM_SUB_DEV_ID: u16 = 0xfffc; constant VIRTIO_NET_SUB_DEV_ID (line 52) | pub const VIRTIO_NET_SUB_DEV_ID: u16 = 0xfffb; constant VIRTIO_BLOCK_SUB_DEV_ID (line 55) | pub const VIRTIO_BLOCK_SUB_DEV_ID: u16 = 0xfffa; constant PROPOLIS_NVME_DEV_ID (line 60) | pub const PROPOLIS_NVME_DEV_ID: u16 = 0x0; constant PROPOLIS_XHCI_DEV_ID (line 63) | pub const PROPOLIS_XHCI_DEV_ID: u16 = 0x1; constant PROPOLIS_BRIDGE_DEV_ID (line 66) | pub const PROPOLIS_BRIDGE_DEV_ID: u16 = 0x2; FILE: lib/propolis/src/hw/nvme/admin.rs function nvme_abort (line 23) | fn nvme_abort(cid: u16, devsq_id: u64) {} method acmd_abort (line 30) | pub(super) fn acmd_abort(&self, cmd: &cmds::AbortCmd) -> cmds::Completion { method acmd_create_io_cq (line 52) | pub(super) fn acmd_create_io_cq( method acmd_create_io_sq (line 105) | pub(super) fn acmd_create_io_sq( method acmd_delete_io_cq (line 160) | pub(super) fn acmd_delete_io_cq( method acmd_delete_io_sq (line 197) | pub(super) fn acmd_delete_io_sq( method acmd_get_log_page (line 237) | pub(super) fn acmd_get_log_page( method acmd_identify (line 260) | pub(super) fn acmd_identify( method acmd_get_features (line 308) | pub(super) fn acmd_get_features( method acmd_set_features (line 433) | pub(super) fn acmd_set_features( method acmd_doorbell_buf_cfg (line 482) | pub(super) fn acmd_doorbell_buf_cfg( method write_admin_result (line 516) | fn write_admin_result( FILE: lib/propolis/src/hw/nvme/bits.rs type SubmissionQueueEntry (line 16) | pub struct SubmissionQueueEntry { method cid (line 96) | pub fn cid(&self) -> u16 { method opcode (line 101) | pub fn opcode(&self) -> u8 { type CompletionQueueEntry (line 111) | pub struct CompletionQueueEntry { method new (line 162) | pub fn new(comp: super::cmds::Completion, cid: u16) -> Self { method set_phase (line 172) | pub fn set_phase(&mut self, phase: bool) { type DatasetManagementRangeDefinition (line 185) | pub struct DatasetManagementRangeDefinition { method new (line 196) | pub fn new( method offset_len (line 204) | pub fn offset_len( method mpsmin_sz (line 303) | pub fn mpsmin_sz(&self) -> usize { type IOCommandSet (line 369) | pub enum IOCommandSet { method from_raw (line 375) | fn from_raw(raw: u8) -> IOCommandSet { method into_raw (line 385) | fn into_raw(target: IOCommandSet) -> u8 { type ArbitrationMechanism (line 395) | pub enum ArbitrationMechanism { method from_raw (line 403) | fn from_raw(raw: u8) -> ArbitrationMechanism { method into_raw (line 415) | fn into_raw(target: ArbitrationMechanism) -> u8 { type ShutdownNotification (line 427) | pub enum ShutdownNotification { method from_raw (line 435) | fn from_raw(raw: u8) -> ShutdownNotification { method into_raw (line 447) | fn into_raw(target: ShutdownNotification) -> u8 { type ShutdownStatus (line 486) | pub enum ShutdownStatus { method from_raw (line 494) | fn from_raw(raw: u8) -> ShutdownStatus { method into_raw (line 506) | fn into_raw(target: ShutdownStatus) -> u8 { constant NVME_VER_1_0 (line 550) | pub const NVME_VER_1_0: u32 = 0x00010000; constant ADMIN_OPC_DELETE_IO_SQ (line 556) | pub const ADMIN_OPC_DELETE_IO_SQ: u8 = 0x00; constant ADMIN_OPC_CREATE_IO_SQ (line 558) | pub const ADMIN_OPC_CREATE_IO_SQ: u8 = 0x01; constant ADMIN_OPC_GET_LOG_PAGE (line 560) | pub const ADMIN_OPC_GET_LOG_PAGE: u8 = 0x02; constant ADMIN_OPC_DELETE_IO_CQ (line 562) | pub const ADMIN_OPC_DELETE_IO_CQ: u8 = 0x04; constant ADMIN_OPC_CREATE_IO_CQ (line 564) | pub const ADMIN_OPC_CREATE_IO_CQ: u8 = 0x05; constant ADMIN_OPC_IDENTIFY (line 566) | pub const ADMIN_OPC_IDENTIFY: u8 = 0x06; constant ADMIN_OPC_ABORT (line 568) | pub const ADMIN_OPC_ABORT: u8 = 0x08; constant ADMIN_OPC_SET_FEATURES (line 570) | pub const ADMIN_OPC_SET_FEATURES: u8 = 0x09; constant ADMIN_OPC_GET_FEATURES (line 572) | pub const ADMIN_OPC_GET_FEATURES: u8 = 0x0A; constant ADMIN_OPC_ASYNC_EVENT_REQ (line 574) | pub const ADMIN_OPC_ASYNC_EVENT_REQ: u8 = 0x0c; constant ADMIN_OPC_DOORBELL_BUF_CFG (line 576) | pub const ADMIN_OPC_DOORBELL_BUF_CFG: u8 = 0x7c; constant NVM_OPC_FLUSH (line 582) | pub const NVM_OPC_FLUSH: u8 = 0x00; constant NVM_OPC_WRITE (line 584) | pub const NVM_OPC_WRITE: u8 = 0x01; constant NVM_OPC_READ (line 586) | pub const NVM_OPC_READ: u8 = 0x02; constant NVM_OPC_DATASET_MANAGEMENT (line 588) | pub const NVM_OPC_DATASET_MANAGEMENT: u8 = 0x09; constant STS_SUCCESS (line 596) | pub const STS_SUCCESS: u8 = 0x0; constant STS_INVAL_OPC (line 601) | pub const STS_INVAL_OPC: u8 = 0x1; constant STS_INVAL_FIELD (line 606) | pub const STS_INVAL_FIELD: u8 = 0x2; constant STS_CID_CONFLICT (line 611) | pub const STS_CID_CONFLICT: u8 = 0x3; constant STS_DATA_XFER_ERR (line 616) | pub const STS_DATA_XFER_ERR: u8 = 0x4; constant STS_PWR_LOSS_ABRT (line 621) | pub const STS_PWR_LOSS_ABRT: u8 = 0x5; constant STS_INTERNAL_ERR (line 626) | pub const STS_INTERNAL_ERR: u8 = 0x6; constant STS_ABORT_REQ (line 631) | pub const STS_ABORT_REQ: u8 = 0x7; constant STS_ABORT_SQ_DEL (line 636) | pub const STS_ABORT_SQ_DEL: u8 = 0x8; constant STS_FAILED_FUSED (line 641) | pub const STS_FAILED_FUSED: u8 = 0x9; constant STS_MISSING_FUSED (line 646) | pub const STS_MISSING_FUSED: u8 = 0xA; constant STS_INVALID_NS (line 651) | pub const STS_INVALID_NS: u8 = 0xB; constant STS_COMMAND_SEQ_ERR (line 656) | pub const STS_COMMAND_SEQ_ERR: u8 = 0xC; constant STS_CREATE_IO_Q_INVAL_CQ (line 662) | pub const STS_CREATE_IO_Q_INVAL_CQ: u8 = 0x0; constant STS_CREATE_IO_Q_INVAL_QID (line 665) | pub const STS_CREATE_IO_Q_INVAL_QID: u8 = 0x1; constant STS_CREATE_IO_Q_INVAL_QSIZE (line 668) | pub const STS_CREATE_IO_Q_INVAL_QSIZE: u8 = 0x2; constant STS_CREATE_IO_Q_INVAL_INT_VEC (line 671) | pub const STS_CREATE_IO_Q_INVAL_INT_VEC: u8 = 0x8; constant STS_DELETE_IO_Q_INVAL_QID (line 674) | pub const STS_DELETE_IO_Q_INVAL_QID: u8 = 0x1; constant STS_DELETE_IO_Q_INVAL_Q_DELETION (line 677) | pub const STS_DELETE_IO_Q_INVAL_Q_DELETION: u8 = 0xC; constant STS_READ_CONFLICTING_ATTRS (line 683) | pub const STS_READ_CONFLICTING_ATTRS: u8 = 0x80; constant STS_READ_INVALID_PROT_INFO (line 686) | pub const STS_READ_INVALID_PROT_INFO: u8 = 0x81; constant STS_WRITE_READ_ONLY_RANGE (line 689) | pub const STS_WRITE_READ_ONLY_RANGE: u8 = 0x82; constant FEAT_ID_ARBITRATION (line 697) | pub const FEAT_ID_ARBITRATION: u8 = 0x01; constant FEAT_ID_POWER_MGMT (line 702) | pub const FEAT_ID_POWER_MGMT: u8 = 0x02; constant FEAT_ID_LBA_RANGE_TYPE (line 707) | pub const FEAT_ID_LBA_RANGE_TYPE: u8 = 0x03; constant FEAT_ID_TEMP_THRESH (line 712) | pub const FEAT_ID_TEMP_THRESH: u8 = 0x04; constant FEAT_ID_ERROR_RECOVERY (line 717) | pub const FEAT_ID_ERROR_RECOVERY: u8 = 0x05; constant FEAT_ID_VOLATILE_WRITE_CACHE (line 722) | pub const FEAT_ID_VOLATILE_WRITE_CACHE: u8 = 0x06; constant FEAT_ID_NUM_QUEUES (line 727) | pub const FEAT_ID_NUM_QUEUES: u8 = 0x07; constant FEAT_ID_INTR_COALESCE (line 732) | pub const FEAT_ID_INTR_COALESCE: u8 = 0x08; constant FEAT_ID_INTR_VEC_CFG (line 737) | pub const FEAT_ID_INTR_VEC_CFG: u8 = 0x09; constant FEAT_ID_WRITE_ATOMIC (line 742) | pub const FEAT_ID_WRITE_ATOMIC: u8 = 0x0A; constant FEAT_ID_ASYNC_EVENT_CFG (line 747) | pub const FEAT_ID_ASYNC_EVENT_CFG: u8 = 0x0B; constant FEAT_ID_OXIDE_DEVICE_FEATURES (line 756) | pub const FEAT_ID_OXIDE_DEVICE_FEATURES: u8 = 0xF0; constant IDENT_CNS_NAMESPACE (line 764) | pub const IDENT_CNS_NAMESPACE: u8 = 0x0; constant IDENT_CNS_CONTROLLER (line 770) | pub const IDENT_CNS_CONTROLLER: u8 = 0x1; type StatusCodeType (line 777) | pub enum StatusCodeType { type PowerStateDescriptor (line 791) | pub struct PowerStateDescriptor { type IdentifyController (line 870) | pub struct IdentifyController { method default (line 1055) | fn default() -> Self { type LbaFormat (line 1102) | pub struct LbaFormat { type IdentifyNamespace (line 1131) | pub struct IdentifyNamespace { method default (line 1212) | fn default() -> Self { function entry_sizing (line 1238) | fn entry_sizing() { FILE: lib/propolis/src/hw/nvme/cmds.rs function nvme_prp_entry (line 19) | fn nvme_prp_entry(iter: u64, prp: u64) {} function nvme_prp_list (line 20) | fn nvme_prp_list(iter: u64, prp: u64, idx: u16) {} function nvme_prp_error (line 21) | fn nvme_prp_error(err: &'static str) {} type ParseErr (line 26) | pub enum ParseErr { type AdminCmd (line 42) | pub enum AdminCmd { method parse (line 71) | pub fn parse( type CreateIOCQCmd (line 163) | pub struct CreateIOCQCmd { type CreateIOSQCmd (line 204) | pub struct CreateIOSQCmd { type QueuePriority (line 246) | pub enum QueuePriority { type GetLogPageCmd (line 260) | pub struct GetLogPageCmd { method data (line 293) | pub fn data<'a>(&self, mem: &'a MemCtx) -> PrpIter<'a> { type LogPageIdent (line 303) | pub enum LogPageIdent { method from (line 319) | fn from(ident: u8) -> Self { type IdentifyCmd (line 334) | pub struct IdentifyCmd { method data (line 358) | pub fn data<'a>(&self, mem: &'a MemCtx) -> PrpIter<'a> { type AbortCmd (line 365) | pub struct AbortCmd { type GetFeaturesCmd (line 376) | pub struct GetFeaturesCmd { type SetFeaturesCmd (line 387) | pub struct SetFeaturesCmd { type DoorbellBufCfgCmd (line 398) | pub struct DoorbellBufCfgCmd { type FeatureIdent (line 408) | pub enum FeatureIdent { method from (line 472) | fn from(fid: u8) -> Self { type ThresholdTemperatureSelect (line 515) | pub enum ThresholdTemperatureSelect { method from_raw (line 531) | fn from_raw(raw: u8) -> ThresholdTemperatureSelect { method into_raw (line 551) | fn into_raw(target: ThresholdTemperatureSelect) -> u8 { type ThresholdTypeSelect (line 570) | pub enum ThresholdTypeSelect { method from_raw (line 576) | fn from_raw(raw: u8) -> ThresholdTypeSelect { method into_raw (line 586) | fn into_raw(target: ThresholdTypeSelect) -> u8 { type FeatVolatileWriteCache (line 596) | pub(crate) struct FeatVolatileWriteCache { method from (line 600) | fn from(cdw11: u32) -> Self { function from (line 605) | fn from(value: FeatVolatileWriteCache) -> Self { type FeatNumberQueues (line 610) | pub(crate) struct FeatNumberQueues { type Error (line 621) | type Error = (); method try_from (line 623) | fn try_from(cdw11: u32) -> Result { function from (line 643) | fn from(value: FeatNumberQueues) -> Self { type FeatInterruptVectorConfig (line 650) | pub(crate) struct FeatInterruptVectorConfig { method from (line 657) | fn from(cdw11: u32) -> Self { function from (line 662) | fn from(value: FeatInterruptVectorConfig) -> Self { type NvmCmd (line 681) | pub enum NvmCmd { method parse (line 696) | pub fn parse( type WriteCmd (line 745) | pub struct WriteCmd { method data (line 770) | pub fn data<'a>(&self, sz: u64, mem: &'a MemCtx) -> PrpIter<'a> { type ReadCmd (line 777) | pub struct ReadCmd { method data (line 802) | pub fn data<'a>(&self, sz: u64, mem: &'a MemCtx) -> PrpIter<'a> { type DatasetManagementCmd (line 809) | pub struct DatasetManagementCmd { method data (line 859) | pub fn data<'a>(&self, mem: &'a MemCtx) -> PrpIter<'a> { method ranges (line 872) | pub fn ranges<'a>( method is_deallocate (line 890) | pub fn is_deallocate(&self) -> bool { type PrpNext (line 897) | enum PrpNext { constant PRP_LIST_MAX (line 912) | const PRP_LIST_MAX: u16 = 511; type PrpIter (line 915) | pub struct PrpIter<'a> { function new (line 943) | pub fn new(size: u64, prp1: u64, prp2: u64, mem: &'a MemCtx) -> Self { function get_next (line 953) | fn get_next(&mut self) -> Result { type Item (line 1081) | type Item = GuestRegion; method next (line 1083) | fn next(&mut self) -> Option { type Completion (line 1100) | pub struct Completion { method success (line 1109) | pub fn success() -> Self { method success_val (line 1120) | pub fn success_val(cdw0: u32) -> Self { method specific_err (line 1131) | pub fn specific_err(sct: StatusCodeType, status: u8) -> Self { method generic_err (line 1139) | pub fn generic_err(status: u8) -> Self { method dnr (line 1150) | pub fn dnr(mut self) -> Self { method status_field (line 1161) | const fn status_field(sct: StatusCodeType, sc: u8) -> u16 { method from (line 1168) | fn from(e: QueueCreateErr) -> Self { method from (line 1188) | fn from(res: block::Result) -> Completion { constant VM_SIZE (line 1216) | const VM_SIZE: usize = 256 * PAGE_SIZE; constant PRP_PER_PAGE (line 1217) | const PRP_PER_PAGE: usize = PAGE_SIZE / 8; function setup (line 1219) | fn setup() -> (PhysMap, MemAccessor) { function region (line 1229) | const fn region(addr: u64, sz: u64) -> GuestRegion { function pages (line 1232) | const fn pages(c: u64) -> u64 { function test_prp_single (line 1237) | fn test_prp_single() { function test_prp_dual (line 1259) | fn test_prp_dual() { function test_prp_list (line 1286) | fn test_prp_list() { function test_prp_list_offset_last (line 1330) | fn test_prp_list_offset_last() { function test_prp_multiple (line 1371) | fn test_prp_multiple() { function test_dsmgmt_ranges (line 1436) | fn test_dsmgmt_ranges() { function test_dsmgmt_ranges_dual (line 1464) | fn test_dsmgmt_ranges_dual() { function test_dsmgmt_ranges_bad_dual (line 1494) | fn test_dsmgmt_ranges_bad_dual() { function test_dsmgmt_ranges_bad_address (line 1520) | fn test_dsmgmt_ranges_bad_address() { FILE: lib/propolis/src/hw/nvme/mod.rs function nvme_doorbell (line 48) | fn nvme_doorbell(off: u64, devq_id: u64, is_cq: u8, val: u16) {} function nvme_doorbell_admin_cq (line 49) | fn nvme_doorbell_admin_cq(val: u16) {} function nvme_doorbell_admin_sq (line 50) | fn nvme_doorbell_admin_sq(val: u16) {} function nvme_admin_cmd (line 51) | fn nvme_admin_cmd(opcode: u8, prp1: u64, prp2: u64) {} function nvme_block_notify (line 52) | fn nvme_block_notify(devsq_id: u64, block_devqid: u64, occupied_hint: u1... function devq_id (line 57) | pub(crate) fn devq_id(dev: DeviceId, queue: QueueId) -> u64 { constant NVME_MSIX_COUNT (line 71) | const NVME_MSIX_COUNT: u16 = 1024; type NvmeError (line 75) | pub enum NvmeError { type CtrlState (line 146) | struct CtrlState { constant MAX_NUM_QUEUES (line 176) | const MAX_NUM_QUEUES: usize = 16; constant MAX_NUM_IO_QUEUES (line 180) | const MAX_NUM_IO_QUEUES: usize = MAX_NUM_QUEUES - 1; type NvmeCtrl (line 183) | struct NvmeCtrl { method create_admin_queues (line 218) | fn create_admin_queues(&mut self, nvme: &PciNvme) -> Result<(), NvmeEr... method create_cq (line 252) | fn create_cq( method create_sq (line 299) | fn create_sq( method delete_cq (line 346) | fn delete_cq( method delete_sq (line 374) | fn delete_sq( method get_cq (line 392) | fn get_cq(&self, cqid: QueueId) -> Result, NvmeError> { method get_sq (line 400) | fn get_sq(&self, sqid: QueueId) -> Result, NvmeError> { method get_admin_cq (line 408) | fn get_admin_cq(&self) -> Result, NvmeError> { method get_admin_sq (line 413) | fn get_admin_sq(&self) -> Result, NvmeError> { method io_sq_post_create (line 418) | fn io_sq_post_create(&self, nvme: &PciNvme, sq: Arc) { method configure (line 432) | fn configure(&mut self, cc: Configuration) -> Result<(), NvmeError> { method enable (line 487) | fn enable(&mut self, nvme: &PciNvme) -> Result<(), NvmeError> { method reset (line 505) | fn reset(&mut self, nvme: &PciNvme) { method transfer_params (line 544) | fn transfer_params(&self) -> queue::TransferParams { method update_block_info (line 554) | fn update_block_info(&mut self, info: block::DeviceInfo) { method get_mps (line 576) | fn get_mps(&self) -> u64 { method export (line 581) | fn export(&self) -> migrate::NvmeCtrlV1 { method import (line 602) | fn import( type NvmeQueues (line 698) | struct NvmeQueues { method set_sq_slot (line 704) | fn set_sq_slot(&self, sqid: QueueId, queue: Option>) { method set_cq_slot (line 730) | fn set_cq_slot(&self, cqid: QueueId, queue: Option>) { method get_sq (line 755) | fn get_sq( method get_cq (line 767) | fn get_cq( type PciNvme (line 777) | pub struct PciNvme { method create (line 811) | pub fn create( method ctrlr_cfg_write (line 948) | fn ctrlr_cfg_write(&self, new: Configuration) -> Result<(), NvmeError> { method reg_ctrl_read (line 993) | fn reg_ctrl_read( method reg_ctrl_write (line 1054) | fn reg_ctrl_write( method ring_doorbell (line 1184) | fn ring_doorbell( method process_admin_queue (line 1290) | fn process_admin_queue( method mem_access (line 1366) | fn mem_access(&self) -> Option> { method bar_rw (line 1372) | fn bar_rw(&self, bar: pci::BarN, mut rwo: RWOp) { method attach (line 1398) | fn attach(&self) { method device_state (line 1406) | fn device_state(&self) -> &pci::DeviceState { method export (line 1412) | fn export( method import (line 1426) | fn import( method type_name (line 1444) | fn type_name(&self) -> &'static str { method reset (line 1448) | fn reset(&self) { method pause (line 1454) | fn pause(&self) { method resume (line 1458) | fn resume(&self) { method paused (line 1462) | fn paused(&self) -> BoxFuture<'static, ()> { method migrate (line 1466) | fn migrate(&self) -> Migrator<'_> { type NvmeCtrlV1 (line 1479) | pub struct NvmeCtrlV1 { method id (line 1495) | fn id() -> SchemaId { type CtrlrReg (line 1505) | enum CtrlrReg { constant CONTROLLER_REG_SZ (line 1569) | const CONTROLLER_REG_SZ: usize = 0x4000; type CtrlRegs (line 1571) | struct CtrlRegs { FILE: lib/propolis/src/hw/nvme/queue.rs function nvme_cqe (line 24) | fn nvme_cqe(devcq_id: u64, idx: u16, phase: u8) {} function nvme_sq_dbbuf_read (line 25) | fn nvme_sq_dbbuf_read(devsq_id: u64, val: u32, tail: u16) {} function nvme_sq_dbbuf_write (line 26) | fn nvme_sq_dbbuf_write(devsq_id: u64, head: u16) {} function nvme_sq_dbbuf_write_shadow (line 27) | fn nvme_sq_dbbuf_write_shadow(devsq_id: u64, head: u16) {} function nvme_cq_dbbuf_read (line 28) | fn nvme_cq_dbbuf_read(devcq_id: u64, val: u32, tail: u16) {} function nvme_cq_dbbuf_write (line 29) | fn nvme_cq_dbbuf_write(devcq_id: u64, head: u16) {} function nvme_cq_dbbuf_write_shadow (line 30) | fn nvme_cq_dbbuf_write_shadow(devcq_id: u64, head: u16) {} type QueueId (line 46) | pub type QueueId = u16; constant MIN_QUEUE_SIZE (line 53) | const MIN_QUEUE_SIZE: u32 = 2; constant MAX_QUEUE_SIZE (line 58) | pub const MAX_QUEUE_SIZE: u32 = 1 << 16; constant MAX_ADMIN_QUEUE_SIZE (line 63) | const MAX_ADMIN_QUEUE_SIZE: u32 = 1 << 12; constant ADMIN_QUEUE_ID (line 68) | pub const ADMIN_QUEUE_ID: QueueId = 0; type CompQueueState (line 71) | struct CompQueueState { method new (line 418) | fn new(size: u32, acc_mem: MemAccessor) -> QueueState { type SubQueueState (line 93) | struct SubQueueState { method new (line 436) | fn new(size: u32, acc_mem: MemAccessor) -> QueueState { type QueueState (line 103) | struct QueueState { function new (line 125) | fn new(size: u32, acc_mem: MemAccessor, inner: QS) -> Self { function lock (line 138) | fn lock(&self) -> QueueGuard<'_, QS> { function wrap_add (line 147) | fn wrap_add(size: u32, idx: u16, off: u16) -> u16 { function wrap_sub (line 158) | fn wrap_sub(size: u32, idx: u16, off: u16) -> u16 { function validate (line 170) | fn validate( type QueueInner (line 186) | struct QueueInner { type QueueGuard (line 210) | struct QueueGuard<'a, QS> { function is_empty (line 223) | fn is_empty(&self) -> bool { function is_full (line 235) | fn is_full(&self) -> bool { function num_occupied (line 243) | fn num_occupied(&self) -> u16 { function idx_add (line 249) | fn idx_add(&self, idx: u16, off: u16) -> u16 { function idx_sub (line 255) | fn idx_sub(&self, idx: u16, off: u16) -> u16 { function push_tail (line 265) | fn push_tail(&mut self) -> Option<(u16, bool)> { function avail_occupied (line 282) | fn avail_occupied(&self) -> u16 { function pop_head_to (line 292) | fn pop_head_to(&mut self, idx: u16) -> Result<(), QueueUpdateError> { function has_avail (line 308) | fn has_avail(&self) -> bool { function take_avail (line 312) | fn take_avail(&mut self, sq: &Arc) -> bool { function release_avail (line 323) | fn release_avail(&mut self) { function record_corked (line 336) | fn record_corked(&mut self, sq: &Arc) { function kick (line 341) | fn kick(&mut self) -> Option> { function db_buf_write (line 350) | fn db_buf_write(&mut self, devq_id: u64, mem: &MemCtx) { function db_buf_write_shadow (line 390) | fn db_buf_write_shadow(&mut self, devq_id: u64, mem: &MemCtx) { function db_buf_read (line 399) | fn db_buf_read(&mut self, devq_id: u64, mem: &MemCtx) { function avail_empty (line 447) | fn avail_empty(&self) -> u16 { function pop_head (line 456) | fn pop_head(&mut self, last_head: &AtomicU16) -> Option { function push_tail_to (line 473) | fn push_tail_to(&mut self, idx: u16) -> Result<(), QueueUpdateError> { function db_buf_write (line 488) | fn db_buf_write(&mut self, devq_id: u64, mem: &MemCtx) { function db_buf_write_shadow (line 508) | fn db_buf_write_shadow(&mut self, devq_id: u64, mem: &MemCtx) { function db_buf_read (line 517) | fn db_buf_read(&mut self, devq_id: u64, mem: &MemCtx) { type QueueCreateErr (line 536) | pub enum QueueCreateErr { type QueueUpdateError (line 551) | pub enum QueueUpdateError { type CreateParams (line 563) | pub struct CreateParams { type SubQueue (line 573) | pub struct SubQueue { method new (line 606) | pub fn new( method notify_tail (line 638) | pub fn notify_tail(&self, idx: u16) -> Result { method num_occupied (line 650) | pub fn num_occupied(&self) -> u16 { method pop (line 655) | pub fn pop( method id (line 693) | pub(super) fn id(&self) -> QueueId { method set_db_buf (line 697) | pub(super) fn set_db_buf( method update_params (line 716) | pub(super) fn update_params(&self, params: TransferParams) { method params (line 719) | pub(super) fn params(&self) -> TransferParams { method annotate_completion (line 724) | fn annotate_completion(&self, cqe: &mut CompletionQueueEntry) { method devq_id (line 730) | pub(crate) fn devq_id(&self) -> u64 { method export (line 734) | pub(super) fn export(&self) -> migrate::NvmeSubQueueV1 { method import (line 746) | pub(super) fn import( method drop (line 596) | fn drop(&mut self) { type CompQueue (line 765) | pub struct CompQueue { method new (line 793) | pub fn new( method notify_head (line 813) | pub fn notify_head(&self, idx: u16) -> Result<(), QueueUpdateError> { method fire_interrupt (line 826) | pub fn fire_interrupt(&self) { method kick (line 837) | pub fn kick(&self) -> Option> { method id (line 842) | pub fn id(&self) -> QueueId { method associated_sqs (line 847) | pub fn associated_sqs(&self) -> usize { method reserve_entry (line 855) | fn reserve_entry( method push (line 876) | fn push(&self, comp: Completion, cid: u16, sq: &SubQueue) { method set_db_buf (line 915) | pub(super) fn set_db_buf( method devq_id (line 935) | pub(crate) fn devq_id(&self) -> u64 { method export (line 939) | pub(super) fn export(&self) -> migrate::NvmeCompQueueV1 { method import (line 953) | pub(super) fn import( type ProtoPermit (line 980) | pub struct ProtoPermit { method new (line 993) | fn new(cq: &Arc, sq: &Arc) -> Self { method promote (line 1006) | pub fn promote(self, cid: u16) -> Permit { method remit (line 1020) | fn remit(self) { type Permit (line 1030) | pub struct Permit { method complete (line 1051) | pub fn complete(self, comp: Completion) { method cid (line 1080) | pub fn cid(&self) -> u16 { method devsq_id (line 1086) | pub fn devsq_id(&self) -> u64 { method abandon (line 1095) | pub fn abandon(self) { method test_complete (line 1107) | fn test_complete(self, sq: &SubQueue) { method fmt (line 1117) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type NoDropPermit (line 1129) | struct NoDropPermit; method drop (line 1131) | fn drop(&mut self) { function sqid_to_block_qid (line 1137) | pub fn sqid_to_block_qid(sqid: super::QueueId) -> block::QueueId { type TransferParams (line 1144) | pub struct TransferParams { type DoorbellBuffer (line 1151) | pub struct DoorbellBuffer { method offset_for_queue (line 1158) | pub fn offset_for_queue(&self, is_cq: bool, qid: QueueId) -> Self { type NvmeCompQueueV1 (line 1171) | pub struct NvmeCompQueueV1 { type NvmeSubQueueV1 (line 1186) | pub struct NvmeSubQueueV1 { function create_cqs (line 1210) | fn create_cqs() -> Result<(), Error> { function create_sqs (line 1295) | fn create_sqs() -> Result<(), Error> { function push_failures (line 1426) | fn push_failures() -> Result<(), Error> { function cq_kicks (line 1514) | fn cq_kicks() -> Result<(), Error> { function push_pop (line 1590) | fn push_pop() -> Result<(), Error> { FILE: lib/propolis/src/hw/nvme/requests.rs function nvme_read_enqueue (line 29) | fn nvme_read_enqueue(devsq_id: u64, idx: u16, cid: u16, off: u64, sz: u6... function nvme_read_complete (line 31) | fn nvme_read_complete(devsq_id: u64, cid: u16, res: u8) {} function nvme_write_enqueue (line 33) | fn nvme_write_enqueue( function nvme_write_complete (line 41) | fn nvme_write_complete(devsq_id: u64, cid: u16, res: u8) {} function nvme_discard_enqueue (line 43) | fn nvme_discard_enqueue(devsq_id: u64, idx: u16, cid: u16, nr: u16) {} function nvme_discard_complete (line 44) | fn nvme_discard_complete(devsq_id: u64, cid: u16, res: u8) {} function nvme_flush_enqueue (line 46) | fn nvme_flush_enqueue(devsq_id: u64, idx: u16, cid: u16) {} function nvme_flush_complete (line 47) | fn nvme_flush_complete(devsq_id: u64, cid: u16, res: u8) {} function nvme_raw_cmd (line 49) | fn nvme_raw_cmd( method attachment (line 60) | fn attachment(&self) -> &block::DeviceAttachment { type NvmeBlockQueue (line 65) | pub(super) struct NvmeBlockQueue { method new (line 70) | pub(super) fn new(sq: Arc, acc_mem: MemAccessor) -> Arc { type Token (line 75) | type Token = Permit; method next_req (line 79) | fn next_req(&self) -> Option<(Request, Self::Token, Option)> { method complete (line 217) | fn complete( method abandon (line 246) | fn abandon(&self, token: Self::Token) { FILE: lib/propolis/src/hw/pci/bar.rs constant BAR_COUNT (line 13) | pub const BAR_COUNT: usize = 6; type BarDefine (line 16) | pub enum BarDefine { method is_pio (line 23) | pub fn is_pio(&self) -> bool { method is_mmio (line 27) | pub fn is_mmio(&self) -> bool { method size (line 31) | pub fn size(&self) -> u64 { type Error (line 40) | type Error = (); method try_from (line 42) | fn try_from(value: EntryKind) -> Result { type EntryKind (line 53) | enum EntryKind { type Entry (line 62) | struct Entry { method default (line 67) | fn default() -> Self { type Bars (line 72) | pub(super) struct Bars { method new (line 77) | pub(super) fn new(defs: &[Option; BAR_COUNT]) -> Self { method reg_read (line 101) | pub(super) fn reg_read(&self, bar: BarN) -> u32 { method reg_write (line 120) | pub(super) fn reg_write( method get (line 171) | pub fn get(&self, n: BarN) -> Option<(BarDefine, u64)> { method set (line 182) | pub fn set(&mut self, n: BarN, value: u64) { method export (line 201) | pub(super) fn export(&self) -> migrate::BarStateV1 { method import (line 229) | pub(super) fn import( type WriteResult (line 293) | pub struct WriteResult { type BarKindV1 (line 310) | pub enum BarKindV1 { type BarEntryV1 (line 318) | pub struct BarEntryV1 { type BarStateV1 (line 325) | pub struct BarStateV1 { function setup (line 334) | fn setup() -> Bars { function init (line 348) | fn init() { function read_type (line 353) | fn read_type() { function write_place (line 369) | fn write_place() { function limits (line 386) | fn limits() { FILE: lib/propolis/src/hw/pci/bits.rs constant LEN_CFG (line 9) | pub const LEN_CFG: usize = 0x100; constant LEN_CFG_STD (line 10) | pub const LEN_CFG_STD: usize = 0x40; constant LEN_CFG_ECAM (line 11) | pub const LEN_CFG_ECAM: usize = 0x1000; method reset (line 23) | pub fn reset(&mut self) { method default (line 28) | fn default() -> Self { constant BAR_TYPE_IO (line 41) | pub const BAR_TYPE_IO: u32 = 0b01; constant BAR_TYPE_MEM (line 42) | pub const BAR_TYPE_MEM: u32 = 0b000; constant BAR_TYPE_MEM64 (line 43) | pub const BAR_TYPE_MEM64: u32 = 0b100; constant CAP_ID_MSI (line 45) | pub const CAP_ID_MSI: u8 = 0x05; constant CAP_ID_VENDOR (line 46) | pub const CAP_ID_VENDOR: u8 = 0x09; constant CAP_ID_MSIX (line 47) | pub const CAP_ID_MSIX: u8 = 0x11; constant CLASS_UNCLASSIFIED (line 49) | pub const CLASS_UNCLASSIFIED: u8 = 0; constant CLASS_STORAGE (line 50) | pub const CLASS_STORAGE: u8 = 1; constant CLASS_NETWORK (line 51) | pub const CLASS_NETWORK: u8 = 2; constant CLASS_DISPLAY (line 52) | pub const CLASS_DISPLAY: u8 = 3; constant CLASS_MULTIMEDIA (line 53) | pub const CLASS_MULTIMEDIA: u8 = 4; constant CLASS_MEMORY (line 54) | pub const CLASS_MEMORY: u8 = 5; constant CLASS_BRIDGE (line 55) | pub const CLASS_BRIDGE: u8 = 6; constant SUBCLASS_STORAGE_NVM (line 58) | pub const SUBCLASS_STORAGE_NVM: u8 = 8; constant SUBCLASS_BRIDGE_HOST (line 61) | pub const SUBCLASS_BRIDGE_HOST: u8 = 0; constant SUBCLASS_BRIDGE_ISA (line 62) | pub const SUBCLASS_BRIDGE_ISA: u8 = 1; constant SUBCLASS_BRIDGE_OTHER (line 63) | pub const SUBCLASS_BRIDGE_OTHER: u8 = 0x80; constant HEADER_TYPE_DEVICE (line 65) | pub const HEADER_TYPE_DEVICE: u8 = 0b0; constant HEADER_TYPE_BRIDGE (line 66) | pub const HEADER_TYPE_BRIDGE: u8 = 0b1; constant HEADER_TYPE_MULTIFUNC (line 67) | pub const HEADER_TYPE_MULTIFUNC: u8 = 0b1000_0000; constant PROGIF_ENTERPRISE_NVME (line 70) | pub const PROGIF_ENTERPRISE_NVME: u8 = 2; constant MASK_FUNC (line 72) | pub(super) const MASK_FUNC: u8 = 0x07; constant MASK_DEV (line 73) | pub(super) const MASK_DEV: u8 = 0x1f; constant MASK_BUS (line 74) | pub(super) const MASK_BUS: u8 = 0xff; constant PORT_PCI_CONFIG_ADDR (line 76) | pub const PORT_PCI_CONFIG_ADDR: u16 = 0xcf8; constant LEN_PCI_CONFIG_ADDR (line 77) | pub const LEN_PCI_CONFIG_ADDR: u16 = 4; constant PORT_PCI_CONFIG_DATA (line 78) | pub const PORT_PCI_CONFIG_DATA: u16 = 0xcfc; constant LEN_PCI_CONFIG_DATA (line 79) | pub const LEN_PCI_CONFIG_DATA: u16 = 4; constant PCIE_MIN_BUSES_PER_ECAM_REGION (line 84) | pub const PCIE_MIN_BUSES_PER_ECAM_REGION: u16 = 2; constant PCIE_MAX_BUSES_PER_ECAM_REGION (line 87) | pub const PCIE_MAX_BUSES_PER_ECAM_REGION: u16 = 256; constant MASK_ECAM_CFG_OFFSET (line 91) | pub const MASK_ECAM_CFG_OFFSET: usize = 0xfff; constant BRIDGE_PROG_CLASS (line 94) | pub const BRIDGE_PROG_CLASS: u8 = 0x06; constant BRIDGE_PROG_SUBCLASS (line 95) | pub const BRIDGE_PROG_SUBCLASS: u8 = 0x04; constant BRIDGE_PROG_IF (line 96) | pub const BRIDGE_PROG_IF: u8 = 0x00; constant BRIDGE_SECONDARY_STATUS (line 100) | pub const BRIDGE_SECONDARY_STATUS: u16 = 0x0000; constant BRIDGE_MEMORY_REG_MASK (line 104) | pub const BRIDGE_MEMORY_REG_MASK: u16 = 0xfff0; FILE: lib/propolis/src/hw/pci/bridge.rs type BridgeReg (line 23) | enum BridgeReg { type Bridge (line 91) | pub struct Bridge { method new (line 106) | pub fn new( method cfg_header_rw (line 129) | fn cfg_header_rw(&self, mut rwo: RWOp) { method cfg_std_read (line 140) | fn cfg_std_read(&self, id: &BridgeReg, ro: &mut ReadOp) { method cfg_std_write (line 227) | fn cfg_std_write(&self, id: &BridgeReg, wo: &mut WriteOp) { method attach (line 315) | fn attach(&self, attachment: Attachment) { method cfg_rw (line 321) | fn cfg_rw(&self, mut rwo: RWOp) { method bar_rw (line 335) | fn bar_rw(&self, _bar: BarN, _rwo: RWOp) { method type_name (line 344) | fn type_name(&self) -> &'static str { method reset (line 347) | fn reset(&self) { method migrate (line 350) | fn migrate(&self) -> Migrator<'_> { type Inner (line 358) | struct Inner { method new (line 375) | fn new(topology: &Arc, downstream_bus_id: LogicalBusId) -> S... method set_secondary_bus (line 389) | fn set_secondary_bus(&mut self, n: BusNum) { method reset (line 407) | fn reset(&mut self) { constant OFFSET_VENDOR_ID (line 427) | const OFFSET_VENDOR_ID: usize = 0x00; constant OFFSET_DEVICE_ID (line 428) | const OFFSET_DEVICE_ID: usize = 0x02; constant OFFSET_HEADER_TYPE (line 429) | const OFFSET_HEADER_TYPE: usize = 0x0E; constant OFFSET_SECONDARY_BUS (line 430) | const OFFSET_SECONDARY_BUS: usize = 0x19; type Env (line 432) | struct Env { method new (line 438) | fn new(bridges: Option>) -> Self { method make_bridge (line 452) | fn make_bridge(&self) -> Arc { method read_header_byte (line 461) | fn read_header_byte(&self, target: Bdf, offset: usize) -> u8 { method read_header_type (line 472) | fn read_header_type(&self, target: Bdf) -> u8 { method read_secondary_bus (line 476) | fn read_secondary_bus(&self, target: Bdf) -> u8 { method write_header_byte (line 480) | fn write_header_byte(&self, target: Bdf, offset: usize, val: u8) { method write_secondary_bus (line 490) | fn write_secondary_bus(&self, target: Bdf, val: u8) { function bridge_properties (line 496) | fn bridge_properties() { function bridge_routing (line 516) | fn bridge_routing() { FILE: lib/propolis/src/hw/pci/bus.rs type Bus (line 16) | pub struct Bus { method new (line 21) | pub fn new( method attach (line 34) | pub fn attach( method device_at (line 55) | pub fn device_at( type Attachment (line 64) | pub struct Attachment { method bar_register (line 73) | pub fn bar_register(&self, n: BarN, def: BarDefine, addr: u64) { method bar_unregister (line 79) | pub fn bar_unregister(&self, n: BarN) { method lintr_cfg (line 85) | pub fn lintr_cfg(&self) -> Option<&LintrCfg> { method location (line 88) | pub fn location(&self) -> BusLocation { method is_multifunc (line 91) | pub fn is_multifunc(&self) -> bool { type SlotState (line 97) | struct SlotState { constant SLOTS_PER_BUS (line 101) | const SLOTS_PER_BUS: usize = 32; constant FUNCS_PER_SLOT (line 102) | const FUNCS_PER_SLOT: usize = 8; type Slot (line 105) | struct Slot { method attach (line 110) | fn attach( type BarState (line 130) | struct BarState { type Inner (line 136) | struct Inner { method new (line 146) | fn new( method device_at (line 162) | fn device_at(&self, location: BusLocation) -> Option> { method attach (line 168) | fn attach( method bar_register (line 187) | fn bar_register( method bar_unregister (line 233) | fn bar_unregister(&mut self, location: BusLocation, n: BarN) { type TestDev (line 262) | struct TestDev { method check_multifunc (line 274) | fn check_multifunc(&self) -> Option { method attach (line 266) | fn attach(&self, attachment: Attachment) { method cfg_rw (line 270) | fn cfg_rw(&self, _op: RWOp) {} method bar_rw (line 271) | fn bar_rw(&self, _bar: BarN, _rwo: RWOp) {} function empty (line 280) | fn empty() { function set_multifunc (line 297) | fn set_multifunc() { FILE: lib/propolis/src/hw/pci/cfgspace.rs type CfgCapReg (line 17) | pub(super) enum CfgCapReg { type CfgReg (line 24) | pub(super) enum CfgReg { type CfgBuilder (line 31) | pub(super) struct CfgBuilder { method new (line 39) | pub fn new() -> Self { method check_overlap (line 45) | fn check_overlap(&self, offset: usize, len: usize) { method add_custom (line 72) | pub fn add_custom(&mut self, offset: u8, len: u8) { method add_capability (line 106) | pub fn add_capability(&mut self, id: CapId, len: u8) { method finish (line 134) | pub fn finish(self) -> (RegMap, Vec>) { FILE: lib/propolis/src/hw/pci/device.rs function op_meta (line 20) | fn op_meta(rwo: &RWOp) -> (usize, &'static str) { type Device (line 28) | pub trait Device: Send + Sync + 'static { method device_state (line 30) | fn device_state(&self) -> &DeviceState; method bar_rw (line 33) | fn bar_rw(&self, bar: BarN, rwo: RWOp) { method cfg_rw (line 39) | fn cfg_rw(&self, region: u8, rwo: RWOp) { method cap_rw (line 45) | fn cap_rw(&self, id: CapId, rwo: RWOp) { method attach (line 51) | fn attach(&self) {} method interrupt_mode_change (line 55) | fn interrupt_mode_change(&self, mode: IntrMode) { method msi_update (line 60) | fn msi_update(&self, info: MsiUpdate) { method bar_update (line 67) | fn bar_update(&self, bstate: BarState) { method attach (line 73) | fn attach(&self, attachment: bus::Attachment) { method cfg_rw (line 78) | fn cfg_rw(&self, mut rwo: RWOp) { method bar_rw (line 91) | fn bar_rw(&self, bar: BarN, rwo: RWOp) { type StdCfgReg (line 104) | pub(super) enum StdCfgReg { type Ident (line 167) | pub struct Ident { type State (line 178) | struct State { method new (line 189) | fn new(bars: Bars) -> Self { method attached (line 200) | fn attached(&self) -> &bus::Attachment { method mmio_en (line 205) | fn mmio_en(&self) -> bool { method pio_en (line 210) | fn pio_en(&self) -> bool { method decoding_active (line 215) | fn decoding_active(&self, bar: &BarDefine) -> bool { type CapId (line 225) | pub enum CapId { function as_pci_cap_id (line 232) | pub fn as_pci_cap_id(&self) -> u8 { type Cap (line 241) | pub struct Cap { function new (line 248) | pub(super) fn new(id: CapId, offset: u8) -> Self { type DeviceState (line 253) | pub struct DeviceState { method new (line 269) | fn new( method affects_intr_mode (line 302) | fn affects_intr_mode( method cfg_std_read (line 324) | fn cfg_std_read(&self, id: &StdCfgReg, ro: &mut ReadOp) { method cfg_std_write (line 415) | fn cfg_std_write( method reg_cmd_write (line 479) | fn reg_cmd_write(&self, dev: &dyn Device, val: RegCmd) { method which_intr_mode (line 535) | fn which_intr_mode(&self, state: &State) -> IntrMode { method get_intr_mode (line 552) | pub(crate) fn get_intr_mode(&self) -> IntrMode { method bar (line 557) | pub(crate) fn bar(&self, id: BarN) -> Option { method cfg_cap_rw (line 568) | fn cfg_cap_rw(&self, dev: &dyn Device, id: &CfgCapReg, rwo: RWOp) { method cap_rw_body (line 594) | fn cap_rw_body(&self, dev: &dyn Device, idx: u8, rwo: RWOp) { method notify_msi_update (line 618) | fn notify_msi_update(&self, dev: &dyn Device, info: MsiUpdate) { method reset (line 621) | pub fn reset(&self, dev: &dyn Device) { method attach (line 644) | fn attach(&self, attachment: bus::Attachment) { method lintr_pin (line 653) | pub fn lintr_pin(&self) -> Option> { method msix_hdl (line 660) | pub fn msix_hdl(&self) -> Option { method export (line 665) | pub fn export(&self) -> migrate::PciStateV1 { method import (line 676) | pub fn import( method export (line 722) | fn export( method import (line 730) | fn import( type IntrMode (line 740) | pub enum IntrMode { type MsiUpdate (line 746) | pub enum MsiUpdate { type MsixBarReg (line 753) | enum MsixBarReg { type MsixCapReg (line 761) | enum MsixCapReg { constant MSIX_VEC_MASK (line 777) | const MSIX_VEC_MASK: u32 = 1 << 0; constant MSIX_MSGCTRL_ENABLE (line 779) | const MSIX_MSGCTRL_ENABLE: u16 = 1 << 15; constant MSIX_MSGCTRL_FMASK (line 780) | const MSIX_MSGCTRL_FMASK: u16 = 1 << 14; type MsixEntry (line 783) | struct MsixEntry { method fire (line 793) | fn fire(&mut self) { method check_mask (line 803) | fn check_mask(&mut self) { method send (line 809) | fn send(&self) { method reset (line 814) | fn reset(&mut self) { type MsixCfg (line 825) | struct MsixCfg { method new (line 839) | fn new(count: u16, bar: BarN) -> (Arc, usize) { method bar_match (line 903) | fn bar_match(&self, bar: BarN) -> bool { method bar_rw (line 906) | fn bar_rw(&self, mut rwo: RWOp, updatef: impl Fn(MsiUpdate)) { method read_pba (line 964) | fn read_pba(&self, ro: &mut ReadOp) { method cfg_rw (line 982) | fn cfg_rw(&self, mut rwo: RWOp, updatef: impl Fn(MsiUpdate)) { method each_entry (line 1050) | fn each_entry(&self, mut cb: impl FnMut(&mut MsixEntry)) { method fire (line 1056) | fn fire(&self, idx: u16) { method is_enabled (line 1061) | fn is_enabled(&self) -> bool { method read (line 1065) | fn read(&self, idx: u16) -> MsiEnt { method reset (line 1075) | fn reset(&self) { method attach (line 1082) | fn attach(&self, msi_acc: &MsiAccessor) { method export (line 1088) | fn export(&self) -> migrate::MsixStateV1 { method import (line 1107) | fn import( type MsixCfgState (line 834) | struct MsixCfgState { type MsiEnt (line 1143) | pub struct MsiEnt { type MsixHdl (line 1151) | pub struct MsixHdl { method new (line 1155) | fn new(cfg: &Arc) -> Self { method new_test (line 1159) | pub(crate) fn new_test() -> Self { method fire (line 1162) | pub fn fire(&self, idx: u16) { method read (line 1165) | pub fn read(&self, idx: u16) -> MsiEnt { method count (line 1168) | pub fn count(&self) -> u16 { method clone (line 1173) | fn clone(&self) -> Self { type BarState (line 1179) | pub struct BarState { type Builder (line 1187) | pub struct Builder { method new (line 1196) | pub fn new(ident: Ident) -> Self { method add_bar_io (line 1213) | pub fn add_bar_io(mut self, bar: BarN, size: u16) -> Self { method add_bar_mmio (line 1230) | pub fn add_bar_mmio(mut self, bar: BarN, size: u32) -> Self { method add_bar_mmio64 (line 1248) | pub fn add_bar_mmio64(mut self, bar: BarN, size: u64) -> Self { method add_lintr (line 1263) | pub fn add_lintr(mut self) -> Self { method add_custom_cfg (line 1270) | pub fn add_custom_cfg(mut self, offset: u8, len: u8) -> Self { method add_cap_raw (line 1275) | fn add_cap_raw(&mut self, id: CapId, len: u8) { method add_cap_msix (line 1286) | pub fn add_cap_msix(mut self, bar: BarN, count: u16) -> Self { method add_cap_vendor (line 1300) | pub fn add_cap_vendor(mut self, tag: u32, len: u8) -> Self { method finish (line 1305) | pub fn finish(self) -> DeviceState { type MsixEntryV1 (line 1325) | pub struct MsixEntryV1 { type MsixStateV1 (line 1333) | pub struct MsixStateV1 { type PciStateV1 (line 1341) | pub struct PciStateV1 { method id (line 1348) | fn id() -> SchemaId { function msix_cfg_zero (line 1360) | fn msix_cfg_zero() { function msix_cfg_too_big (line 1365) | fn msix_cfg_too_big() { function msix_cfg_sizing (line 1369) | fn msix_cfg_sizing() { function cfg_read (line 1381) | pub(crate) fn cfg_read(dev: &dyn Endpoint) { function cfg_write (line 1396) | pub(crate) fn cfg_write(dev: &dyn Endpoint) { FILE: lib/propolis/src/hw/pci/mod.rs type BusNum (line 31) | pub struct BusNum(u8); method new (line 33) | pub const fn new(n: u8) -> Self { method get (line 36) | pub const fn get(&self) -> u8 { function from (line 42) | fn from(value: BusNum) -> Self { type DevNum (line 47) | pub struct DevNum(u8); method new (line 53) | pub const fn new(n: u8) -> Option { method new_unchecked (line 65) | pub const fn new_unchecked(n: u8) -> Self { method get (line 72) | pub const fn get(&self) -> u8 { function from (line 78) | fn from(value: DevNum) -> Self { type FuncNum (line 84) | pub struct FuncNum(u8); method new (line 90) | pub const fn new(n: u8) -> Option { method new_unchecked (line 102) | pub const fn new_unchecked(n: u8) -> Self { method get (line 109) | pub const fn get(&self) -> u8 { function from (line 115) | fn from(value: FuncNum) -> Self { type BusLocation (line 122) | pub struct BusLocation { method new (line 132) | pub const fn new(dev: u8, func: u8) -> Option { method new_unchecked (line 145) | pub const fn new_unchecked(dev: u8, func: u8) -> Self { type Bdf (line 157) | pub struct Bdf { method from (line 199) | fn from(value: propolis_types::PciPath) -> Self { method new (line 245) | pub const fn new(bus: u8, dev: u8, func: u8) -> Option { method new_unchecked (line 259) | pub const fn new_unchecked(bus: u8, dev: u8, func: u8) -> Self { type Err (line 163) | type Err = std::io::Error; method from_str (line 165) | fn from_str(s: &str) -> Result { function propolis_types_pcipath_is_always_valid_bdf (line 206) | fn propolis_types_pcipath_is_always_valid_bdf() { method fmt (line 267) | fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult { type BarN (line 280) | pub enum BarN { type INTxPinID (line 291) | pub enum INTxPinID { type LintrCfg (line 298) | pub type LintrCfg = (INTxPinID, Arc); type Endpoint (line 300) | pub trait Endpoint: Send + Sync { method attach (line 301) | fn attach(&self, attachment: bus::Attachment); method cfg_rw (line 302) | fn cfg_rw(&self, op: RWOp<'_, '_>); method bar_rw (line 303) | fn bar_rw(&self, bar: BarN, rwo: RWOp); function cfg_addr_parse (line 306) | fn cfg_addr_parse(addr: u32) -> Option<(Bdf, u8)> { type PioCfgDecoder (line 323) | pub struct PioCfgDecoder { method new (line 327) | pub fn new() -> Self { method service_addr (line 330) | pub fn service_addr(&self, rwop: RWOp) { method service_data (line 341) | pub fn service_data(&self, rwop: RWOp, mut cb: F) method addr (line 366) | pub fn addr(&self) -> u32 { method set_addr (line 371) | pub(super) fn set_addr(&self, addr: u32) { type PcieCfgDecoder (line 377) | pub struct PcieCfgDecoder { method new (line 388) | pub fn new(bus_count: u16) -> Self { method service (line 399) | pub fn service(&self, rwop: RWOp, mut cb: F) method decode_enhanced_cfg_offset (line 432) | fn decode_enhanced_cfg_offset(&self, region_offset: usize) -> (Bdf, us... FILE: lib/propolis/src/hw/pci/test.rs type Scaffold (line 18) | pub(crate) struct Scaffold { method new (line 25) | pub(crate) fn new() -> Self { method create_bus (line 34) | pub(crate) fn create_bus(&self) -> Bus { method basic_topo (line 43) | pub(crate) fn basic_topo(&self) -> Arc { function pcie_decoder (line 51) | fn pcie_decoder() { function pcie_decoder_multiple_bdfs (line 75) | fn pcie_decoder_multiple_bdfs() { function pcie_decoder_min_buses (line 105) | fn pcie_decoder_min_buses() { function pcie_decoder_access_spans_multiple_devs (line 128) | fn pcie_decoder_access_spans_multiple_devs() { FILE: lib/propolis/src/hw/pci/topology.rs type LogicalBusId (line 23) | pub struct LogicalBusId(pub u8); type RoutedBusId (line 29) | pub struct RoutedBusId(pub u8); type BusIndex (line 32) | struct BusIndex(usize); type PciTopologyError (line 36) | pub enum PciTopologyError { method from (line 48) | fn from(e: PciTopologyError) -> IoError { type Topology (line 68) | pub struct Topology { method pci_attach (line 80) | pub fn pci_attach( method pci_cfg_rw (line 97) | pub fn pci_cfg_rw( method set_bus_route (line 127) | pub(super) fn set_bus_route( method new_test (line 155) | pub(crate) fn new_test(bus0: Bus) -> Arc { type Inner (line 169) | struct Inner { method new (line 173) | fn new() -> Self { type BridgeDescription (line 180) | pub struct BridgeDescription { method new (line 198) | pub fn new(downstream_bus_id: LogicalBusId, attachment_addr: Bdf) -> S... method with_pci_ids (line 209) | pub fn with_pci_ids( type Builder (line 220) | pub struct Builder { method new (line 229) | pub fn new() -> Self { method add_bridge (line 245) | pub fn add_bridge( method finish (line 269) | pub fn finish( type FinishedTopology (line 336) | pub struct FinishedTopology { function build_without_bridges (line 349) | fn build_without_bridges() { function build_with_bridges (line 357) | fn build_with_bridges() { function builder_bus_zero_reserved (line 378) | fn builder_bus_zero_reserved() { function builder_conflicts (line 389) | fn builder_conflicts() { function cfg_read (line 412) | fn cfg_read() { function created_bridges (line 442) | fn created_bridges() { FILE: lib/propolis/src/hw/ps2/ctrl.rs function ps2ctrl_ctrlcfg_update (line 84) | fn ps2ctrl_ctrlcfg_update(ctrl_cfg: u8) {} function ps2ctrl_data_read (line 87) | fn ps2ctrl_data_read(val: u8) {} function ps2ctrl_data_read_empty (line 88) | fn ps2ctrl_data_read_empty() {} function ps2ctrl_data_write (line 89) | fn ps2ctrl_data_write(v: u8) {} function ps2ctrl_cmd_write (line 90) | fn ps2ctrl_cmd_write(v: u8) {} function ps2ctrl_unknown_cmd (line 91) | fn ps2ctrl_unknown_cmd(v: u8) {} function ps2ctrl_status_read (line 94) | fn ps2ctrl_status_read(status: u8) {} function ps2ctrl_pulse_pri (line 97) | fn ps2ctrl_pulse_pri() {} function ps2ctrl_pulse_aux (line 98) | fn ps2ctrl_pulse_aux() {} function ps2ctrl_keyevent (line 101) | fn ps2ctrl_keyevent( function ps2ctrl_keyevent_dropped (line 110) | fn ps2ctrl_keyevent_dropped( function ps2ctrl_keyboard_data (line 118) | fn ps2ctrl_keyboard_data(v: u8) {} function ps2ctrl_mouse_data (line 119) | fn ps2ctrl_mouse_data(v: u8) {} function ps2ctrl_keyboard_overflow (line 120) | fn ps2ctrl_keyboard_overflow(v: u8) {} function ps2ctrl_mouse_overflow (line 121) | fn ps2ctrl_mouse_overflow(v: u8) {} function ps2ctrl_keyboard_data_read (line 124) | fn ps2ctrl_keyboard_data_read(v: u8) {} function ps2ctrl_mouse_data_read (line 125) | fn ps2ctrl_mouse_data_read(v: u8) {} function ps2ctrl_keyboard_cmd (line 128) | fn ps2ctrl_keyboard_cmd(v: u8) {} function ps2ctrl_mouse_cmd (line 129) | fn ps2ctrl_mouse_cmd(v: u8) {} function ps2ctrl_unknown_keyboard_cmd (line 130) | fn ps2ctrl_unknown_keyboard_cmd(v: u8) {} function ps2ctrl_unknown_mouse_cmd (line 131) | fn ps2ctrl_unknown_mouse_cmd(v: u8) {} constant PS2C_CMD_READ_CTRL_CFG (line 244) | const PS2C_CMD_READ_CTRL_CFG: u8 = 0x20; constant PS2C_CMD_WRITE_CTRL_CFG (line 245) | const PS2C_CMD_WRITE_CTRL_CFG: u8 = 0x60; constant PS2C_CMD_READ_RAM_START (line 248) | const PS2C_CMD_READ_RAM_START: u8 = 0x21; constant PS2C_CMD_READ_RAM_END (line 249) | const PS2C_CMD_READ_RAM_END: u8 = 0x3f; constant PS2C_CMD_WRITE_RAM_START (line 252) | const PS2C_CMD_WRITE_RAM_START: u8 = 0x61; constant PS2C_CMD_WRITE_RAM_END (line 253) | const PS2C_CMD_WRITE_RAM_END: u8 = 0x7f; constant PS2C_CMD_AUX_PORT_DIS (line 256) | const PS2C_CMD_AUX_PORT_DIS: u8 = 0xa7; constant PS2C_CMD_AUX_PORT_ENA (line 257) | const PS2C_CMD_AUX_PORT_ENA: u8 = 0xa8; constant PS2C_CMD_AUX_PORT_TEST (line 260) | const PS2C_CMD_AUX_PORT_TEST: u8 = 0xa9; constant PS2C_CMD_CTRL_TEST (line 263) | const PS2C_CMD_CTRL_TEST: u8 = 0xaa; constant PS2C_R_CTRL_TEST_PASS (line 264) | const PS2C_R_CTRL_TEST_PASS: u8 = 0x55; constant PS2C_CMD_PRI_PORT_TEST (line 267) | const PS2C_CMD_PRI_PORT_TEST: u8 = 0xab; constant PS2C_R_PORT_TEST_PASS (line 268) | const PS2C_R_PORT_TEST_PASS: u8 = 0x00; constant PS2C_CMD_PRI_PORT_DIS (line 271) | const PS2C_CMD_PRI_PORT_DIS: u8 = 0xad; constant PS2C_CMD_PRI_PORT_ENA (line 272) | const PS2C_CMD_PRI_PORT_ENA: u8 = 0xae; constant PS2C_CMD_READ_CTLR_OUT (line 275) | const PS2C_CMD_READ_CTLR_OUT: u8 = 0xd0; constant PS2C_CMD_WRITE_CTLR_OUT (line 276) | const PS2C_CMD_WRITE_CTLR_OUT: u8 = 0xd1; constant PS2C_CMD_WRITE_PRI_OUT (line 279) | const PS2C_CMD_WRITE_PRI_OUT: u8 = 0xd2; constant PS2C_CMD_WRITE_AUX_OUT (line 282) | const PS2C_CMD_WRITE_AUX_OUT: u8 = 0xd3; constant PS2C_CMD_WRITE_AUX_IN (line 285) | const PS2C_CMD_WRITE_AUX_IN: u8 = 0xd4; constant PS2C_CMD_PULSE_START (line 288) | const PS2C_CMD_PULSE_START: u8 = 0xf0; constant PS2C_CMD_PULSE_END (line 289) | const PS2C_CMD_PULSE_END: u8 = 0xff; constant PS2C_RAM_LEN (line 291) | const PS2C_RAM_LEN: usize = type PS2State (line 295) | struct PS2State { type PS2Ctrl (line 310) | pub struct PS2Ctrl { method create (line 315) | pub fn create() -> Arc { method attach (line 318) | pub fn attach( method key_event (line 338) | pub fn key_event(&self, ke: KeyEvent) { method pio_rw (line 398) | fn pio_rw(&self, port: u16, rwo: RWOp) { method data_write (line 416) | fn data_write(&self, v: u8) { method data_read (line 459) | fn data_read(&self) -> u8 { method cmd_write (line 480) | fn cmd_write(&self, v: u8) { method status_read (line 542) | fn status_read(&self) -> u8 { method update_intr (line 564) | fn update_intr(&self, state: &mut PS2State) { method reset (line 584) | fn reset(&self) { method type_name (line 599) | fn type_name(&self) -> &'static str { method reset (line 602) | fn reset(&self) { method migrate (line 605) | fn migrate(&self) -> Migrator<'_> { method export (line 610) | fn export( method import (line 645) | fn import( constant PS2K_CMD_SET_LEDS (line 710) | const PS2K_CMD_SET_LEDS: u8 = 0xed; constant PS2K_CMD_SCAN_CODE (line 712) | const PS2K_CMD_SCAN_CODE: u8 = 0xf0; constant PS2K_CMD_TYPEMATIC (line 713) | const PS2K_CMD_TYPEMATIC: u8 = 0xf3; constant PS2K_CMD_ECHO (line 715) | const PS2K_CMD_ECHO: u8 = 0xee; constant PS2K_CMD_IDENT (line 716) | const PS2K_CMD_IDENT: u8 = 0xf2; constant PS2K_CMD_SCAN_EN (line 717) | const PS2K_CMD_SCAN_EN: u8 = 0xf4; constant PS2K_CMD_SCAN_DIS (line 718) | const PS2K_CMD_SCAN_DIS: u8 = 0xf5; constant PS2K_CMD_SET_DEFAULT (line 719) | const PS2K_CMD_SET_DEFAULT: u8 = 0xf6; constant PS2K_CMD_RESEND (line 720) | const PS2K_CMD_RESEND: u8 = 0xfe; constant PS2K_CMD_RESET (line 721) | const PS2K_CMD_RESET: u8 = 0xff; constant PS2K_R_ACK (line 723) | const PS2K_R_ACK: u8 = 0xfa; constant PS2K_R_ECHO (line 724) | const PS2K_R_ECHO: u8 = 0xee; constant PS2K_R_SELF_TEST_PASS (line 725) | const PS2K_R_SELF_TEST_PASS: u8 = 0xaa; constant PS2K_TYPEMATIC_MASK (line 727) | const PS2K_TYPEMATIC_MASK: u8 = 0x7f; constant PS2_KBD_BUFSZ (line 729) | const PS2_KBD_BUFSZ: usize = 16; type PS2ScanCodeSet (line 731) | pub(crate) enum PS2ScanCodeSet { method as_byte (line 737) | fn as_byte(&self) -> u8 { method from_byte (line 744) | fn from_byte(b: u8) -> Option { type PS2Kbd (line 755) | struct PS2Kbd { method new (line 764) | fn new() -> Self { method cmd_input (line 774) | fn cmd_input(&mut self, v: u8) { method resp (line 855) | fn resp(&mut self, v: u8) { method reset (line 873) | fn reset(&mut self) { method has_output (line 882) | fn has_output(&self) -> bool { method read_output (line 885) | fn read_output(&mut self) -> Option { method loopback (line 888) | fn loopback(&mut self, v: u8) { method recv_scancode (line 892) | fn recv_scancode(&mut self, scan_code: Vec) { method default (line 899) | fn default() -> Self { constant PS2M_CMD_RESET (line 905) | const PS2M_CMD_RESET: u8 = 0xff; constant PS2M_CMD_RESEND (line 906) | const PS2M_CMD_RESEND: u8 = 0xfe; constant PS2M_CMD_SET_DEFAULTS (line 907) | const PS2M_CMD_SET_DEFAULTS: u8 = 0xf6; constant PS2M_CMD_DATA_REP_DIS (line 908) | const PS2M_CMD_DATA_REP_DIS: u8 = 0xf5; constant PS2M_CMD_DATA_REP_ENA (line 909) | const PS2M_CMD_DATA_REP_ENA: u8 = 0xf4; constant PS2M_CMD_SET_SAMP_RATE (line 910) | const PS2M_CMD_SET_SAMP_RATE: u8 = 0xf3; constant PS2M_CMD_GET_DEVID (line 911) | const PS2M_CMD_GET_DEVID: u8 = 0xf2; constant PS2M_CMD_REMOTE_MODE_SET (line 912) | const PS2M_CMD_REMOTE_MODE_SET: u8 = 0xf0; constant PS2M_CMD_WRAP_MODE_SET (line 913) | const PS2M_CMD_WRAP_MODE_SET: u8 = 0xee; constant PS2M_CMD_WRAP_MODE_RESET (line 914) | const PS2M_CMD_WRAP_MODE_RESET: u8 = 0xec; constant PS2M_CMD_READ_DATA (line 915) | const PS2M_CMD_READ_DATA: u8 = 0xeb; constant PS2M_CMD_STREAM_MODE_SET (line 916) | const PS2M_CMD_STREAM_MODE_SET: u8 = 0xea; constant PS2M_CMD_STATUS_REQ (line 917) | const PS2M_CMD_STATUS_REQ: u8 = 0xe9; constant PS2M_CMD_RESOLUTION_SET (line 918) | const PS2M_CMD_RESOLUTION_SET: u8 = 0xe8; constant PS2M_CMD_SCALING1_SET (line 919) | const PS2M_CMD_SCALING1_SET: u8 = 0xe7; constant PS2M_CMD_SCALING2_SET (line 920) | const PS2M_CMD_SCALING2_SET: u8 = 0xe6; constant PS2M_R_ACK (line 922) | const PS2M_R_ACK: u8 = 0xfa; constant PS2M_R_SELF_TEST_PASS (line 923) | const PS2M_R_SELF_TEST_PASS: u8 = 0xaa; constant PS2M_R_DEVID (line 925) | const PS2M_R_DEVID: u8 = 0x00; type PS2Mouse (line 940) | struct PS2Mouse { method new (line 948) | fn new() -> Self { method cmd_input (line 957) | fn cmd_input(&mut self, v: u8) { method resp (line 1043) | fn resp(&mut self, v: u8) { method reset (line 1061) | fn reset(&mut self) { method has_output (line 1069) | fn has_output(&self) -> bool { method read_output (line 1072) | fn read_output(&mut self) -> Option { method loopback (line 1075) | fn loopback(&mut self, v: u8) { method movement (line 1078) | fn movement(&mut self) { method default (line 1088) | fn default() -> Self { type PS2CtrlV1 (line 1100) | pub struct PS2CtrlV1 { method id (line 1106) | fn id() -> SchemaId { type PS2CtrlStateV1 (line 1112) | pub struct PS2CtrlStateV1 { type PS2KbdV1 (line 1120) | pub struct PS2KbdV1 { type PS2MouseV1 (line 1129) | pub struct PS2MouseV1 { FILE: lib/propolis/src/hw/ps2/keyboard/mod.rs type ScanCodeBase (line 56) | pub struct ScanCodeBase { type KeyEventRep (line 65) | pub struct KeyEventRep { method to_scan_code (line 74) | pub(crate) fn to_scan_code(&self, sc_set: PS2ScanCodeSet) -> Vec { type Error (line 104) | type Error = anyhow::Error; method try_from (line 106) | fn try_from(keyevent: KeyEvent) -> Result { FILE: lib/propolis/src/hw/ps2/keyboard/scan_code_1.rs constant SC1_RELEASE_FLAG (line 7) | pub const SC1_RELEASE_FLAG: u8 = 0x80; constant SC1_EXTENDED_PREFIX_0 (line 8) | pub const SC1_EXTENDED_PREFIX_0: u8 = 0xe0; constant SC1_A (line 11) | pub const SC1_A: u8 = 0x1e; constant SC1_B (line 12) | pub const SC1_B: u8 = 0x30; constant SC1_C (line 13) | pub const SC1_C: u8 = 0x2e; constant SC1_D (line 14) | pub const SC1_D: u8 = 0x20; constant SC1_E (line 15) | pub const SC1_E: u8 = 0x12; constant SC1_F (line 16) | pub const SC1_F: u8 = 0x21; constant SC1_G (line 17) | pub const SC1_G: u8 = 0x22; constant SC1_H (line 18) | pub const SC1_H: u8 = 0x23; constant SC1_I (line 19) | pub const SC1_I: u8 = 0x17; constant SC1_J (line 20) | pub const SC1_J: u8 = 0x24; constant SC1_K (line 21) | pub const SC1_K: u8 = 0x25; constant SC1_L (line 22) | pub const SC1_L: u8 = 0x26; constant SC1_M (line 23) | pub const SC1_M: u8 = 0x32; constant SC1_N (line 24) | pub const SC1_N: u8 = 0x31; constant SC1_O (line 25) | pub const SC1_O: u8 = 0x18; constant SC1_P (line 26) | pub const SC1_P: u8 = 0x19; constant SC1_Q (line 27) | pub const SC1_Q: u8 = 0x10; constant SC1_R (line 28) | pub const SC1_R: u8 = 0x13; constant SC1_S (line 29) | pub const SC1_S: u8 = 0x1f; constant SC1_T (line 30) | pub const SC1_T: u8 = 0x14; constant SC1_U (line 31) | pub const SC1_U: u8 = 0x16; constant SC1_V (line 32) | pub const SC1_V: u8 = 0x2f; constant SC1_W (line 33) | pub const SC1_W: u8 = 0x11; constant SC1_X (line 34) | pub const SC1_X: u8 = 0x2d; constant SC1_Y (line 35) | pub const SC1_Y: u8 = 0x15; constant SC1_Z (line 36) | pub const SC1_Z: u8 = 0x2c; constant SC1_0_RPAREN (line 39) | pub const SC1_0_RPAREN: u8 = 0x0b; constant SC1_1_EXCLAMATION (line 40) | pub const SC1_1_EXCLAMATION: u8 = 0x02; constant SC1_2_AT (line 41) | pub const SC1_2_AT: u8 = 0x03; constant SC1_3_HASH (line 42) | pub const SC1_3_HASH: u8 = 0x04; constant SC1_4_DOLLAR (line 43) | pub const SC1_4_DOLLAR: u8 = 0x05; constant SC1_5_PERCENT (line 44) | pub const SC1_5_PERCENT: u8 = 0x06; constant SC1_6_CARET (line 45) | pub const SC1_6_CARET: u8 = 0x07; constant SC1_7_AMPERSAND (line 46) | pub const SC1_7_AMPERSAND: u8 = 0x08; constant SC1_8_ASTERISK (line 47) | pub const SC1_8_ASTERISK: u8 = 0x09; constant SC1_9_LPAREN (line 48) | pub const SC1_9_LPAREN: u8 = 0x0a; constant SC1_1_END (line 51) | pub const SC1_1_END: u8 = 0x4f; constant SC1_2_DOWN (line 52) | pub const SC1_2_DOWN: u8 = 0x50; constant SC1_3_PGDN (line 53) | pub const SC1_3_PGDN: u8 = 0x51; constant SC1_4_LEFT (line 54) | pub const SC1_4_LEFT: u8 = 0x4b; constant SC1_5_CENTER (line 55) | pub const SC1_5_CENTER: u8 = 0x4c; constant SC1_6_RIGHT (line 56) | pub const SC1_6_RIGHT: u8 = 0x4d; constant SC1_7_HOME (line 57) | pub const SC1_7_HOME: u8 = 0x47; constant SC1_8_UP (line 58) | pub const SC1_8_UP: u8 = 0x48; constant SC1_9_PGUP (line 59) | pub const SC1_9_PGUP: u8 = 0x49; constant SC1_0_INSERT (line 60) | pub const SC1_0_INSERT: u8 = 0x52; constant SC1_QUOTE_DBLQUOTE (line 63) | pub const SC1_QUOTE_DBLQUOTE: u8 = 0x28; constant SC1_COMMA_LESSTHAN (line 64) | pub const SC1_COMMA_LESSTHAN: u8 = 0x33; constant SC1_DASH_UNDERSCORE (line 65) | pub const SC1_DASH_UNDERSCORE: u8 = 0x0c; constant SC1_PERIOD_GREATERTHAN (line 66) | pub const SC1_PERIOD_GREATERTHAN: u8 = 0x34; constant SC1_SLASH_QUESTIONMARK (line 67) | pub const SC1_SLASH_QUESTIONMARK: u8 = 0x35; constant SC1_SEMICOLON_COLON (line 68) | pub const SC1_SEMICOLON_COLON: u8 = 0x27; constant SC1_EQUALS_PLUS (line 69) | pub const SC1_EQUALS_PLUS: u8 = 0x0d; constant SC1_LBRACKET_LCURLY (line 70) | pub const SC1_LBRACKET_LCURLY: u8 = 0x1a; constant SC1_BACKSLASH_PIPE (line 71) | pub const SC1_BACKSLASH_PIPE: u8 = 0x2b; constant SC1_RBRACKET_RCURLY (line 72) | pub const SC1_RBRACKET_RCURLY: u8 = 0x1b; constant SC1_BACKTICK_TILDE (line 73) | pub const SC1_BACKTICK_TILDE: u8 = 0x29; constant SC1_BACKSPACE (line 75) | pub const SC1_BACKSPACE: u8 = 0x0e; constant SC1_TAB (line 76) | pub const SC1_TAB: u8 = 0x0f; constant SC1_SPACE (line 78) | pub const SC1_SPACE: u8 = 0x39; constant SC1_DELETE (line 79) | pub const SC1_DELETE: u8 = 0x53; constant SC1_ENTER (line 81) | pub const SC1_ENTER: u8 = 0x1c; constant SC1_ESCAPE (line 82) | pub const SC1_ESCAPE: u8 = 0x01; constant SC1_PRINTSCREEN (line 83) | pub const SC1_PRINTSCREEN: u8 = 0x37; constant SC1_F1 (line 84) | pub const SC1_F1: u8 = 0x3b; constant SC1_F2 (line 85) | pub const SC1_F2: u8 = 0x3c; constant SC1_F3 (line 86) | pub const SC1_F3: u8 = 0x3d; constant SC1_F4 (line 87) | pub const SC1_F4: u8 = 0x3e; constant SC1_F5 (line 88) | pub const SC1_F5: u8 = 0x3f; constant SC1_F6 (line 89) | pub const SC1_F6: u8 = 0x40; constant SC1_F7 (line 90) | pub const SC1_F7: u8 = 0x41; constant SC1_F8 (line 91) | pub const SC1_F8: u8 = 0x42; constant SC1_F9 (line 92) | pub const SC1_F9: u8 = 0x43; constant SC1_F10 (line 93) | pub const SC1_F10: u8 = 0x44; constant SC1_F11 (line 94) | pub const SC1_F11: u8 = 0x57; constant SC1_F12 (line 95) | pub const SC1_F12: u8 = 0x58; constant SC1_KP_ENTER (line 97) | pub const SC1_KP_ENTER: u8 = 0x1c; constant SC1_KP_DEL_PERIOD (line 98) | pub const SC1_KP_DEL_PERIOD: u8 = 0x53; constant SC1_KP_SLASH (line 101) | pub const SC1_KP_SLASH: u8 = 0x35; constant SC1_KP_ASTERISK (line 102) | pub const SC1_KP_ASTERISK: u8 = 0x37; constant SC1_KP_MINUS (line 103) | pub const SC1_KP_MINUS: u8 = 0x4a; constant SC1_KP_PLUS (line 104) | pub const SC1_KP_PLUS: u8 = 0x4e; constant SC1_DOWN (line 105) | pub const SC1_DOWN: u8 = 0x50; constant SC1_LEFT (line 106) | pub const SC1_LEFT: u8 = 0x4b; constant SC1_RIGHT (line 107) | pub const SC1_RIGHT: u8 = 0x4d; constant SC1_UP (line 108) | pub const SC1_UP: u8 = 0x48; constant SC1_HOME (line 109) | pub const SC1_HOME: u8 = 0x47; constant SC1_INSERT (line 110) | pub const SC1_INSERT: u8 = 0x52; constant SC1_END (line 111) | pub const SC1_END: u8 = 0x4f; constant SC1_PGUP (line 112) | pub const SC1_PGUP: u8 = 0x49; constant SC1_PGDN (line 113) | pub const SC1_PGDN: u8 = 0x51; constant SC1_CTRL_LEFT (line 115) | pub const SC1_CTRL_LEFT: u8 = 0x1d; constant SC1_CTRL_RIGHT (line 116) | pub const SC1_CTRL_RIGHT: u8 = 0x1d; constant SC1_SHIFT_LEFT (line 117) | pub const SC1_SHIFT_LEFT: u8 = 0x2a; constant SC1_CAPS_LOCK (line 118) | pub const SC1_CAPS_LOCK: u8 = 0x3a; constant SC1_NUM_LOCK (line 119) | pub const SC1_NUM_LOCK: u8 = 0x45; constant SC1_SCROLL_LOCK (line 120) | pub const SC1_SCROLL_LOCK: u8 = 0x46; constant SC1_SHIFT_RIGHT (line 121) | pub const SC1_SHIFT_RIGHT: u8 = 0x36; constant SC1_ALT_LEFT (line 122) | pub const SC1_ALT_LEFT: u8 = 0x38; constant SC1_ALT_RIGHT (line 123) | pub const SC1_ALT_RIGHT: u8 = 0x38; constant SC1_SUPER_LEFT (line 127) | pub const SC1_SUPER_LEFT: u8 = 0x5b; constant SC1_SUPER_RIGHT (line 128) | pub const SC1_SUPER_RIGHT: u8 = 0x5c; FILE: lib/propolis/src/hw/ps2/keyboard/scan_code_2.rs constant SC2_RELEASE_CODE (line 7) | pub const SC2_RELEASE_CODE: u8 = 0xf0; constant SC2_EXTENDED_PREFIX_0 (line 8) | pub const SC2_EXTENDED_PREFIX_0: u8 = 0xe0; constant SC2_A (line 11) | pub const SC2_A: u8 = 0x1c; constant SC2_B (line 12) | pub const SC2_B: u8 = 0x32; constant SC2_C (line 13) | pub const SC2_C: u8 = 0x21; constant SC2_D (line 14) | pub const SC2_D: u8 = 0x23; constant SC2_E (line 15) | pub const SC2_E: u8 = 0x24; constant SC2_F (line 16) | pub const SC2_F: u8 = 0x2b; constant SC2_G (line 17) | pub const SC2_G: u8 = 0x34; constant SC2_H (line 18) | pub const SC2_H: u8 = 0x33; constant SC2_I (line 19) | pub const SC2_I: u8 = 0x43; constant SC2_J (line 20) | pub const SC2_J: u8 = 0x3b; constant SC2_K (line 21) | pub const SC2_K: u8 = 0x42; constant SC2_L (line 22) | pub const SC2_L: u8 = 0x4b; constant SC2_M (line 23) | pub const SC2_M: u8 = 0x3a; constant SC2_N (line 24) | pub const SC2_N: u8 = 0x31; constant SC2_O (line 25) | pub const SC2_O: u8 = 0x44; constant SC2_P (line 26) | pub const SC2_P: u8 = 0x4d; constant SC2_Q (line 27) | pub const SC2_Q: u8 = 0x15; constant SC2_R (line 28) | pub const SC2_R: u8 = 0x2d; constant SC2_S (line 29) | pub const SC2_S: u8 = 0x1b; constant SC2_T (line 30) | pub const SC2_T: u8 = 0x2c; constant SC2_U (line 31) | pub const SC2_U: u8 = 0x3c; constant SC2_V (line 32) | pub const SC2_V: u8 = 0x2a; constant SC2_W (line 33) | pub const SC2_W: u8 = 0x1d; constant SC2_X (line 34) | pub const SC2_X: u8 = 0x22; constant SC2_Y (line 35) | pub const SC2_Y: u8 = 0x35; constant SC2_Z (line 36) | pub const SC2_Z: u8 = 0x1a; constant SC2_0_RPAREN (line 39) | pub const SC2_0_RPAREN: u8 = 0x45; constant SC2_1_EXCLAMATION (line 40) | pub const SC2_1_EXCLAMATION: u8 = 0x16; constant SC2_2_AT (line 41) | pub const SC2_2_AT: u8 = 0x1e; constant SC2_3_HASH (line 42) | pub const SC2_3_HASH: u8 = 0x26; constant SC2_4_DOLLAR (line 43) | pub const SC2_4_DOLLAR: u8 = 0x25; constant SC2_5_PERCENT (line 44) | pub const SC2_5_PERCENT: u8 = 0x2e; constant SC2_6_CARET (line 45) | pub const SC2_6_CARET: u8 = 0x36; constant SC2_7_AMPERSAND (line 46) | pub const SC2_7_AMPERSAND: u8 = 0x3d; constant SC2_8_ASTERISK (line 47) | pub const SC2_8_ASTERISK: u8 = 0x3e; constant SC2_9_LPAREN (line 48) | pub const SC2_9_LPAREN: u8 = 0x46; constant SC2_1_END (line 51) | pub const SC2_1_END: u8 = 0x69; constant SC2_2_DOWN (line 52) | pub const SC2_2_DOWN: u8 = 0x72; constant SC2_3_PGDN (line 53) | pub const SC2_3_PGDN: u8 = 0x7a; constant SC2_4_LEFT (line 54) | pub const SC2_4_LEFT: u8 = 0x6b; constant SC2_5_CENTER (line 55) | pub const SC2_5_CENTER: u8 = 0x73; constant SC2_6_RIGHT (line 56) | pub const SC2_6_RIGHT: u8 = 0x74; constant SC2_7_HOME (line 57) | pub const SC2_7_HOME: u8 = 0x6c; constant SC2_8_UP (line 58) | pub const SC2_8_UP: u8 = 0x75; constant SC2_9_PGUP (line 59) | pub const SC2_9_PGUP: u8 = 0x7d; constant SC2_0_INSERT (line 60) | pub const SC2_0_INSERT: u8 = 0x70; constant SC2_QUOTE_DBLQUOTE (line 63) | pub const SC2_QUOTE_DBLQUOTE: u8 = 0x52; constant SC2_COMMA_LESSTHAN (line 64) | pub const SC2_COMMA_LESSTHAN: u8 = 0x41; constant SC2_DASH_UNDERSCORE (line 65) | pub const SC2_DASH_UNDERSCORE: u8 = 0x4e; constant SC2_PERIOD_GREATERTHAN (line 66) | pub const SC2_PERIOD_GREATERTHAN: u8 = 0x49; constant SC2_SLASH_QUESTIONMARK (line 67) | pub const SC2_SLASH_QUESTIONMARK: u8 = 0x4a; constant SC2_SEMICOLON_COLON (line 68) | pub const SC2_SEMICOLON_COLON: u8 = 0x4c; constant SC2_EQUALS_PLUS (line 69) | pub const SC2_EQUALS_PLUS: u8 = 0x55; constant SC2_LBRACKET_LCURLY (line 70) | pub const SC2_LBRACKET_LCURLY: u8 = 0x54; constant SC2_BACKSLASH_PIPE (line 71) | pub const SC2_BACKSLASH_PIPE: u8 = 0x5d; constant SC2_RBRACKET_RCURLY (line 72) | pub const SC2_RBRACKET_RCURLY: u8 = 0x5b; constant SC2_BACKTICK_TILDE (line 73) | pub const SC2_BACKTICK_TILDE: u8 = 0x0e; constant SC2_BACKSPACE (line 75) | pub const SC2_BACKSPACE: u8 = 0x66; constant SC2_TAB (line 76) | pub const SC2_TAB: u8 = 0x0d; constant SC2_SPACE (line 78) | pub const SC2_SPACE: u8 = 0x29; constant SC2_DELETE (line 79) | pub const SC2_DELETE: u8 = 0x71; constant SC2_ENTER (line 81) | pub const SC2_ENTER: u8 = 0x5a; constant SC2_ESCAPE (line 82) | pub const SC2_ESCAPE: u8 = 0x76; constant SC2_PRINTSCREEN (line 83) | pub const SC2_PRINTSCREEN: u8 = 0x7c; constant SC2_F1 (line 84) | pub const SC2_F1: u8 = 0x05; constant SC2_F2 (line 85) | pub const SC2_F2: u8 = 0x06; constant SC2_F3 (line 86) | pub const SC2_F3: u8 = 0x04; constant SC2_F4 (line 87) | pub const SC2_F4: u8 = 0x0c; constant SC2_F5 (line 88) | pub const SC2_F5: u8 = 0x03; constant SC2_F6 (line 89) | pub const SC2_F6: u8 = 0x0b; constant SC2_F7 (line 90) | pub const SC2_F7: u8 = 0x83; constant SC2_F8 (line 91) | pub const SC2_F8: u8 = 0x0a; constant SC2_F9 (line 92) | pub const SC2_F9: u8 = 0x01; constant SC2_F10 (line 93) | pub const SC2_F10: u8 = 0x09; constant SC2_F11 (line 94) | pub const SC2_F11: u8 = 0x78; constant SC2_F12 (line 95) | pub const SC2_F12: u8 = 0x07; constant SC2_KP_ENTER (line 97) | pub const SC2_KP_ENTER: u8 = 0x5a; constant SC2_KP_DEL_PERIOD (line 98) | pub const SC2_KP_DEL_PERIOD: u8 = 0x71; constant SC2_KP_SLASH (line 101) | pub const SC2_KP_SLASH: u8 = 0x4a; constant SC2_KP_ASTERISK (line 102) | pub const SC2_KP_ASTERISK: u8 = 0x7c; constant SC2_KP_MINUS (line 103) | pub const SC2_KP_MINUS: u8 = 0x7b; constant SC2_KP_PLUS (line 104) | pub const SC2_KP_PLUS: u8 = 0x79; constant SC2_DOWN (line 105) | pub const SC2_DOWN: u8 = 0x72; constant SC2_LEFT (line 106) | pub const SC2_LEFT: u8 = 0x6b; constant SC2_RIGHT (line 107) | pub const SC2_RIGHT: u8 = 0x74; constant SC2_UP (line 108) | pub const SC2_UP: u8 = 0x75; constant SC2_HOME (line 109) | pub const SC2_HOME: u8 = 0x6c; constant SC2_INSERT (line 110) | pub const SC2_INSERT: u8 = 0x70; constant SC2_END (line 111) | pub const SC2_END: u8 = 0x69; constant SC2_PGUP (line 112) | pub const SC2_PGUP: u8 = 0x7d; constant SC2_PGDN (line 113) | pub const SC2_PGDN: u8 = 0x7a; constant SC2_CTRL_LEFT (line 115) | pub const SC2_CTRL_LEFT: u8 = 0x14; constant SC2_CTRL_RIGHT (line 116) | pub const SC2_CTRL_RIGHT: u8 = 0x14; constant SC2_SHIFT_LEFT (line 117) | pub const SC2_SHIFT_LEFT: u8 = 0x12; constant SC2_CAPS_LOCK (line 118) | pub const SC2_CAPS_LOCK: u8 = 0x58; constant SC2_NUM_LOCK (line 119) | pub const SC2_NUM_LOCK: u8 = 0x77; constant SC2_SCROLL_LOCK (line 120) | pub const SC2_SCROLL_LOCK: u8 = 0x7e; constant SC2_SHIFT_RIGHT (line 121) | pub const SC2_SHIFT_RIGHT: u8 = 0x59; constant SC2_ALT_LEFT (line 122) | pub const SC2_ALT_LEFT: u8 = 0x11; constant SC2_ALT_RIGHT (line 123) | pub const SC2_ALT_RIGHT: u8 = 0x11; constant SC2_SUPER_LEFT (line 127) | pub const SC2_SUPER_LEFT: u8 = 0x1f; constant SC2_SUPER_RIGHT (line 128) | pub const SC2_SUPER_RIGHT: u8 = 0x27; FILE: lib/propolis/src/hw/qemu/debug.rs constant QEMU_DEBUG_IOPORT (line 11) | const QEMU_DEBUG_IOPORT: u16 = 0x0402; constant QEMU_DEBUG_IDENT (line 12) | const QEMU_DEBUG_IDENT: u8 = 0xe9; type QemuDebugPort (line 14) | pub struct QemuDebugPort { method create (line 18) | pub fn create(pio: &PioBus) -> Arc { method pio_rw (line 28) | fn pio_rw(&self, rwo: RWOp) { method set_consumer (line 42) | fn set_consumer(&self, f: Option) { method type_name (line 48) | fn type_name(&self) -> &'static str { FILE: lib/propolis/src/hw/qemu/fwcfg.rs constant SIGNATURE_VALUE (line 22) | const SIGNATURE_VALUE: &[u8; 4] = b"QEMU"; type LegacyId (line 27) | pub enum LegacyId { method name (line 56) | const fn name(&self) -> &'static str { type LegacyX86Id (line 87) | pub enum LegacyX86Id { type Entry (line 96) | pub enum Entry { method fixed_u32 (line 102) | pub fn fixed_u32(value: u32) -> Self { type InsertError (line 108) | pub enum InsertError { type Directory (line 122) | struct Directory { method new (line 128) | fn new() -> Self { method insert (line 135) | fn insert( method insert_legacy (line 157) | fn insert_legacy( method remove (line 165) | fn remove(&mut self, selector: u16) -> Option { method next_named_selector (line 175) | fn next_named_selector(&self) -> Option { method entry (line 182) | fn entry(&mut self, selector: u16) -> Option<&mut Entry> { method named_selector (line 186) | fn named_selector(&mut self, name: &str) -> Option { method entries (line 189) | fn entries(&self) -> Entries<'_> { method clear (line 192) | fn clear(&mut self) { method render (line 199) | fn render(&self) -> Vec { type FwCfgErr (line 220) | enum FwCfgErr { type Entries (line 233) | struct Entries<'a> { type Item (line 238) | type Item = (u16, &'a str, &'a Entry); method next (line 240) | fn next(&mut self) -> Option { type State (line 248) | struct State { method dma_addr (line 260) | fn dma_addr(&self) -> u64 { method reset (line 263) | fn reset(&mut self) { type SelectedEntry (line 269) | struct SelectedEntry { type FwCfg (line 275) | pub struct FwCfg { method new (line 282) | pub fn new() -> Arc { method attach (line 313) | pub fn attach(self: &Arc, pio: &PioBus, acc_mem: &MemAccessor) { method attach_ramfb (line 332) | pub fn attach_ramfb( method insert_legacy (line 342) | pub fn insert_legacy( method insert_named (line 353) | pub fn insert_named( method remove (line 367) | pub fn remove(&self, selector: u16) -> Option { method remove_named (line 373) | pub fn remove_named(&self, name: &str) -> Option { method ensure_valid_selected (line 389) | fn ensure_valid_selected(state: &mut MutexGuard) { method pio_read (line 401) | fn pio_read(&self, port: u16, ro: &mut ReadOp) { method pio_write (line 450) | fn pio_write(&self, port: u16, wo: &mut WriteOp) { method select (line 479) | fn select(&self, state: &mut MutexGuard, selector: u16) { method read (line 495) | fn read( method write (line 557) | fn write( method dma_initiate (line 591) | fn dma_initiate( method dma_operation (line 632) | fn dma_operation( method type_name (line 690) | fn type_name(&self) -> &'static str { method migrate (line 693) | fn migrate(&self) -> Migrator<'_> { method reset (line 696) | fn reset(&self) { method export (line 701) | fn export( method import (line 726) | fn import( type FwCfgV2 (line 763) | pub struct FwCfgV2 { method id (line 806) | fn id() -> SchemaId { type FwCfgSelectedV2 (line 769) | pub struct FwCfgSelectedV2 { type FwCfgEntryV2 (line 775) | pub struct FwCfgEntryV2 { type FwCfgEntryValueV2 (line 781) | pub enum FwCfgEntryValueV2 { method from (line 787) | fn from(value: &super::Entry) -> Self { function from (line 796) | fn from(value: FwCfgEntryValueV2) -> Self { constant FW_CFG_IOP_SELECTOR (line 820) | pub const FW_CFG_IOP_SELECTOR: u16 = 0x0510; constant FW_CFG_IOP_DATA (line 821) | pub const FW_CFG_IOP_DATA: u16 = 0x0511; constant FW_CFG_IOP_DMA_HI (line 822) | pub const FW_CFG_IOP_DMA_HI: u16 = 0x0514; constant FW_CFG_IOP_DMA_LO (line 823) | pub const FW_CFG_IOP_DMA_LO: u16 = 0x0518; constant ITEM_INVALID (line 825) | pub const ITEM_INVALID: u16 = 0xffff; constant ITEMS_FILE_START (line 826) | pub const ITEMS_FILE_START: u16 = 0x0020; constant ITEMS_FILE_END (line 827) | pub const ITEMS_FILE_END: u16 = 0x1000; constant ITEMS_ARCH_START (line 828) | pub const ITEMS_ARCH_START: u16 = 0x8000; constant ITEMS_ARCH_END (line 829) | pub const ITEMS_ARCH_END: u16 = 0x9000; constant FW_CFG_VER_BASE (line 831) | pub const FW_CFG_VER_BASE: u32 = 1 << 0; constant FW_CFG_VER_DMA (line 832) | pub const FW_CFG_VER_DMA: u32 = 1 << 1; constant FWCFG_FILENAME_LEN (line 844) | pub const FWCFG_FILENAME_LEN: usize = 56; type FwCfgFile (line 848) | pub struct FwCfgFile { method new (line 855) | pub fn new(size: u32, select: u16, name: &str) -> Self { type FwCfgDmaAccess (line 872) | pub struct FwCfgDmaAccess { function pio_write (line 889) | fn pio_write(dev: &FwCfg, port: u16, data: T) { function pio_read (line 894) | fn pio_read( function pio_read_data (line 903) | fn pio_read_data( function struct_sizing (line 914) | fn struct_sizing() { function pio_read_basic (line 920) | fn pio_read_basic() { function pio_read_missing (line 932) | fn pio_read_missing() { function read_version (line 942) | fn read_version() { function machine_setup (line 952) | fn machine_setup() -> (Machine, Arc, MemAccessor) { type DmaReq (line 963) | struct DmaReq { function write_dma_req (line 968) | fn write_dma_req(mem: &MemCtx, req_addr: u64, req: DmaReq) { function submit_dma_req (line 973) | fn submit_dma_req(dev: &FwCfg, req_addr: u64) { function dma_read_basic (line 979) | fn dma_read_basic() { function dma_read_missing (line 1003) | fn dma_read_missing() { function state_cleared_on_reset (line 1027) | fn state_cleared_on_reset() { type EfiAcpiMemoryType (line 1069) | enum EfiAcpiMemoryType { type E820Entry64 (line 1087) | struct E820Entry64 { type E820Table (line 1101) | pub struct E820Table(Vec); method new (line 1103) | pub fn new() -> Self { method add_mem (line 1108) | pub fn add_mem(&mut self, base_addr: u64, length: u64) { method add_reserved (line 1117) | pub fn add_reserved(&mut self, base_addr: u64, length: u64) { method finish (line 1125) | pub fn finish(self) -> Entry { function entry_size_is_correct (line 1136) | fn entry_size_is_correct() { function basic (line 1144) | fn basic() { type BootOrder (line 1214) | pub struct BootOrder(Vec); method new (line 1216) | pub fn new() -> Self { method add_disk (line 1221) | pub fn add_disk(&mut self, loc: pci::BusLocation) { method add_pci (line 1237) | pub fn add_pci(&mut self, loc: pci::BusLocation, kind: &str) { method add_nvme (line 1243) | pub fn add_nvme(&mut self, loc: pci::BusLocation, eui: u64) { method finish (line 1257) | pub fn finish(self) -> Entry { method format_pci (line 1264) | fn format_pci(loc: pci::BusLocation, name: &str) -> String { function basic (line 1277) | fn basic() { FILE: lib/propolis/src/hw/qemu/pvpanic.rs type QemuPvpanic (line 20) | pub struct QemuPvpanic { constant IOPORT (line 51) | const IOPORT: u16 = 0x505; method create (line 53) | pub fn create(log: slog::Logger) -> Arc { method attach_pio (line 64) | pub fn attach_pio(self: &Arc, pio: &PioBus) { method panic_counts (line 72) | pub fn panic_counts(&self) -> PanicCounts { method pio_rw (line 76) | fn pio_rw(&self, rwo: RWOp) { type PanicCounts (line 28) | pub struct PanicCounts { constant DEVICE_NAME (line 35) | pub const DEVICE_NAME: &str = "qemu-pvpanic"; constant HOST_HANDLED (line 39) | const HOST_HANDLED: u8 = 0b01; constant GUEST_HANDLED (line 43) | const GUEST_HANDLED: u8 = 0b10; function pvpanic_pio_write (line 47) | fn pvpanic_pio_write(value: u8) {} method type_name (line 108) | fn type_name(&self) -> &'static str { FILE: lib/propolis/src/hw/qemu/ramfb.rs type Reg (line 25) | enum Reg { type Config (line 50) | struct Config { method mapping (line 60) | fn mapping<'a>(&self, mem: &'a MemCtx) -> Option> { method stride (line 73) | fn stride(&self, bytepp: usize) -> usize { type ConfigError (line 82) | pub enum ConfigError { type Error (line 89) | type Error = ConfigError; method try_from (line 91) | fn try_from(value: &Config) -> Result { type FramebufferSpec (line 111) | pub struct FramebufferSpec { type FrameSnap (line 118) | pub struct FrameSnap { method read_from (line 123) | fn read_from(config: &Config, mem: &MemCtx) -> Option { type Inner (line 176) | struct Inner { type RamFb (line 181) | pub struct RamFb { constant FWCFG_ENTRY_SIZE (line 189) | pub const FWCFG_ENTRY_SIZE: usize = 28; constant FWCFG_ENTRY_NAME (line 192) | pub const FWCFG_ENTRY_NAME: &'static str = "etc/ramfb"; method create (line 194) | pub fn create(log: slog::Logger) -> Arc { method attach (line 205) | pub fn attach(&self, acc_mem: &MemAccessor) { method read_framebuffer (line 219) | pub fn read_framebuffer( method read_spec (line 239) | pub fn read_spec(&self) -> Result { method updated_since (line 244) | pub fn updated_since(&self, when: Instant) -> UpdatedSince<'_> { method fwcfg_rw (line 252) | pub(crate) fn fwcfg_rw(&self, mut rwo: RWOp) -> Result<(), ()> { type Output (line 303) | type Output = (); method poll (line 305) | fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { method type_name (line 325) | fn type_name(&self) -> &'static str { method migrate (line 328) | fn migrate(&self) -> Migrator<'_> { method export (line 334) | fn export( method import (line 351) | fn import( type RamFbV1 (line 378) | pub struct RamFbV1 { method id (line 387) | fn id() -> SchemaId { function config_reg_size (line 398) | fn config_reg_size() { FILE: lib/propolis/src/hw/testdev.rs type MigrationFailureDevice (line 22) | pub struct MigrationFailureDevice { constant NAME (line 38) | const NAME: &'static str = "test-migration-failure"; method create (line 40) | pub fn create(log: &slog::Logger, fail: MigrationFailures) -> Arc { type MigrationFailures (line 29) | pub struct MigrationFailures { type MigrationFailurePayloadV1 (line 35) | struct MigrationFailurePayloadV1 {} method id (line 118) | fn id() -> SchemaId { method type_name (line 58) | fn type_name(&self) -> &'static str { method migrate (line 61) | fn migrate(&self) -> Migrator<'_> { method export (line 67) | fn export( method import (line 93) | fn import( FILE: lib/propolis/src/hw/uart/lpc.rs constant REGISTER_LEN (line 16) | pub const REGISTER_LEN: usize = 8; type UartState (line 18) | struct UartState { method sync_intr_pin (line 29) | fn sync_intr_pin(&self) { type LpcUart (line 38) | pub struct LpcUart { method new (line 45) | pub fn new(irq_pin: Box) -> Arc { method attach (line 57) | pub fn attach(self: &Arc, bus: &PioBus, port: u16) { method pio_rw (line 63) | fn pio_rw(&self, rwo: RWOp) { method reset (line 98) | fn reset(&self) { method write (line 106) | fn write(&self, data: u8) -> bool { method set_notifier (line 117) | fn set_notifier(&self, f: Option) { method read (line 122) | fn read(&self) -> Option { method discard (line 133) | fn discard(&self, count: usize) -> usize { method set_notifier (line 146) | fn set_notifier(&self, f: Option) { method set_autodiscard (line 149) | fn set_autodiscard(&self, active: bool) { method type_name (line 156) | fn type_name(&self) -> &'static str { method reset (line 159) | fn reset(&self) { method migrate (line 162) | fn migrate(&self) -> Migrator<'_> { method pause (line 166) | fn pause(&self) { method resume (line 171) | fn resume(&self) { method export (line 177) | fn export( method import (line 185) | fn import( FILE: lib/propolis/src/hw/uart/uart16550.rs function uart_reg_read (line 23) | fn uart_reg_read(offset: u8, is_dlab: u8, val: u8) {} function uart_reg_write (line 24) | fn uart_reg_write(offset: u8, is_dlab: u8, data: u8) {} function uart_tx_discard (line 25) | fn uart_tx_discard(data: u8) {} function uart_ign_write (line 26) | fn uart_ign_write(offset: u8, is_dlab: u8, data: u8) {} function uart_ign_read (line 27) | fn uart_ign_read(offset: u8, is_dlab: u8) {} type Uart (line 30) | pub struct Uart { method new (line 55) | pub fn new() -> Self { method reg_read (line 76) | pub fn reg_read(&mut self, offset: u8) -> u8 { method reg_write (line 133) | pub fn reg_write(&mut self, offset: u8, data: u8) { method data_read (line 204) | pub fn data_read(&mut self) -> Option { method data_write (line 213) | pub fn data_write(&mut self, data: u8) -> bool { method intr_state (line 225) | pub fn intr_state(&self) -> bool { method is_readable (line 228) | pub fn is_readable(&self) -> bool { method is_writable (line 231) | pub fn is_writable(&self) -> bool { method reset (line 235) | pub fn reset(&mut self) { method is_dlab (line 255) | fn is_dlab(&self) -> bool { method is_loopback (line 259) | fn is_loopback(&self) -> bool { method next_intr (line 263) | fn next_intr(&self) -> Option { method update_isr (line 287) | fn update_isr(&mut self) { method set_thre (line 293) | fn set_thre(&mut self, state: bool) { method update_dr (line 301) | fn update_dr(&mut self) { method export (line 305) | pub(super) fn export(&self) -> migrate::Uart16550V1 { method import (line 321) | pub(super) fn import( type Fifo (line 363) | pub struct Fifo { method new (line 369) | fn new(max_len: usize) -> Self { method write (line 372) | fn write(&mut self, data: u8) -> bool { method read (line 380) | fn read(&mut self) -> Option { method reset (line 383) | fn reset(&mut self) { method is_empty (line 386) | fn is_empty(&self) -> bool { method is_full (line 389) | fn is_full(&self) -> bool { type Uart16550V1 (line 400) | pub struct Uart16550V1 { method id (line 415) | fn id() -> SchemaId { method default (line 499) | fn default() -> Self { method set_intr (line 505) | fn set_intr(&mut self, intr_id: Option) { method get_intr (line 515) | fn get_intr(&self) -> Option { method default (line 525) | fn default() -> Self { type IntrIdent (line 532) | enum IntrIdent { type UartReg (line 546) | enum UartReg { method for_write (line 574) | const fn for_write(off: u8, dlab_status: bool) -> Option { method for_read (line 590) | const fn for_read(off: u8, dlab_status: bool) -> Option { method is_readable (line 606) | const fn is_readable(self) -> bool { method is_writable (line 622) | const fn is_writable(self) -> bool { constant REG_RHR (line 644) | pub const REG_RHR: u8 = 0b000; constant REG_THR (line 645) | pub const REG_THR: u8 = 0b000; constant REG_IER (line 646) | pub const REG_IER: u8 = 0b001; constant REG_ISR (line 647) | pub const REG_ISR: u8 = 0b010; constant REG_FCR (line 648) | pub const REG_FCR: u8 = 0b010; constant REG_LCR (line 649) | pub const REG_LCR: u8 = 0b011; constant REG_MCR (line 650) | pub const REG_MCR: u8 = 0b100; constant REG_LSR (line 651) | pub const REG_LSR: u8 = 0b101; constant REG_MSR (line 652) | pub const REG_MSR: u8 = 0b110; constant REG_SPR (line 653) | pub const REG_SPR: u8 = 0b111; constant REG_DLL (line 654) | pub const REG_DLL: u8 = 0b000; constant REG_DLH (line 655) | pub const REG_DLH: u8 = 0b001; constant IER_ERBFI (line 658) | pub const IER_ERBFI: u8 = 1 << 0; constant IER_ETBEI (line 659) | pub const IER_ETBEI: u8 = 1 << 1; constant IER_ELSI (line 660) | pub const IER_ELSI: u8 = 1 << 2; constant IER_EDSSI (line 661) | pub const IER_EDSSI: u8 = 1 << 3; constant ISRC_NONE (line 664) | pub const ISRC_NONE: u8 = 0b0001; constant ISRC_RLS (line 665) | pub const ISRC_RLS: u8 = 0b0110; constant ISRC_DR (line 666) | pub const ISRC_DR: u8 = 0b0100; constant ISRC_TMO (line 667) | pub const ISRC_TMO: u8 = 0b1100; constant ISRC_THRE (line 668) | pub const ISRC_THRE: u8 = 0b0010; constant ISRC_MDM (line 669) | pub const ISRC_MDM: u8 = 0b0000; constant FCR_ENA (line 672) | pub const FCR_ENA: u8 = 1 << 0; constant FCR_RXRST (line 673) | pub const FCR_RXRST: u8 = 1 << 1; constant FCR_TXRST (line 674) | pub const FCR_TXRST: u8 = 1 << 2; constant FCR_DMAMD (line 675) | pub const FCR_DMAMD: u8 = 1 << 3; constant FCR_TRGR (line 676) | pub const FCR_TRGR: u8 = 0b11000000; constant MCR_LOOP (line 679) | pub const MCR_LOOP: u8 = 1 << 4; constant LSR_DR (line 682) | pub const LSR_DR: u8 = 1 << 0; constant LSR_OE (line 683) | pub const LSR_OE: u8 = 1 << 1; constant LSR_THRE (line 684) | pub const LSR_THRE: u8 = 1 << 5; constant LSR_TEMT (line 685) | pub const LSR_TEMT: u8 = 1 << 6; constant LCR_DLAB (line 686) | pub const LCR_DLAB: u8 = 0b10000000; constant MASK_PCD (line 688) | pub const MASK_PCD: u8 = 0b00001111; constant MASK_MCR (line 689) | pub const MASK_MCR: u8 = 0b00011111; constant MASK_IER (line 690) | pub const MASK_IER: u8 = 0b00001111; constant MASK_FCR (line 691) | pub const MASK_FCR: u8 = 0b11001111; constant MASK_ISRC (line 692) | pub const MASK_ISRC: u8 = 0b00001111; function reset_state (line 699) | fn reset_state() { function intr_thre_on_etbei_toggle (line 710) | fn intr_thre_on_etbei_toggle() { function intr_dr_on_incoming (line 729) | fn intr_dr_on_incoming() { function intr_thre_on_outgoing (line 744) | fn intr_thre_on_outgoing() { function safe_read_write_all (line 762) | fn safe_read_write_all() { function interrupt_codes (line 778) | fn interrupt_codes() { FILE: lib/propolis/src/hw/virtio/bits.rs constant VIRTIO_NET_F_CSUM (line 6) | pub const VIRTIO_NET_F_CSUM: u64 = 1 << 0; constant VIRTIO_NET_F_GUEST_CSUM (line 7) | pub const VIRTIO_NET_F_GUEST_CSUM: u64 = 1 << 1; constant VIRTIO_NET_F_CTRL_GUEST_OFFLOADS (line 8) | pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u64 = 1 << 2; constant VIRTIO_NET_F_MTU (line 9) | pub const VIRTIO_NET_F_MTU: u64 = 1 << 3; constant VIRTIO_NET_F_MAC (line 10) | pub const VIRTIO_NET_F_MAC: u64 = 1 << 5; constant VIRTIO_NET_F_GUEST_TSO4 (line 11) | pub const VIRTIO_NET_F_GUEST_TSO4: u64 = 1 << 7; constant VIRTIO_NET_F_GUEST_TSO6 (line 12) | pub const VIRTIO_NET_F_GUEST_TSO6: u64 = 1 << 8; constant VIRTIO_NET_F_GUEST_ECN (line 13) | pub const VIRTIO_NET_F_GUEST_ECN: u64 = 1 << 9; constant VIRTIO_NET_F_GUEST_UFO (line 14) | pub const VIRTIO_NET_F_GUEST_UFO: u64 = 1 << 10; constant VIRTIO_NET_F_HOST_TSO4 (line 15) | pub const VIRTIO_NET_F_HOST_TSO4: u64 = 1 << 11; constant VIRTIO_NET_F_HOST_TSO6 (line 16) | pub const VIRTIO_NET_F_HOST_TSO6: u64 = 1 << 12; constant VIRTIO_NET_F_HOST_ECN (line 17) | pub const VIRTIO_NET_F_HOST_ECN: u64 = 1 << 13; constant VIRTIO_NET_F_HOST_UFO (line 18) | pub const VIRTIO_NET_F_HOST_UFO: u64 = 1 << 14; constant VIRTIO_NET_F_MGR_RXBUF (line 19) | pub const VIRTIO_NET_F_MGR_RXBUF: u64 = 1 << 15; constant VIRTIO_NET_F_STATUS (line 20) | pub const VIRTIO_NET_F_STATUS: u64 = 1 << 16; constant VIRTIO_NET_F_CTRL_VQ (line 21) | pub const VIRTIO_NET_F_CTRL_VQ: u64 = 1 << 17; constant VIRTIO_NET_F_CTRL_RX (line 22) | pub const VIRTIO_NET_F_CTRL_RX: u64 = 1 << 18; constant VIRTIO_NET_F_CTRL_VLAN (line 23) | pub const VIRTIO_NET_F_CTRL_VLAN: u64 = 1 << 19; constant VIRTIO_NET_F_MQ (line 24) | pub const VIRTIO_NET_F_MQ: u64 = 1 << 22; constant VIRTIO_BLK_F_SIZE_MAX (line 27) | pub const VIRTIO_BLK_F_SIZE_MAX: u64 = 1 << 1; constant VIRTIO_BLK_F_SEG_MAX (line 28) | pub const VIRTIO_BLK_F_SEG_MAX: u64 = 1 << 2; constant VIRTIO_BLK_F_GEOMETRY (line 29) | pub const VIRTIO_BLK_F_GEOMETRY: u64 = 1 << 4; constant VIRTIO_BLK_F_RO (line 30) | pub const VIRTIO_BLK_F_RO: u64 = 1 << 5; constant VIRTIO_BLK_F_BLK_SIZE (line 31) | pub const VIRTIO_BLK_F_BLK_SIZE: u64 = 1 << 6; constant VIRTIO_BLK_F_FLUSH (line 32) | pub const VIRTIO_BLK_F_FLUSH: u64 = 1 << 9; constant VIRTIO_BLK_F_TOPOLOGY (line 33) | pub const VIRTIO_BLK_F_TOPOLOGY: u64 = 1 << 10; constant VIRTIO_BLK_F_CONFIG_WCE (line 34) | pub const VIRTIO_BLK_F_CONFIG_WCE: u64 = 1 << 11; constant VIRTIO_BLK_F_DISCARD (line 35) | pub const VIRTIO_BLK_F_DISCARD: u64 = 1 << 13; constant VIRTIO_BLK_F_WRITE_ZEROES (line 36) | pub const VIRTIO_BLK_F_WRITE_ZEROES: u64 = 1 << 14; FILE: lib/propolis/src/hw/virtio/block.rs constant SECTOR_SZ (line 28) | const SECTOR_SZ: usize = 512; constant MAX_DISCARD_SECTORS (line 31) | const MAX_DISCARD_SECTORS: u32 = ((1024 * 1024) / SECTOR_SZ) as u32; type PciVirtioBlock (line 33) | pub struct PciVirtioBlock { method new (line 39) | pub fn new(queue_size: u16) -> Arc { method block_cfg_read (line 66) | fn block_cfg_read(&self, id: &BlockReg, ro: &mut ReadOp) { method attachment (line 313) | fn attachment(&self) -> &block::DeviceAttachment { type CompletionToken (line 111) | struct CompletionToken { type BlockVq (line 118) | struct BlockVq(Arc, MemAccessor); method new (line 120) | fn new(vq: Arc, acc_mem: MemAccessor) -> Arc { type Token (line 125) | type Token = CompletionToken; method next_req (line 127) | fn next_req( method complete (line 225) | fn complete( method abandon (line 258) | fn abandon(&self, _token: Self::Token) { method rw_dev_config (line 264) | fn rw_dev_config(&self, mut rwo: RWOp) { method mode (line 273) | fn mode(&self) -> virtio::Mode { method features (line 277) | fn features(&self) -> u64 { method set_features (line 292) | fn set_features(&self, _feat: u64) -> Result<(), ()> { method queue_notify (line 297) | fn queue_notify(&self, _vq: &VirtQueue) { method virtio_state (line 304) | fn virtio_state(&self) -> &PciVirtioState { method pci_state (line 307) | fn pci_state(&self) -> &pci::DeviceState { method type_name (line 319) | fn type_name(&self) -> &'static str { method reset (line 322) | fn reset(&self) { method pause (line 325) | fn pause(&self) { method resume (line 328) | fn resume(&self) { method paused (line 331) | fn paused(&self) -> BoxFuture<'static, ()> { method migrate (line 334) | fn migrate(&self) -> Migrator<'_> { method export (line 339) | fn export( method import (line 347) | fn import( type VbReq (line 358) | struct VbReq { type DiscardWriteZeroes (line 366) | struct DiscardWriteZeroes { type BlockReg (line 373) | enum BlockReg { constant VIRTIO_BLK_T_IN (line 429) | pub const VIRTIO_BLK_T_IN: u32 = 0; constant VIRTIO_BLK_T_OUT (line 430) | pub const VIRTIO_BLK_T_OUT: u32 = 1; constant VIRTIO_BLK_T_FLUSH (line 431) | pub const VIRTIO_BLK_T_FLUSH: u32 = 4; constant VIRTIO_BLK_T_DISCARD (line 432) | pub const VIRTIO_BLK_T_DISCARD: u32 = 11; constant VIRTIO_BLK_T_WRITE_ZEROES (line 433) | pub const VIRTIO_BLK_T_WRITE_ZEROES: u32 = 13; constant VIRTIO_BLK_S_OK (line 435) | pub const VIRTIO_BLK_S_OK: u8 = 0; constant VIRTIO_BLK_S_IOERR (line 436) | pub const VIRTIO_BLK_S_IOERR: u8 = 1; constant VIRTIO_BLK_S_UNSUPP (line 437) | pub const VIRTIO_BLK_S_UNSUPP: u8 = 2; constant VIRTIO_BLK_CFG_SIZE (line 439) | pub const VIRTIO_BLK_CFG_SIZE: usize = 0x3c; function vioblk_read_enqueue (line 444) | fn vioblk_read_enqueue(id: u16, off: u64, sz: u64) {} function vioblk_read_complete (line 445) | fn vioblk_read_complete(id: u16, res: u8) {} function vioblk_write_enqueue (line 447) | fn vioblk_write_enqueue(id: u16, off: u64, sz: u64) {} function vioblk_write_complete (line 448) | fn vioblk_write_complete(id: u16, res: u8) {} function vioblk_flush_enqueue (line 450) | fn vioblk_flush_enqueue(id: u16) {} function vioblk_flush_complete (line 451) | fn vioblk_flush_complete(id: u16, res: u8) {} function vioblk_discard_enqueue (line 453) | fn vioblk_discard_enqueue(id: u16, off: u64, sz: u64) {} function vioblk_discard_complete (line 454) | fn vioblk_discard_complete(id: u16, res: u8) {} FILE: lib/propolis/src/hw/virtio/mod.rs type Mode (line 48) | pub enum Mode { method pci_revision (line 63) | pub fn pci_revision(self) -> u8 { type DeviceId (line 74) | pub enum DeviceId { method pci_dev_id (line 140) | pub fn pci_dev_id(self, mode: Mode) -> Result { method pci_sub_dev_id (line 159) | pub fn pci_sub_dev_id(self, mode: Mode) -> Result { method pci_class (line 169) | pub fn pci_class(self) -> Result { method pci_ident (line 180) | pub fn pci_ident(self, mode: Mode) -> Result { type VirtioDevice (line 200) | pub trait VirtioDevice: Send + Sync + 'static + Lifecycle { method rw_dev_config (line 202) | fn rw_dev_config(&self, ro: RWOp); method mode (line 205) | fn mode(&self) -> Mode; method features (line 208) | fn features(&self) -> u64; method set_features (line 214) | fn set_features(&self, feat: u64) -> Result<(), ()>; method queue_notify (line 217) | fn queue_notify(&self, vq: &VirtQueue); method queue_change (line 223) | fn queue_change( type VirtioIntr (line 232) | pub trait VirtioIntr: Send + 'static { method notify (line 233) | fn notify(&self); method read (line 234) | fn read(&self) -> VqIntr; type VqChange (line 238) | pub enum VqChange { type VqIntr (line 249) | pub enum VqIntr { function virtio_vq_notify (line 259) | fn virtio_vq_notify(virtio_dev_addr: u64, virtqueue_id: u16) {} function virtio_vq_pop (line 260) | fn virtio_vq_pop(vq_addr: u64, desc_idx: u16, avail_idx: u16) {} function virtio_vq_push (line 261) | fn virtio_vq_push(vq_addr: u64, used_idx: u16, used_len: u32) {} function virtio_viona_mq_set_use_pairs (line 263) | fn virtio_viona_mq_set_use_pairs(cause: u8, npairs: u16) {} function virtio_device_needs_reset (line 265) | fn virtio_device_needs_reset() {} function virtio_set_status (line 266) | fn virtio_set_status(value: u8) {} function virtio_state_reset (line 267) | fn virtio_state_reset() {} FILE: lib/propolis/src/hw/virtio/p9fs.rs constant P9FS_VIRTIO_READ_HEADROOM (line 43) | const P9FS_VIRTIO_READ_HEADROOM: usize = 20; type RreadHeader (line 51) | struct RreadHeader { function p9fs_cfg_read (line 60) | fn p9fs_cfg_read() {} type PciVirtio9pfs (line 74) | pub struct PciVirtio9pfs { method new (line 81) | pub fn new(queue_size: u16, handler: Arc) -> Arc { method rw_dev_config (line 96) | fn rw_dev_config(&self, mut rwo: RWOp) { method mode (line 122) | fn mode(&self) -> virtio::Mode { method features (line 126) | fn features(&self) -> u64 { method set_features (line 130) | fn set_features(&self, _feat: u64) -> Result<(), ()> { method queue_notify (line 134) | fn queue_notify(&self, vq: &VirtQueue) { method type_name (line 140) | fn type_name(&self) -> &'static str { method reset (line 143) | fn reset(&self) { method migrate (line 146) | fn migrate(&'_ self) -> Migrator<'_> { method virtio_state (line 152) | fn virtio_state(&self) -> &PciVirtioState { method pci_state (line 155) | fn pci_state(&self) -> &pci::DeviceState { type P9fsReg (line 161) | enum P9fsReg { type Fid (line 173) | struct Fid { type Fileserver (line 178) | struct Fileserver { constant VIRTIO_9P_F_MOUNT_TAG (line 186) | pub const VIRTIO_9P_F_MOUNT_TAG: u64 = 0x1; constant VIRTIO_9P_MAX_TAG_SIZE (line 188) | pub const VIRTIO_9P_MAX_TAG_SIZE: usize = 256; constant VIRTIO_9P_CFG_SIZE (line 189) | pub const VIRTIO_9P_CFG_SIZE: usize = type P9Handler (line 194) | pub trait P9Handler: Sync + Send + 'static { method source (line 195) | fn source(&self) -> &str; method target (line 196) | fn target(&self) -> &str; method msize (line 197) | fn msize(&self) -> u32; method handle_version (line 198) | fn handle_version(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemC... method handle_attach (line 199) | fn handle_attach(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx); method handle_walk (line 200) | fn handle_walk(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx); method handle_open (line 201) | fn handle_open(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx); method handle_readdir (line 202) | fn handle_readdir( method handle_read (line 209) | fn handle_read( method handle_write (line 216) | fn handle_write( method handle_clunk (line 223) | fn handle_clunk(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx); method handle_getattr (line 224) | fn handle_getattr(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemC... method handle_statfs (line 225) | fn handle_statfs(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx); method handle_req (line 227) | fn handle_req(&self, vq: &VirtQueue) { method source (line 550) | fn source(&self) -> &str { method target (line 554) | fn target(&self) -> &str { method msize (line 558) | fn msize(&self) -> u32 { method handle_version (line 568) | fn handle_version(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemC... method handle_attach (line 597) | fn handle_attach(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCt... method handle_walk (line 652) | fn handle_walk(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx) { method handle_open (line 724) | fn handle_open(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx) { method handle_readdir (line 789) | fn handle_readdir( method handle_read (line 897) | fn handle_read( method handle_write (line 921) | fn handle_write( method handle_clunk (line 931) | fn handle_clunk(&self, _msg_buf: &[u8], chain: &mut Chain, mem: &MemCt... method handle_getattr (line 939) | fn handle_getattr(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemC... method handle_statfs (line 957) | fn handle_statfs(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCt... type HostFSHandler (line 310) | pub struct HostFSHandler { method new (line 320) | pub fn new( method do_read (line 338) | fn do_read( method do_statfs (line 398) | fn do_statfs(&self, fid: &mut Fid, chain: &mut Chain, mem: &MemCtx) { method do_getattr (line 445) | fn do_getattr( function write_error (line 974) | pub(crate) fn write_error(ecode: u32, chain: &mut Chain, mem: &MemCtx) { function p9_read_file (line 981) | fn p9_read_file( FILE: lib/propolis/src/hw/virtio/pci.rs constant VIRTIO_MSI_NO_VECTOR (line 26) | const VIRTIO_MSI_NO_VECTOR: u16 = 0xffff; constant VIRTIO_PCI_ISR_QUEUE (line 28) | const VIRTIO_PCI_ISR_QUEUE: u8 = 1 << 0; constant VIRTIO_PCI_ISR_CFG (line 29) | const VIRTIO_PCI_ISR_CFG: u8 = 1 << 1; type IntrMode (line 45) | enum IntrMode { method from (line 51) | fn from(pci_mode: pci::IntrMode) -> Self { type VirtioState (line 60) | struct VirtioState { method new (line 80) | fn new( method reset (line 103) | fn reset(&mut self) { method witness_config_generation (line 113) | fn witness_config_generation(&mut self) { method _evolve_config_generation (line 117) | fn _evolve_config_generation(&mut self) { type PciVirtio (line 125) | pub trait PciVirtio: VirtioDevice + Send + Sync + 'static { method virtio_state (line 126) | fn virtio_state(&self) -> &PciVirtioState; method pci_state (line 127) | fn pci_state(&self) -> &pci::DeviceState; method notify_port_update (line 131) | fn notify_port_update(&self, state: Option) { method notify_mmio_addr_update (line 137) | fn notify_mmio_addr_update(&self, addr: Option) { method bar_update (line 143) | fn bar_update(&self, bstate: pci::BarState) { method device_state (line 175) | fn device_state(&self) -> &pci::DeviceState { method bar_rw (line 179) | fn bar_rw(&self, bar: pci::BarN, mut rwo: RWOp) { method cap_rw (line 229) | fn cap_rw(&self, id: CapId, mut rwo: RWOp) { method attach (line 297) | fn attach(&self) { method interrupt_mode_change (line 305) | fn interrupt_mode_change(&self, intr_mode: pci::IntrMode) { method msi_update (line 310) | fn msi_update(&self, info: pci::MsiUpdate) { method bar_update (line 349) | fn bar_update(&self, bstate: pci::BarState) { type PciVirtioState (line 354) | pub struct PciVirtioState { method new (line 371) | pub(super) fn new( method mode (line 476) | pub fn mode(&self) -> virtio::Mode { method qaddr (line 480) | fn qaddr(&self, queue_select: u16, thunk: F) -> u64 method common_read (line 493) | fn common_read( method common_write (line 610) | fn common_write( method notify_read (line 774) | fn notify_read(&self, id: &NotifyReg, ro: &mut ReadOp) { method notify_write (line 782) | fn notify_write( method isr_status_read (line 793) | fn isr_status_read(&self, id: &IsrStatusReg, ro: &mut ReadOp) { method common_cfg_cap_read (line 803) | fn common_cfg_cap_read(&self, id: &CommonCfgCapReg, op: &mut ReadOp) { method notify_cfg_cap_read (line 817) | fn notify_cfg_cap_read(&self, id: &NotifyCfgCapReg, op: &mut ReadOp) { method device_cfg_cap_read (line 834) | fn device_cfg_cap_read(&self, id: &CommonCfgCapReg, op: &mut ReadOp) { method isr_cfg_cap_read (line 848) | fn isr_cfg_cap_read(&self, id: &CommonCfgCapReg, op: &mut ReadOp) { method pci_cfg_cap_read (line 859) | fn pci_cfg_cap_read( method pci_cfg_cap_write (line 883) | fn pci_cfg_cap_write( method legacy_read (line 912) | fn legacy_read( method legacy_write (line 976) | fn legacy_write( method features_supported (line 1049) | fn features_supported(&self, dev: &dyn VirtioDevice) -> u64 { method set_status (line 1053) | fn set_status(&self, dev: &dyn VirtioDevice, value: u8) { method apply_status (line 1064) | fn apply_status( method needs_reset_locked (line 1116) | fn needs_reset_locked( method set_needs_reset (line 1134) | pub fn set_needs_reset(&self, dev: &dyn VirtioDevice) { method queue_notify (line 1139) | fn queue_notify(&self, dev: &dyn VirtioDevice, queue: u16) { method reset_queues (line 1153) | pub fn reset_queues(&self, dev: &dyn VirtioDevice) { method reset_queues_locked (line 1158) | fn reset_queues_locked( method virtio_reset (line 1174) | fn virtio_reset( method reset (line 1185) | pub fn reset(&self, dev: &D) method set_intr_mode (line 1197) | fn set_intr_mode( method negotiated_features (line 1261) | pub fn negotiated_features(&self) -> u64 { method export (line 1267) | fn export( method import (line 1297) | fn import( method export (line 1336) | fn export( method import (line 1349) | fn import( type IsrInner (line 1380) | struct IsrInner { method raised (line 1389) | fn raised(&self) -> bool { type IsrState (line 1393) | struct IsrState(Mutex); method new (line 1395) | fn new() -> Arc { method raise_queue (line 1399) | fn raise_queue(&self) { method read_clear (line 1405) | fn read_clear(&self) -> u8 { method read (line 1423) | fn read(&self) -> (bool, bool) { method import (line 1432) | fn import(&self, intr_queue: bool, intr_cfg: bool) { method sync_pin (line 1441) | fn sync_pin(&self, f: impl FnOnce(&mut IsrInner)) { method disable (line 1463) | fn disable(&self) { method enable (line 1473) | fn enable(&self, is_import: bool) { method set_pin (line 1488) | fn set_pin(&self, pin: Arc) { type IsrIntr (line 1497) | struct IsrIntr(Weak); method new (line 1499) | fn new(state: &Arc) -> Box { method notify (line 1504) | fn notify(&self) { method read (line 1509) | fn read(&self) -> VqIntr { type MsiIntr (line 1514) | struct MsiIntr { method new (line 1519) | fn new(hdl: pci::MsixHdl, index: u16) -> Box { method notify (line 1524) | fn notify(&self) { method read (line 1529) | fn read(&self) -> VqIntr { type VirtioConfigRegBlock (line 1540) | enum VirtioConfigRegBlock { constant LEGACY_REG_SIZE (line 1557) | const LEGACY_REG_SIZE: usize = 0x18; constant LEGACY_REG_SIZE_NO_MSIX (line 1558) | const LEGACY_REG_SIZE_NO_MSIX: usize = LEGACY_REG_SIZE - 2 * 2; constant LEGACY_REG_QUEUE_NOTIFY_OFFSET (line 1559) | const LEGACY_REG_QUEUE_NOTIFY_OFFSET: usize = 0x10; constant COMMON_REG_OFFSET (line 1561) | const COMMON_REG_OFFSET: usize = 0; constant COMMON_REG_SIZE (line 1562) | const COMMON_REG_SIZE: usize = constant COMMON_REG_SIZE_TEST (line 1568) | pub const COMMON_REG_SIZE_TEST: usize = COMMON_REG_SIZE; constant DEVICE_REG_OFFSET (line 1569) | const DEVICE_REG_OFFSET: usize = PAGE_SIZE; constant NOTIFY_REG_OFFSET (line 1570) | const NOTIFY_REG_OFFSET: usize = 2 * PAGE_SIZE; constant NOTIFY_REG_SIZE (line 1571) | pub const NOTIFY_REG_SIZE: usize = 4; constant ISR_STATUS_REG_OFFSET (line 1572) | const ISR_STATUS_REG_OFFSET: usize = 3 * PAGE_SIZE; constant ISR_STATUS_REG_SIZE (line 1573) | const ISR_STATUS_REG_SIZE: usize = 1; type CommonConfigReg (line 1576) | enum CommonConfigReg { type NotifyReg (line 1601) | enum NotifyReg { type IsrStatusReg (line 1606) | enum IsrStatusReg { type LegacyConfigReg (line 1611) | enum LegacyConfigReg { type VirtioCfgCapTag (line 1689) | enum VirtioCfgCapTag { type Error (line 1706) | type Error = u32; method try_from (line 1707) | fn try_from(raw: u32) -> Result { function from (line 1700) | fn from(tag: VirtioCfgCapTag) -> u32 { constant COMMON_CFG_CAP_SIZE (line 1721) | const COMMON_CFG_CAP_SIZE: u8 = 1 + 1 + 1 + 1 + 2 + 4 + 4; constant NOTIFY_CFG_CAP_SIZE (line 1722) | const NOTIFY_CFG_CAP_SIZE: u8 = COMMON_CFG_CAP_SIZE + 4; constant PCI_CFG_CAP_SIZE (line 1723) | const PCI_CFG_CAP_SIZE: u8 = COMMON_CFG_CAP_SIZE + 4; type CommonCfgCapReg (line 1726) | enum CommonCfgCapReg { type NotifyCfgCapReg (line 1760) | enum NotifyCfgCapReg { type PciCfgCapReg (line 1787) | enum PciCfgCapReg { type DeviceStateV1 (line 1819) | pub struct DeviceStateV1 { type PciVirtioStateV1 (line 1836) | pub struct PciVirtioStateV1 { method id (line 1841) | fn id() -> SchemaId { FILE: lib/propolis/src/hw/virtio/queue.rs method legacy (line 46) | pub fn legacy() -> Self { method transitional (line 51) | pub fn transitional() -> Self { type VqdDesc (line 58) | struct VqdDesc { type VqdUsed (line 66) | struct VqdUsed { type VqReq (line 72) | pub struct VqReq { type VqAvail (line 77) | pub struct VqAvail { method read_next_avail (line 92) | fn read_next_avail(&mut self, rsize: u16, mem: &MemCtx) -> Option AvailFlags { method _intr_supressed (line 149) | fn _intr_supressed(&self, mem: &MemCtx) -> bool { type VqUsed (line 155) | pub struct VqUsed { method write_used (line 167) | fn write_used(&mut self, id: u16, len: u32, rsize: u16, mem: &MemCtx) { method flags (line 184) | fn flags(&self, mem: &MemCtx) -> UsedFlags { method set_flags (line 190) | fn set_flags(&self, flags: UsedFlags, mem: &MemCtx) { method disable_notify (line 196) | fn disable_notify(&self, mem: &MemCtx) -> bool { method enable_notify (line 203) | fn enable_notify(&self, mem: &MemCtx) { method notify_supressed (line 210) | fn notify_supressed(&self, mem: &MemCtx) -> bool { method reset (line 215) | fn reset(&mut self) { method map_split (line 222) | fn map_split(&mut self, gpa: u64) { type VqSize (line 231) | pub struct VqSize(NonZeroU16); method new (line 233) | pub const fn new(size: u16) -> VqSize { type Error (line 241) | type Error = VqSizeError; method try_from (line 243) | fn try_from(value: NonZeroU16) -> Result { type Error (line 252) | type Error = VqSizeError; method try_from (line 254) | fn try_from(value: u16) -> Result { method into (line 260) | fn into(self) -> u16 { type VqSizeError (line 266) | pub enum VqSizeError { type VirtQueue (line 273) | pub struct VirtQueue { method new (line 292) | fn new(id: u16, size: VqSize) -> Self { method reset (line 320) | pub(super) fn reset(&self) { method enable (line 331) | pub(super) fn enable(&self) { method is_enabled (line 335) | pub(super) fn is_enabled(&self) -> bool { method arise (line 339) | pub(super) fn arise(&self) { method is_alive (line 343) | pub(super) fn is_alive(&self) -> bool { method is_control (line 347) | pub(super) fn is_control(&self) -> bool { method set_control (line 351) | pub(super) fn set_control(&self) { method size (line 356) | pub fn size(&self) -> u16 { method map_virtqueue (line 368) | pub fn map_virtqueue( method map_legacy (line 386) | pub fn map_legacy(&self, addr: u64) { method is_mapped (line 407) | pub fn is_mapped(&self) -> bool { method avail_is_empty (line 412) | pub fn avail_is_empty(&self, mem: &MemCtx) -> bool { method get_state (line 420) | pub fn get_state(&self) -> Info { method set_state (line 436) | pub fn set_state(&self, info: &Info) { method pop_avail (line 451) | pub fn pop_avail( method push_used (line 536) | pub fn push_used(&self, chain: &mut Chain, mem: &MemCtx) { method set_intr (line 556) | pub(super) fn set_intr(&self, intr: Box) { method read_intr (line 562) | pub(super) fn read_intr(&self) -> Option { method disable_intr (line 568) | pub(super) fn disable_intr(&self, mem: &MemCtx) -> bool { method enable_intr (line 574) | pub(super) fn enable_intr(&self, mem: &MemCtx) { method send_intr (line 580) | pub(super) fn send_intr(&self, mem: &MemCtx) { method export (line 592) | pub fn export(&self) -> migrate::VirtQueueV1 { method import (line 615) | pub fn import( function qalign (line 285) | const fn qalign(addr: u64, align: u64) -> u64 { type ChainBuf (line 700) | pub enum ChainBuf { method is_readable (line 705) | pub fn is_readable(&self) -> bool { method is_writable (line 711) | pub fn is_writable(&self) -> bool { type ChainStat (line 717) | struct ChainStat { type Chain (line 726) | pub struct Chain { method with_capacity (line 733) | pub fn with_capacity(size: usize) -> Self { method push_buf (line 742) | fn push_buf(&mut self, buf: ChainBuf) { method reset (line 752) | fn reset(&mut self) { method read (line 759) | pub fn read( method readable_bufs (line 791) | pub fn readable_bufs(&mut self, len: usize) -> Option> { method write (line 811) | pub fn write( method write_skip (line 842) | pub fn write_skip(&mut self, len: usize) -> bool { method writable_bufs (line 863) | pub fn writable_bufs(&mut self, len: usize) -> Option> { method remain_write_bytes (line 884) | pub fn remain_write_bytes(&self) -> usize { method remain_read_bytes (line 887) | pub fn remain_read_bytes(&self) -> usize { method for_remaining_type (line 891) | pub(crate) fn for_remaining_type( type MapInfo (line 960) | pub struct MapInfo { type Info (line 968) | pub struct Info { type VirtQueues (line 974) | pub struct VirtQueues { method new (line 983) | pub fn new(sizes: &[VqSize]) -> Self { method new_with_len (line 991) | pub fn new_with_len(initial_len: usize, sizes: &[VqSize]) -> Self { method set_len (line 1008) | pub fn set_len(&self, len: usize) -> Result<(), usize> { method count (line 1033) | pub fn count(&self) -> NonZeroU16 { method len (line 1038) | pub fn len(&self) -> usize { method peak (line 1042) | pub fn peak(&self) -> usize { method reset_peak (line 1046) | pub fn reset_peak(&self) { method max_capacity (line 1051) | pub const fn max_capacity(&self) -> usize { method get (line 1055) | pub fn get(&self, qid: u16) -> Option<&Arc> { method get_control (line 1070) | fn get_control(&self) -> &Arc { method iter (line 1074) | pub fn iter(&self) -> impl std::iter::Iterator> { method iter_all (line 1083) | pub fn iter_all(&self) -> impl std::iter::Iterator migrate::VirtQueuesV1 { method import (line 1095) | pub fn import( constant MAX_QUEUES (line 980) | const MAX_QUEUES: usize = 65535; type VirtQueuesV1 (line 1124) | pub struct VirtQueuesV1 { type VirtQueueV1 (line 1131) | pub struct VirtQueueV1 { function write_buf (line 1150) | pub(crate) fn write_buf(buf: &[u8], chain: &mut Chain, mem: &MemCtx) { FILE: lib/propolis/src/hw/virtio/softnpu.rs constant MTU (line 45) | const MTU: usize = 9216; constant SOFTNPU_CPU_AUX_PORT (line 46) | const SOFTNPU_CPU_AUX_PORT: u16 = 1000; constant MANAGEMENT_MESSAGE_PREAMBLE (line 48) | pub const MANAGEMENT_MESSAGE_PREAMBLE: u8 = 0b11100101; constant SOFTNPU_TTY (line 49) | pub const SOFTNPU_TTY: &str = "/dev/tty03"; type SoftNpu (line 95) | pub struct SoftNpu { method new (line 169) | pub fn new( method generate_mac (line 201) | fn generate_mac() -> [u8; 6] { method data_handles (line 208) | fn data_handles(data_links: &Vec) -> Result); type PciVirtioSoftNpuPort (line 121) | pub struct PciVirtioSoftNpuPort { method new (line 293) | pub fn new( method handle_guest_virtio_request (line 309) | fn handle_guest_virtio_request(&self, vq: &VirtQueue) { method handle_q0_req (line 379) | fn handle_q0_req(&self, _vq: &VirtQueue) { method net_cfg_read (line 385) | fn net_cfg_read(&self, id: &NetReg, ro: &mut ReadOp) { type PortVirtioState (line 137) | pub struct PortVirtioState { method new (line 146) | fn new(queue_size: u16) -> Self { method type_name (line 262) | fn type_name(&self) -> &'static str { method start (line 266) | fn start(&self) -> anyhow::Result<()> { method migrate (line 287) | fn migrate(&'_ self) -> Migrator<'_> { method type_name (line 403) | fn type_name(&self) -> &'static str { method reset (line 407) | fn reset(&self) { method virtio_state (line 413) | fn virtio_state(&self) -> &PciVirtioState { method pci_state (line 417) | fn pci_state(&self) -> &pci::DeviceState { method rw_dev_config (line 423) | fn rw_dev_config(&self, mut rwo: RWOp) { method mode (line 432) | fn mode(&self) -> virtio::Mode { method features (line 436) | fn features(&self) -> u64 { method set_features (line 440) | fn set_features(&self, _feat: u64) -> std::result::Result<(), ()> { method queue_notify (line 444) | fn queue_notify(&self, vq: &VirtQueue) { type PacketHandler (line 449) | struct PacketHandler {} method run_ingress_packet_handler_thread (line 454) | fn run_ingress_packet_handler_thread( method run_ingress_packet_handler (line 475) | fn run_ingress_packet_handler( method process_external_packet (line 529) | fn process_external_packet( method process_guest_packet (line 558) | fn process_guest_packet( method send_packet_to_ext_port (line 583) | fn send_packet_to_ext_port( method send_packet_to_cpu_port (line 606) | fn send_packet_to_cpu_port( type NetReg (line 634) | enum NetReg { constant VIRTIO_NET_CFG_SIZE (line 648) | pub const VIRTIO_NET_CFG_SIZE: usize = 0xa; function read_buf (line 653) | fn read_buf(mem: &MemCtx, chain: &mut Chain, buf: &mut [u8]) -> usize { function handle_management_message (line 668) | fn handle_management_message( type TableDump (line 762) | pub struct TableDump { type ManagementMessageReader (line 766) | struct ManagementMessageReader { method new (line 772) | fn new(uart: Arc, log: Logger) -> Self { method read (line 776) | fn read(&self) -> ManagementRequest { type SoftNpuP9Handler (line 833) | pub struct SoftNpuP9Handler { method new (line 852) | pub fn new( method write_program (line 867) | fn write_program(buf: &[u8], offset: u64, log: &Logger) { method load_program (line 904) | fn load_program( function p4_temp_file (line 842) | fn p4_temp_file() -> String { function p4_active_file (line 847) | fn p4_active_file() -> String { method source (line 955) | fn source(&self) -> &str { method target (line 959) | fn target(&self) -> &str { method msize (line 963) | fn msize(&self) -> u32 { method handle_version (line 967) | fn handle_version(&self, msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx) { method handle_attach (line 989) | fn handle_attach(&self, _msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx) { method handle_walk (line 993) | fn handle_walk(&self, _msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx) { method handle_open (line 997) | fn handle_open(&self, _msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx) { method handle_readdir (line 1001) | fn handle_readdir( method handle_read (line 1011) | fn handle_read( method handle_write (line 1021) | fn handle_write( method handle_clunk (line 1039) | fn handle_clunk(&self, _msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx) { method handle_getattr (line 1052) | fn handle_getattr(&self, _msg_buf: &[u8], chain: &mut Chain, mem: &MemCt... method handle_statfs (line 1056) | fn handle_statfs(&self, _msg_buf: &[u8], chain: &mut Chain, mem: &MemCtx) { FILE: lib/propolis/src/hw/virtio/testutil.rs constant PAGE_SIZE (line 27) | const PAGE_SIZE: u64 = 0x1000; constant DESC_SIZE (line 30) | const DESC_SIZE: u64 = 16; constant USED_ELEM_SIZE (line 33) | const USED_ELEM_SIZE: u64 = 8; constant AVAIL_ELEM_SIZE (line 36) | const AVAIL_ELEM_SIZE: u64 = 2; constant RING_HEADER_SIZE (line 39) | const RING_HEADER_SIZE: u64 = 4; constant DATA_AREA_PAGES (line 42) | const DATA_AREA_PAGES: u64 = 64; function align_up (line 45) | pub const fn align_up(val: u64, align: u64) -> u64 { type RawDesc (line 52) | pub struct RawDesc { type RawUsedElem (line 62) | pub struct RawUsedElem { type QueueLayout (line 69) | pub struct QueueLayout { method new (line 85) | pub fn new(base: u64, size: u16) -> Self { type QueueWriter (line 102) | pub struct QueueWriter { method new (line 117) | pub fn new(layout: QueueLayout, size: u16, data_start: u64) -> Self { method reset_cursors (line 129) | pub fn reset_cursors(&mut self) { method write_desc (line 135) | pub fn write_desc( method write_data (line 155) | pub fn write_data(&mut self, mem_acc: &MemAccessor, data: &[u8]) -> u64 { method alloc_data (line 164) | pub fn alloc_data(&mut self, len: u32) -> u64 { method add_readable (line 171) | pub fn add_readable(&mut self, mem_acc: &MemAccessor, data: &[u8]) -> ... method add_writable (line 177) | pub fn add_writable(&mut self, mem_acc: &MemAccessor, len: u32) -> u16 { method chain (line 183) | pub fn chain(&self, mem_acc: &MemAccessor, from: u16, to: u16) { method publish_avail (line 193) | pub fn publish_avail(&mut self, mem_acc: &MemAccessor, head: u16) { method used_idx (line 208) | pub fn used_idx(&self, mem_acc: &MemAccessor) -> u16 { method read_used_elem (line 215) | pub fn read_used_elem( method read_desc_data (line 230) | pub fn read_desc_data( type TestVirtQueues (line 251) | pub struct TestVirtQueues { method new (line 266) | pub fn new(sizes: &[VqSize]) -> Self { method mem_acc (line 324) | pub fn mem_acc(&self) -> &MemAccessor { method queues (line 329) | pub fn queues(&self) -> &VirtQueues { method vq (line 334) | pub fn vq(&self, idx: u16) -> &Arc { method writer (line 342) | pub fn writer(&self, queue_idx: usize, data_offset: u64) -> QueueWriter { method layout (line 349) | pub fn layout(&self, queue_idx: usize) -> QueueLayout { type TestVirtQueue (line 357) | pub struct TestVirtQueue { method new (line 366) | pub fn new(queue_size: u16) -> Self { method vq (line 373) | pub fn vq(&self) -> &Arc { method mem (line 378) | pub fn mem(&self) -> impl std::ops::Deref + '_ { method add_readable (line 385) | pub fn add_readable(&mut self, data: &[u8]) -> u16 { method add_writable (line 392) | pub fn add_writable(&mut self, len: u32) -> u16 { method chain_descriptors (line 399) | pub fn chain_descriptors(&mut self, descs: &[u16]) { method publish_avail (line 406) | pub fn publish_avail(&mut self, head: u16) { method read_used (line 413) | pub fn read_used(&self) -> Vec<(u32, u32)> { method pop_chain (line 424) | pub fn pop_chain(&self) -> Option<(Chain, u16, u32)> { method push_used (line 432) | pub fn push_used(&self, chain: &mut Chain) { method desc_addr (line 438) | pub fn desc_addr(&self, idx: u16) -> u64 { method read_guest_mem (line 447) | pub fn read_guest_mem(&self, addr: u64, len: usize) -> Vec { function smoke_pop_avail_readable (line 461) | fn smoke_pop_avail_readable() { function smoke_pop_avail_writable (line 478) | fn smoke_pop_avail_writable() { function smoke_chained_descriptors (line 505) | fn smoke_chained_descriptors() { function smoke_mixed_chain (line 529) | fn smoke_mixed_chain() { function empty_avail_ring_returns_none (line 559) | fn empty_avail_ring_returns_none() { function multiple_chains (line 565) | fn multiple_chains() { function multi_queue_smoke (line 582) | fn multi_queue_smoke() { function queue_writer_reset_cursors (line 611) | fn queue_writer_reset_cursors() { FILE: lib/propolis/src/hw/virtio/viona.rs constant RX_QUEUE_SIZE (line 39) | pub const RX_QUEUE_SIZE: VqSize = VqSize::new(0x800); constant TX_QUEUE_SIZE (line 40) | pub const TX_QUEUE_SIZE: VqSize = VqSize::new(0x100); constant CTL_QUEUE_SIZE (line 41) | pub const CTL_QUEUE_SIZE: VqSize = VqSize::new(32); constant VIRTIO_MQ_MIN_QPAIRS (line 43) | pub const VIRTIO_MQ_MIN_QPAIRS: u16 = 1; constant VIRTIO_MQ_MAX_QPAIRS (line 44) | pub const VIRTIO_MQ_MAX_QPAIRS: u16 = 0x8000; constant PROPOLIS_MAX_MQ_PAIRS (line 46) | pub const PROPOLIS_MAX_MQ_PAIRS: u16 = 11; function max_num_queues (line 48) | pub const fn max_num_queues() -> usize { constant ETHERADDRL (line 52) | const ETHERADDRL: usize = 6; type MqSetPairsCause (line 58) | enum MqSetPairsCause { function virtio_viona_mq_set_use_pairs (line 67) | fn virtio_viona_mq_set_use_pairs(cause: u8, npairs: u16) {} type Header (line 85) | pub struct Header { type Command (line 91) | pub enum Command { type Error (line 100) | type Error = Header; method try_from (line 101) | fn try_from(header: Header) -> Result { type Ack (line 116) | pub enum Ack { type RxCmd (line 123) | pub enum RxCmd { type MacCmd (line 134) | pub enum MacCmd { type Mac (line 141) | pub struct Mac { type Mq (line 148) | pub struct Mq { type MqCmd (line 154) | pub enum MqCmd { type Error (line 161) | type Error = u8; method try_from (line 162) | fn try_from(value: u8) -> Result { type VlanCmd (line 172) | pub enum VlanCmd { type AnnounceCmd (line 178) | pub enum AnnounceCmd { type VRingState (line 188) | enum VRingState { type Inner (line 222) | struct Inner { method new (line 229) | fn new(max_queues: usize) -> Self { method for_vq (line 238) | fn for_vq(&mut self, vq: &VirtQueue) -> &mut VRingState { type DeviceParams (line 247) | pub struct DeviceParams { method set (line 271) | fn set(&self, hdl: &VionaHdl) -> io::Result<()> { method set (line 290) | fn set(&self, _hdl: &VionaHdl) -> io::Result<()> { method default (line 295) | fn default() -> Self { type PciVirtioViona (line 304) | pub struct PciVirtioViona { method new (line 317) | pub fn new( method new_with_queue_sizes (line 332) | pub fn new_with_queue_sizes( method instance_id (line 417) | pub fn instance_id(&self) -> io::Result { method process_interrupts (line 421) | fn process_interrupts(&self) { method is_ctl_queue (line 433) | fn is_ctl_queue(&self, vq: &VirtQueue) -> bool { method ctl_queue_notify (line 437) | fn ctl_queue_notify(&self, vq: &VirtQueue) { method ctl_msg (line 457) | fn ctl_msg( method ctl_rx (line 477) | fn ctl_rx( method ctl_mac (line 488) | fn ctl_mac( method set_use_pairs (line 499) | fn set_use_pairs(&self, requested: u16) -> Result<(), ()> { method ctl_mq (line 515) | fn ctl_mq( method net_cfg_read (line 542) | fn net_cfg_read(&self, id: &NetReg, ro: &mut ReadOp) { method queues_sync (line 568) | fn queues_sync(&self) { method queues_restart (line 619) | fn queues_restart(&self) -> Result<(), ()> { method queues_kill (line 666) | fn queues_kill(&self) { method poller_start (line 670) | fn poller_start(&self) { method poller_stop (line 683) | fn poller_stop(&self, should_exit: bool) { method run (line 702) | fn run(&self) { method rw_dev_config (line 718) | fn rw_dev_config(&self, mut rwo: RWOp) { method mode (line 726) | fn mode(&self) -> virtio::Mode { method features (line 730) | fn features(&self) -> u64 { method set_features (line 747) | fn set_features(&self, feat: u64) -> Result<(), ()> { method queue_notify (line 760) | fn queue_notify(&self, vq: &VirtQueue) { method queue_change (line 778) | fn queue_change(&self, vq: &VirtQueue, change: VqChange) -> Result<(), (... method type_name (line 841) | fn type_name(&self) -> &'static str { method reset (line 844) | fn reset(&self) { method start (line 854) | fn start(&self) -> anyhow::Result<()> { method pause (line 859) | fn pause(&self) { method resume (line 872) | fn resume(&self) { method halt (line 876) | fn halt(&self) { method migrate (line 884) | fn migrate(&self) -> Migrator<'_> { method virtio_state (line 890) | fn virtio_state(&self) -> &PciVirtioState { method pci_state (line 893) | fn pci_state(&self) -> &pci::DeviceState { method notify_port_update (line 898) | fn notify_port_update(&self, port: Option) { method notify_mmio_addr_update (line 908) | fn notify_mmio_addr_update(&self, addr: Option) { method export (line 920) | fn export( method import (line 928) | fn import( type NetReg (line 968) | enum NetReg { function from (line 999) | fn from(vq: &VirtQueue) -> viona_api::vioc_ring_init_modern { function from (line 1018) | fn from(vq: &VirtQueue) -> viona_api::vioc_ring_state { type VionaHdl (line 1039) | struct VionaHdl(VionaFd); method new (line 1041) | fn new(link_id: u32, vm_fd: RawFd) -> io::Result { method delete (line 1046) | fn delete(&self) -> io::Result<()> { method get_avail_features (line 1050) | fn get_avail_features(&self) -> io::Result { method set_features (line 1057) | fn set_features(&self, mut features: u64) -> io::Result<()> { method set_pairs (line 1063) | fn set_pairs(&self, npairs: u16) -> io::Result<()> { method set_usepairs (line 1067) | fn set_usepairs(&self, npairs: u16) -> io::Result<()> { method ring_init (line 1071) | fn ring_init(&self, vq: &VirtQueue) -> io::Result<()> { method ring_reset (line 1083) | fn ring_reset(&self, vq: &VirtQueue) -> io::Result<()> { method ring_kick (line 1090) | fn ring_kick(&self, vq: &VirtQueue) -> io::Result<()> { method ring_pause (line 1097) | fn ring_pause(&self, vq: &VirtQueue) -> io::Result<()> { method ring_set_state (line 1104) | fn ring_set_state(&self, vq: &VirtQueue) -> io::Result<()> { method ring_get_state (line 1113) | fn ring_get_state(&self, vq: &VirtQueue) -> io::Result { method ring_cfg_msi (line 1134) | fn ring_cfg_msi( method intr_poll (line 1163) | fn intr_poll( method ring_intr_clear (line 1187) | fn ring_intr_clear(&self, idx: u16) -> io::Result<()> { method instance_id (line 1194) | fn instance_id(&self) -> io::Result { method set_mtu (line 1199) | fn set_mtu(&self, mtu: u16) -> io::Result<()> { method api_version (line 1204) | fn api_version(&self) -> io::Result { method set_notify_io_port (line 1217) | fn set_notify_io_port(&self, port: Option) -> io::Result<(... method set_notify_mmio_addr (line 1224) | fn set_notify_mmio_addr(&self, addr: Option) -> io::Result<()> { method set_promisc (line 1242) | fn set_promisc(&self, p: i32) -> io::Result<()> { method as_raw_fd (line 1249) | fn as_raw_fd(&self) -> RawFd { type Poller (line 1264) | struct Poller { method spawn (line 1313) | fn spawn( method event_present (line 1344) | fn event_present(&self) -> io::Result { method poll_interrupts (line 1365) | async fn poll_interrupts(&mut self) { method spawn (line 1422) | fn spawn( type TargetState (line 1271) | enum TargetState { type PollerState (line 1276) | struct PollerState { method wait_stopped (line 1281) | fn wait_stopped(&self) { method wait_running (line 1285) | fn wait_running(&self) { method set_stopped (line 1289) | fn set_stopped(&self) { method set_running (line 1296) | fn set_running(&self) { type PollerHdl (line 1305) | struct PollerHdl { method drop (line 1434) | fn drop(&mut self) { constant VIRTIO_NET_S_LINK_UP (line 1444) | pub const VIRTIO_NET_S_LINK_UP: u16 = 1 << 0; constant VIRTIO_NET_S_ANNOUNCE (line 1445) | pub const VIRTIO_NET_S_ANNOUNCE: u16 = 1 << 1; constant VIRTIO_NET_CFG_SIZE (line 1447) | pub const VIRTIO_NET_CFG_SIZE: usize = 6 + 2 + 2 + 2 + 4 + 1 + 1 + 2 + 4; function check_api_version (line 1452) | pub(crate) fn check_api_version() -> Result<(), crate::api_version::Erro... type TestCtx (line 1498) | struct TestCtx { method create_driver (line 1514) | fn create_driver(&self) -> VirtioNetDriver<'_, '_> { method migrate (line 1518) | fn migrate(self) -> TestCtx { method drop (line 1507) | fn drop(&mut self) { function create_test_ctx (line 1580) | fn create_test_ctx( type BarAccessor (line 1641) | struct BarAccessor<'dev> { function at (line 1648) | fn at( function read (line 1656) | fn read(&self, addr: usize, buf: &mut [u8]) { function write (line 1661) | fn write(&self, addr: usize, buf: &[u8]) { function read_u8 (line 1666) | fn read_u8(&self, addr: usize) -> u8 { function read_le16 (line 1672) | fn read_le16(&self, addr: usize) -> u16 { function read_le32 (line 1678) | fn read_le32(&self, addr: usize) -> u32 { function write_u8 (line 1684) | fn write_u8(&self, addr: usize, v: u8) { function write_le16 (line 1688) | fn write_le16(&self, addr: usize, v: u16) { function write_le32 (line 1692) | fn write_le32(&self, addr: usize, v: u32) { function write_le64 (line 1696) | fn write_le64(&self, addr: usize, v: u64) { constant device_feature_select (line 1713) | pub const device_feature_select: usize = 0; constant device_feature (line 1714) | pub const device_feature: usize = 4; constant driver_feature_select (line 1715) | pub const driver_feature_select: usize = 8; constant driver_feature (line 1716) | pub const driver_feature: usize = 12; constant config_msix_vector (line 1717) | pub const config_msix_vector: usize = 16; constant num_queues (line 1718) | pub const num_queues: usize = 18; constant device_status (line 1719) | pub const device_status: usize = 20; constant config_generation (line 1720) | pub const config_generation: usize = 21; constant queue_select (line 1723) | pub const queue_select: usize = 22; constant queue_size (line 1724) | pub const queue_size: usize = 24; constant queue_msix_vector (line 1725) | pub const queue_msix_vector: usize = 26; constant queue_enable (line 1726) | pub const queue_enable: usize = 28; constant queue_notify_off (line 1727) | pub const queue_notify_off: usize = 30; constant queue_desc (line 1728) | pub const queue_desc: usize = 32; constant queue_driver (line 1729) | pub const queue_driver: usize = 40; constant queue_device (line 1730) | pub const queue_device: usize = 48; constant queue_notify_data (line 1731) | pub const queue_notify_data: usize = 56; constant queue_reset (line 1732) | pub const queue_reset: usize = 58; constant mac (line 1737) | pub const mac: usize = 0; constant status (line 1738) | pub const status: usize = 6; constant max_virtqueue_pairs (line 1740) | pub const max_virtqueue_pairs: usize = 8; constant mtu (line 1742) | pub const mtu: usize = 10; constant speed (line 1745) | pub const speed: usize = 12; constant duplex (line 1746) | pub const duplex: usize = 16; constant rss_max_key_size (line 1749) | pub const rss_max_key_size: usize = 17; constant rss_max_indirection_table_length (line 1750) | pub const rss_max_indirection_table_length: usize = 18; constant supported_hash_types (line 1751) | pub const supported_hash_types: usize = 20; function test_common_cfg_size_is_right (line 1755) | fn test_common_cfg_size_is_right() { type VirtioNetDriver (line 1771) | struct VirtioNetDriver<'mach, 'nic> { type DriverState (line 1787) | struct DriverState { method new (line 1793) | fn new() -> Self { function for_hardware (line 1803) | fn for_hardware( function set_max_pairs (line 1810) | fn set_max_pairs(&mut self, pairs: Option) { function import (line 1814) | fn import( function export (line 1836) | fn export(self) -> DriverState { function read_status (line 1840) | fn read_status(&self) -> Status { function write_status (line 1847) | fn write_status(&self, bits: Status) { function set_status_bits (line 1851) | fn set_status_bits(&self, bits: Status) { function status_ok (line 1855) | fn status_ok(&self) -> bool { function init_queue (line 1864) | fn init_queue(&mut self, queue: u16) { function modern_device_init (line 1943) | fn modern_device_init(&mut self, features: u64) { function test_device_status_writes (line 2088) | fn test_device_status_writes(test_ctx: TestCtx) -> TestCtx { function basic_operation_modern (line 2157) | fn basic_operation_modern(test_ctx: TestCtx) -> TestCtx { function basic_operation_multiqueue (line 2193) | fn basic_operation_multiqueue(test_ctx: TestCtx) -> TestCtx { function multiqueue_to_singlequeue_to_multiqueue (line 2225) | fn multiqueue_to_singlequeue_to_multiqueue(test_ctx: TestCtx) -> TestCtx { function multiqueue_migration (line 2244) | fn multiqueue_migration(test_ctx: TestCtx) -> TestCtx { function multiqueue_migration_after_boot (line 2311) | fn multiqueue_migration_after_boot(test_ctx: TestCtx) -> TestCtx { type TestCase (line 2345) | struct TestCase { function create_vnic (line 2350) | fn create_vnic(phys_nic: &str, vnic_name: &str) { function delete_vnic (line 2365) | fn delete_vnic(vnic_name: &str) { function run_viona_tests (line 2380) | fn run_viona_tests() { FILE: lib/propolis/src/hw/virtio/vsock.rs constant VSOCK_RX_QUEUE (line 34) | pub const VSOCK_RX_QUEUE: u16 = 0x0; constant VSOCK_TX_QUEUE (line 35) | pub const VSOCK_TX_QUEUE: u16 = 0x1; constant VSOCK_EVENT_QUEUE (line 36) | pub const VSOCK_EVENT_QUEUE: u16 = 0x2; type RxPermit (line 46) | pub struct RxPermit<'a> { function available_data_space (line 52) | pub fn available_data_space(&self) -> usize { function write (line 62) | pub fn write(self, header: &VsockPacketHeader, data: &[u8]) { type VsockVq (line 93) | pub struct VsockVq { method new (line 101) | pub(crate) fn new( method try_rx_permit (line 112) | pub fn try_rx_permit(&mut self) -> Option> { method recv_packet (line 146) | pub fn recv_packet(&self) -> Option u64 { method set_features (line 240) | fn set_features(&self, feat: u64) -> Result<(), ()> { method mode (line 253) | fn mode(&self) -> virtio::Mode { method queue_notify (line 257) | fn queue_notify(&self, vq: &VirtQueue) { method virtio_state (line 263) | fn virtio_state(&self) -> &PciVirtioState { method pci_state (line 266) | fn pci_state(&self) -> &pci::DeviceState { method type_name (line 272) | fn type_name(&self) -> &'static str { method start (line 275) | fn start(&self) -> Result<(), anyhow::Error> { method pause (line 279) | fn pause(&self) { method reset (line 283) | fn reset(&self) { method resume (line 287) | fn resume(&self) { method halt (line 290) | fn halt(&self) { method migrate (line 293) | fn migrate(&'_ self) -> Migrator<'_> { type VsockReg (line 301) | enum VsockReg { constant VIRTIO_VSOCK_CFG_SIZE (line 313) | pub const VIRTIO_VSOCK_CFG_SIZE: usize = 0x8; constant VIRTIO_VSOCK_EVENT_TRANSPORT_RESET (line 325) | pub const VIRTIO_VSOCK_EVENT_TRANSPORT_RESET: u32 = 0; method parse (line 333) | fn parse( FILE: lib/propolis/src/intr_pins.rs constant PIN_COUNT (line 11) | const PIN_COUNT: u8 = 16; type IntrPin (line 13) | pub trait IntrPin: Send + Sync + 'static { method assert (line 14) | fn assert(&self); method deassert (line 15) | fn deassert(&self); method is_asserted (line 16) | fn is_asserted(&self) -> bool; method pulse (line 17) | fn pulse(&self) { method set_state (line 23) | fn set_state(&self, is_asserted: bool) { method import_state (line 47) | fn import_state(&self, is_asserted: bool); method assert (line 155) | fn assert(&self) { method deassert (line 164) | fn deassert(&self) { method pulse (line 173) | fn pulse(&self) { method is_asserted (line 181) | fn is_asserted(&self) -> bool { method import_state (line 185) | fn import_state(&self, is_asserted: bool) { method assert (line 213) | fn assert(&self) { method deassert (line 220) | fn deassert(&self) { method is_asserted (line 227) | fn is_asserted(&self) -> bool { method import_state (line 231) | fn import_state(&self, is_asserted: bool) { method assert (line 247) | fn assert(&self) {} method deassert (line 248) | fn deassert(&self) {} method pulse (line 249) | fn pulse(&self) {} method is_asserted (line 250) | fn is_asserted(&self) -> bool { method import_state (line 253) | fn import_state(&self, _: bool) {} type PinOp (line 51) | pub enum PinOp { type LegacyPIC (line 60) | pub struct LegacyPIC { method new (line 97) | pub fn new(hdl: Arc) -> Arc { method pin_handle (line 106) | pub fn pin_handle(self: &Arc, irq: u8) -> Option { method import_irq (line 113) | fn import_irq(&self, op: PinOp, irq: u8) { method do_irq (line 124) | fn do_irq(&self, op: PinOp, irq: u8) { type Inner (line 65) | struct Inner { type Entry (line 70) | struct Entry { method process_op (line 74) | fn process_op(&mut self, op: &PinOp) -> bool { type LegacyPin (line 144) | pub struct LegacyPin { method new (line 150) | fn new(irq: u8, pic: Weak) -> Self { type FuncPin (line 206) | pub struct FuncPin(Mutex); method new (line 208) | pub fn new(func: Box) -> Self { type FPInner (line 239) | struct FPInner { type NoOpPin (line 244) | pub struct NoOpPin {} FILE: lib/propolis/src/lifecycle.rs type Lifecycle (line 27) | pub trait Lifecycle: Send + Sync + 'static { method type_name (line 31) | fn type_name(&self) -> &'static str; method paused (line 34) | fn paused(&self) -> BoxFuture<'static, ()> { method start (line 45) | fn start(&self) -> anyhow::Result<()> { method pause (line 60) | fn pause(&self) {} method resume (line 71) | fn resume(&self) {} method reset (line 79) | fn reset(&self) {} method halt (line 85) | fn halt(&self) {} method migrate (line 96) | fn migrate(&'_ self) -> Migrator<'_> { type Indicator (line 113) | pub struct Indicator(AtomicUsize); method new (line 115) | pub const fn new() -> Self { method start (line 121) | pub fn start(&self) { method pause (line 129) | pub fn pause(&self) { method resume (line 135) | pub fn resume(&self) { method halt (line 141) | pub fn halt(&self) { method state (line 145) | pub fn state(&self) -> IndicatedState { method state_change (line 149) | fn state_change(&self, new: IndicatedState) { type IndicatedState (line 161) | pub enum IndicatedState { method valid_transition (line 173) | const fn valid_transition(old: Self, new: Self) -> bool { method from_usize (line 182) | fn from_usize(raw: usize) -> Self { method assert_valid_transition (line 186) | fn assert_valid_transition(old: Self, new: Self) { FILE: lib/propolis/src/migrate.rs type MigrateStateError (line 12) | pub enum MigrateStateError { method from (line 46) | fn from(err: erased_serde::Error) -> Self { type Migrator (line 52) | pub enum Migrator<'a> { type MigrateSingle (line 78) | pub trait MigrateSingle: Send + Sync + 'static { method export (line 79) | fn export( method import (line 83) | fn import( type MigrateMulti (line 92) | pub trait MigrateMulti: Send + Sync { method export (line 93) | fn export( method import (line 98) | fn import( type MigrateCtx (line 106) | pub struct MigrateCtx<'a> { type PayloadOffer (line 112) | pub struct PayloadOffer<'a> { function parse (line 120) | pub fn parse>(&mut self) -> Result { function matches (line 133) | fn matches<'x, T: Schema<'x>>(&self) -> bool { type PayloadOffers (line 141) | pub struct PayloadOffers<'a>(Vec>); function new (line 145) | pub fn new(items: impl IntoIterator>) -> Self { function take (line 151) | pub fn take>(&mut self) -> Result { function is_consumed (line 159) | pub fn is_consumed(&self) -> bool { function remaining (line 168) | pub fn remaining(self) -> Remaining<'a> { function take_schema (line 172) | fn take_schema(&mut self, id: SchemaId) -> Option> { type Remaining (line 186) | pub struct Remaining<'a>(std::vec::IntoIter>); type Item (line 188) | type Item = PayloadOffer<'a>; method next (line 190) | fn next(&mut self) -> Option { type PayloadOutput (line 200) | pub struct PayloadOutput { method from (line 256) | fn from(value: T) -> Self { type PayloadOutputs (line 206) | pub struct PayloadOutputs(Vec); method new (line 208) | pub fn new() -> Self { method push (line 214) | pub fn push( type Item (line 223) | type Item = PayloadOutput; type IntoIter (line 225) | type IntoIter = OutputIter; method into_iter (line 227) | fn into_iter(self) -> Self::IntoIter { type OutputIter (line 233) | pub struct OutputIter(std::vec::IntoIter); type Item (line 235) | type Item = PayloadOutput; method next (line 237) | fn next(&mut self) -> Option { type SchemaId (line 244) | pub type SchemaId = (&'static str, u32); type Schema (line 247) | pub trait Schema<'de>: Serialize + Deserialize<'de> + Sized + 'static { method id (line 252) | fn id() -> SchemaId; FILE: lib/propolis/src/mmio.rs function mmio_read (line 15) | fn mmio_read(addr: u64, bytes: u8, value: u64, was_handled: u8) {} function mmio_write (line 16) | fn mmio_write(addr: u64, bytes: u8, value: u64, was_handled: u8) {} type MmioFn (line 19) | pub type MmioFn = dyn Fn(usize, RWOp) + Send + Sync + 'static; type MmioBus (line 21) | pub struct MmioBus { method new (line 25) | pub fn new(max: usize) -> Self { method register (line 30) | pub fn register( method unregister (line 38) | pub fn unregister(&self, addr: usize) -> Result<()> { method handle_write (line 42) | pub fn handle_write(&self, addr: usize, bytes: u8, val: u64) -> Result... method handle_read (line 64) | pub fn handle_read(&self, addr: usize, bytes: u8) -> Result { method do_mmio (line 88) | fn do_mmio(&self, addr: usize, f: F) -> Result<()> method clear (line 101) | pub(crate) fn clear(&self) { FILE: lib/propolis/src/msr.rs type MsrId (line 10) | pub struct MsrId(pub u32); type RdmsrOutcome (line 14) | pub enum RdmsrOutcome { type WrmsrOutcome (line 29) | pub enum WrmsrOutcome { FILE: lib/propolis/src/pio.rs function pio_in (line 15) | fn pio_in(port: u16, bytes: u8, value: u32, was_handled: u8) {} function pio_out (line 16) | fn pio_out(port: u16, bytes: u8, value: u32, was_handled: u8) {} type PioFn (line 19) | pub type PioFn = dyn Fn(u16, RWOp<'_, '_>) + Send + Sync + 'static; type PioBus (line 22) | pub struct PioBus { method new (line 27) | pub fn new() -> Self { method register (line 31) | pub fn register( method unregister (line 39) | pub fn unregister(&self, start: u16) -> Result<()> { method handle_out (line 43) | pub fn handle_out(&self, port: u16, bytes: u8, val: u32) -> Result<()> { method handle_in (line 59) | pub fn handle_in(&self, port: u16, bytes: u8) -> Result { method do_pio (line 77) | fn do_pio(&self, port: u16, f: F) -> Result<()> method clear (line 90) | pub(crate) fn clear(&self) { FILE: lib/propolis/src/tasks.rs type NotifyFn (line 16) | pub type NotifyFn = dyn Fn() + Send + Sync + 'static; type Control (line 19) | struct Control { method wake_task (line 29) | fn wake_task(&self) { method wake_ctrl (line 34) | fn wake_ctrl(&self) { type Inner (line 40) | struct Inner { method request_hold (line 49) | fn request_hold<'a>( method unrequest_hold (line 62) | fn unrequest_hold(&self, guard: &mut MutexGuard) { method request_exit (line 73) | fn request_exit(&self, mut guard: MutexGuard) { method notify_task (line 85) | fn notify_task<'a>( method set_held (line 100) | fn set_held( method set_unheld (line 113) | fn set_unheld(&self, guard: &mut MutexGuard) { type Event (line 123) | pub enum Event { type TaskHdl (line 130) | pub struct TaskHdl(Arc); method new (line 132) | pub fn new(notify_fn: Option>) -> (Self, TaskCtrl) { method new_held (line 135) | pub fn new_held(notify_fn: Option>) -> (Self, TaskCtrl) { method new_inner (line 138) | fn new_inner( method pending_event (line 155) | pub fn pending_event(&self) -> Option { method hold (line 168) | pub fn hold(&self) { method force_hold (line 185) | pub fn force_hold(&self) { method wait_held (line 207) | pub async fn wait_held(&mut self) { method get_event (line 214) | pub async fn get_event(&mut self) -> Event { type Held (line 219) | struct Held<'a> { function new (line 224) | fn new(hdl: &'a mut TaskHdl) -> Self { type Output (line 229) | type Output = (); method poll (line 231) | fn poll( method drop (line 252) | fn drop(&mut self) { type GetEvent (line 260) | struct GetEvent<'a> { function new (line 265) | fn new(hdl: &'a mut TaskHdl) -> Self { type Output (line 270) | type Output = Event; method poll (line 272) | fn poll( method drop (line 290) | fn drop(&mut self) { type Error (line 298) | pub enum Error { type TaskCtrl (line 308) | pub struct TaskCtrl(Weak); method run (line 312) | pub fn run(&mut self) -> Result<(), Error> { method hold (line 325) | pub fn hold(&mut self) -> Result<(), Error> { method exit (line 350) | pub fn exit(&mut self) { method held (line 361) | pub async fn held(&mut self) -> Result<(), Error> { type CtrlHeld (line 366) | struct CtrlHeld<'a> { function new (line 371) | fn new(tc: &'a mut TaskCtrl) -> Self { type Output (line 376) | type Output = Result<(), Error>; method poll (line 378) | fn poll( method drop (line 409) | fn drop(&mut self) { type TaskGroup (line 422) | pub struct TaskGroup(Mutex>>); method new (line 424) | pub fn new() -> Self { method extend (line 429) | pub fn extend(&self, tasks: I) method join_all (line 443) | pub async fn join_all(&self) -> Option> { type ThreadErr (line 467) | pub type ThreadErr = Box; type ThreadGroup (line 471) | pub struct ThreadGroup(Mutex>>); method new (line 473) | pub fn new() -> Self { method extend (line 483) | pub fn extend(&self, threads: I) -> std::io::Result<()> method block_until_joined (line 505) | pub fn block_until_joined(&self) -> Option> { FILE: lib/propolis/src/util/aspace.rs type ASpace (line 19) | pub struct ASpace { type Error (line 26) | pub enum Error { method from (line 37) | fn from(e: Error) -> Self { type Result (line 42) | pub type Result = std::result::Result; type SpaceItem (line 45) | type SpaceItem<'a, T> = (usize, usize, &'a T); function new (line 53) | pub const fn new(start: usize, end: usize) -> ASpace { function register (line 62) | pub fn register( function unregister (line 84) | pub fn unregister(&mut self, start: usize) -> Result { function region_at (line 92) | pub fn region_at(&self, point: usize) -> Result> { function iter (line 107) | pub fn iter(&self) -> Iter<'_, T> { function lowest_addr (line 111) | pub fn lowest_addr

(&self, mut predicate: P) -> Option function highest_addr (line 120) | pub fn highest_addr

(&self, mut predicate: P) -> Option function inverse_iter (line 132) | pub fn inverse_iter(&self) -> InverseIter<'_, T> { function covered_by (line 137) | pub fn covered_by(&self, range: R) -> Range<'_, T> function clear (line 169) | pub fn clear(&mut self) { function safe_end (line 176) | fn safe_end(start: usize, len: usize) -> Option { function safe_end_bounds (line 187) | fn safe_end_bounds() { function kv_flatten (line 206) | fn kv_flatten<'a, T>(i: (&'a usize, &'a (usize, T))) -> SpaceItem<'a, T> { type Iter (line 214) | pub struct Iter<'a, T> { type Item (line 220) | type Item = SpaceItem<'a, T>; method next (line 222) | fn next(&mut self) -> Option { type Extent (line 229) | pub struct Extent { method start (line 235) | pub fn start(&self) -> usize { method len (line 238) | pub fn len(&self) -> usize { type InverseIter (line 244) | pub struct InverseIter<'a, T> { type Item (line 253) | type Item = Extent; method next (line 255) | fn next(&mut self) -> Option { type Range (line 290) | pub struct Range<'a, T> { type Item (line 296) | type Item = SpaceItem<'a, T>; method next (line 298) | fn next(&mut self) -> Option { function create_one_elem (line 308) | fn create_one_elem() { function create_max (line 317) | fn create_max() { function create_normal (line 321) | fn create_normal() { function register_plain (line 325) | fn register_plain() { function register_invalid (line 331) | fn register_invalid() { function register_outside (line 341) | fn register_outside() { function register_overlaps (line 356) | fn register_overlaps() { function region_at_outside (line 386) | fn region_at_outside() { function region_at_normal (line 395) | fn region_at_normal() { function bounds_accessors (line 424) | fn bounds_accessors() { function inverse_iterator_alloc_middle (line 438) | fn inverse_iterator_alloc_middle() { function inverse_iterator_alloc_ends (line 455) | fn inverse_iterator_alloc_ends() { function inverse_iterator_sequential_registrations (line 471) | fn inverse_iterator_sequential_registrations() { function inverse_iterator_empty (line 487) | fn inverse_iterator_empty() { function inverse_iterator_full (line 499) | fn inverse_iterator_full() { FILE: lib/propolis/src/util/mod.rs function ioctl (line 14) | pub(crate) unsafe fn ioctl( FILE: lib/propolis/src/util/regmap.rs type RegDef (line 12) | struct RegDef { type RegMap (line 19) | pub struct RegMap { type RegXfer (line 36) | struct RegXfer<'a, ID> { function new (line 45) | pub const fn new(len: usize) -> Self { function define (line 49) | pub fn define(&mut self, start: usize, len: usize, id: ID) { function define_with_flags (line 53) | pub fn define_with_flags( function process (line 63) | pub fn process(&self, op: &mut RWOp<'_, '_>, mut f: F) function read (line 76) | pub fn read(&self, ro: &mut ReadOp, f: &mut F) function write (line 95) | pub fn write(&self, wo: &mut WriteOp, f: &mut F) function reg_read (line 114) | fn reg_read( function reg_write (line 139) | fn reg_write( function iterate_transfers (line 170) | fn iterate_transfers(&self, offset: usize, len: usize, mut do_xfer: F) function create_packed (line 226) | pub fn create_packed( function create_packed_passthru (line 248) | pub fn create_packed_passthru(size: usize, regdef: &[(ID, usize)]) -> Se... type XferDir (line 267) | enum XferDir { type Xfer (line 272) | struct Xfer { function from_rwo (line 279) | fn from_rwo(id: &ID, rwo: RWOp) -> Self { function read (line 286) | fn read(id: ID, off: usize, len: usize) -> Self { function write (line 290) | fn write(id: ID, off: usize, len: usize) -> Self { function read (line 295) | fn read(off: usize, len: usize, cb: impl FnOnce(RWOp)) { function write (line 301) | fn write(off: usize, len: usize, cb: impl FnOnce(&mut RWOp)) { function drive_reads (line 306) | fn drive_reads( function simple (line 323) | fn simple() { function misaligned (line 347) | fn misaligned() { FILE: lib/propolis/src/vcpu.rs function vm_entry (line 33) | fn vm_entry(vcpuid: u32) {} function vm_exit (line 34) | fn vm_exit(vcpuid: u32, rip: u64, code: u32) {} constant MAXCPU (line 38) | pub const MAXCPU: usize = bhyve_api::VM_MAXCPU; constant MAXCPU (line 42) | pub const MAXCPU: usize = 254; type GetCpuidError (line 45) | pub enum GetCpuidError { type Vcpu (line 57) | pub struct Vcpu { method new (line 70) | pub(crate) fn new( method cpuid (line 100) | pub fn cpuid(&self) -> i32 { method is_bsp (line 104) | pub fn is_bsp(&self) -> bool { method set_default_capabs (line 109) | pub fn set_default_capabs(&self) -> Result<()> { method set_reg (line 122) | pub fn set_reg(&self, reg: bhyve_api::vm_reg_name, val: u64) -> Result... method get_reg (line 136) | pub fn get_reg(&self, reg: bhyve_api::vm_reg_name) -> Result { method set_segreg (line 153) | pub fn set_segreg( method get_segreg (line 174) | pub fn get_segreg( method set_cpuid (line 194) | pub fn set_cpuid(&self, values: CpuidSet) -> Result<()> { method get_cpuid (line 224) | pub fn get_cpuid(&self) -> std::result::Result { method reboot_state (line 296) | pub fn reboot_state(&self) -> Result<()> { method activate (line 311) | pub fn activate(&self) -> Result<()> { method set_run_state (line 321) | pub fn set_run_state( method get_run_state (line 339) | pub fn get_run_state(&self) -> Result { method run (line 357) | pub fn run( method barrier (line 385) | pub fn barrier(&self) -> Result<()> { method barrier_fn (line 410) | pub fn barrier_fn(self: &Arc) -> Box { method inject_nmi (line 420) | pub fn inject_nmi(&self) -> Result<()> { method inject_gp (line 425) | pub fn inject_gp(&self) -> Result<()> { method process_vmexit (line 438) | pub fn process_vmexit(&self, exit: &VmExit) -> Option { method type_name (line 535) | fn type_name(&self) -> &'static str { method migrate (line 538) | fn migrate(&self) -> Migrator<'_> { method export (line 547) | fn export( method import (line 571) | fn import( type VcpuReadWrite (line 612) | pub(super) trait VcpuReadWrite: Sized { method read (line 613) | fn read(vcpu: &Vcpu) -> Result; method write (line 614) | fn write(self, vcpu: &Vcpu) -> Result<()>; method read (line 923) | fn read(vcpu: &Vcpu) -> Result { method write (line 972) | fn write(self, vcpu: &Vcpu) -> Result<()> { method read (line 1016) | fn read(vcpu: &Vcpu) -> Result { method write (line 1039) | fn write(self, vcpu: &Vcpu) -> Result<()> { method read (line 1063) | fn read(vcpu: &Vcpu) -> Result { method write (line 1074) | fn write(self, vcpu: &Vcpu) -> Result<()> { method read (line 1085) | fn read(vcpu: &Vcpu) -> Result { method write (line 1098) | fn write(self, vcpu: &Vcpu) -> Result<()> { method read (line 1111) | fn read(vcpu: &Vcpu) -> Result { method write (line 1157) | fn write(self, vcpu: &Vcpu) -> Result<()> { method read (line 1214) | fn read(vcpu: &Vcpu) -> Result { method write (line 1239) | fn write(self, vcpu: &Vcpu) -> Result<()> { method read (line 1264) | fn read(vcpu: &Vcpu) -> Result { method write (line 1287) | fn write(mut self, vcpu: &Vcpu) -> Result<()> { method read (line 1305) | fn read(vcpu: &Vcpu) -> Result { method write (line 1328) | fn write(self, vcpu: &Vcpu) -> Result<()> { method read (line 1346) | fn read(vcpu: &Vcpu) -> Result { method write (line 1356) | fn write(self, vcpu: &Vcpu) -> Result<()> { type VcpuRunStateV1 (line 618) | pub struct VcpuRunStateV1 { method id (line 629) | fn id() -> SchemaId { type VcpuGpRegsV1 (line 635) | pub struct VcpuGpRegsV1 { method id (line 657) | fn id() -> SchemaId { type VcpuCtrlRegsV1 (line 663) | pub struct VcpuCtrlRegsV1 { method id (line 677) | fn id() -> SchemaId { type VcpuDbgRegsV1 (line 683) | pub struct VcpuDbgRegsV1 { method id (line 694) | fn id() -> SchemaId { type VcpuSegRegsV1 (line 700) | pub struct VcpuSegRegsV1 { method id (line 713) | fn id() -> SchemaId { type SegDesc (line 719) | pub struct SegDesc { method from (line 800) | fn from(value: (bhyve_api::seg_desc, u16)) -> Self { method into (line 811) | fn into(self) -> (bhyve_api::seg_desc, u16) { type VcpuMsrsV1 (line 727) | pub struct VcpuMsrsV1(Vec); method id (line 729) | fn id() -> SchemaId { method valid_msr (line 1199) | const fn valid_msr(ident: u32) -> bool { type MsrEntry (line 735) | pub struct MsrEntry { method from (line 824) | fn from(raw: vdi_field_entry_v1) -> Self { type FpuStateV1 (line 741) | pub struct FpuStateV1 { method id (line 745) | fn id() -> SchemaId { type LapicV1 (line 751) | pub struct LapicV1 { method id (line 758) | fn id() -> SchemaId { method from (line 835) | fn from(value: bhyve_api::vdi_lapic_v1) -> Self { type LapicPageV1 (line 764) | pub struct LapicPageV1 { method from (line 855) | fn from(value: bhyve_api::vdi_lapic_page_v1) -> Self { type PmuAmdV1 (line 789) | pub struct PmuAmdV1 { method id (line 794) | fn id() -> SchemaId { method from (line 909) | fn from(value: bhyve_api::vdi_pmu_amd_v1) -> Self { method from (line 829) | fn from(entry: MsrEntry) -> Self { function from (line 845) | fn from(value: LapicV1) -> Self { function from (line 882) | fn from(value: LapicPageV1) -> Self { function from (line 914) | fn from(value: PmuAmdV1) -> Self { constant MSR_DEBUGCTL (line 1368) | pub const MSR_DEBUGCTL: u32 = 0x1d9; constant MSR_EFER (line 1369) | pub const MSR_EFER: u32 = 0xc0000080; constant IDT_GP (line 1371) | pub const IDT_GP: u8 = 0xd; type Diagnostics (line 1375) | pub struct Diagnostics { method capture (line 1382) | pub fn capture(vcpu: &Vcpu) -> Self { method fmt (line 1452) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function fmt (line 1392) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function fmt (line 1411) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function fmt (line 1423) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function fmt (line 1439) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { FILE: lib/propolis/src/vmm/hdl.rs type CreateOpts (line 33) | pub struct CreateOpts { function create_vm (line 48) | pub(crate) fn create_vm(name: &str, opts: CreateOpts) -> Result { type VmmFile (line 89) | pub struct VmmFile(File); method new (line 97) | pub unsafe fn new(f: File) -> Self { method fd (line 102) | pub fn fd(&self) -> RawFd { type VmmHdl (line 108) | pub struct VmmHdl { method fd (line 119) | pub fn fd(&self) -> RawFd { method ioctl (line 123) | pub unsafe fn ioctl(&self, cmd: i32, data: *mut T) -> Result<()> { method ioctl_usize (line 140) | pub fn ioctl_usize(&self, cmd: i32, data: usize) -> Result<()> { method api_version (line 157) | pub fn api_version(&self) -> Result { method create_memseg (line 167) | pub fn create_memseg( method map_memseg (line 196) | pub fn map_memseg( method devmem_offset (line 220) | pub fn devmem_offset(&self, segid: i32) -> Result { method track_dirty_pages (line 238) | pub fn track_dirty_pages( method set_dirty_pages (line 269) | pub fn set_dirty_pages(&self, start_gpa: u64, bitmap: &[u8]) -> Result... method can_npt_operate (line 289) | pub fn can_npt_operate(&self) -> bool { method rtc_settime (line 298) | pub fn rtc_settime(&self, time: Duration) -> Result<()> { method rtc_write (line 302) | pub fn rtc_write(&self, offset: u8, value: u8) -> Result<()> { method rtc_read (line 308) | pub fn rtc_read(&self, offset: u8) -> Result { method isa_assert_irq (line 321) | pub fn isa_assert_irq( method isa_deassert_irq (line 333) | pub fn isa_deassert_irq( method isa_pulse_irq (line 345) | pub fn isa_pulse_irq( method isa_set_trigger_mode (line 357) | pub fn isa_set_trigger_mode( method ioapic_assert_irq (line 370) | pub fn ioapic_assert_irq(&self, irq: u8) -> Result<()> { method ioapic_deassert_irq (line 375) | pub fn ioapic_deassert_irq(&self, irq: u8) -> Result<()> { method ioapic_pulse_irq (line 380) | pub fn ioapic_pulse_irq(&self, irq: u8) -> Result<()> { method ioapic_pin_count (line 385) | pub fn ioapic_pin_count(&self) -> Result { method lapic_msi (line 393) | pub fn lapic_msi(&self, addr: u64, msg: u64) -> Result<()> { method pmtmr_locate (line 398) | pub fn pmtmr_locate(&self, port: u16) -> Result<()> { method suspend (line 402) | pub fn suspend( method reinit (line 414) | pub fn reinit(&self, force_suspend: bool) -> Result<()> { method pause (line 424) | pub fn pause(&self) -> Result<()> { method resume (line 429) | pub fn resume(&self) -> Result<()> { method destroy (line 435) | pub fn destroy(&self) -> Result<()> { method set_autodestruct (line 459) | pub fn set_autodestruct(&self, enable_autodestruct: bool) -> Result<()> { method data_op (line 466) | pub fn data_op( method new_test (line 479) | pub(crate) fn new_test(mem_size: usize) -> Result { function query_reservoir (line 493) | pub fn query_reservoir() -> Result { function page_bitmap_len (line 500) | fn page_bitmap_len(bitmap: &[u8]) -> usize { FILE: lib/propolis/src/vmm/machine.rs constant MAX_PHYSMEM (line 27) | pub const MAX_PHYSMEM: usize = 0x1000_0000_0000; type Machine (line 30) | pub struct Machine { method reinitialize (line 47) | pub fn reinitialize(&self) -> Result<()> { method vcpu_x86_setup (line 54) | pub fn vcpu_x86_setup(&self) -> Result<()> { method destroy (line 69) | pub fn destroy(mut self) -> Arc { method do_destroy (line 73) | fn do_destroy(&mut self) -> Option> { method inject_nmi (line 98) | pub fn inject_nmi(&self) -> Result<()> { method new_test (line 117) | pub(crate) fn new_test() -> Result { method drop (line 105) | fn drop(&mut self) { type Builder (line 178) | pub struct Builder { method new (line 195) | pub fn new(name: &str, opts: CreateOpts) -> Result { method add_mem_region (line 208) | pub fn add_mem_region( method add_rom_region (line 220) | pub fn add_rom_region( method add_mmio_region (line 230) | pub fn add_mmio_region( method max_cpus (line 244) | pub fn max_cpus(mut self, max: u8) -> Result { method guest_hypervisor_interface (line 254) | pub fn guest_hypervisor_interface( method finalize (line 264) | pub fn finalize(mut self) -> Result { method drop (line 311) | fn drop(&mut self) { FILE: lib/propolis/src/vmm/mem.rs type MapSeg (line 42) | pub(crate) struct MapSeg { type MapKind (line 54) | pub(crate) enum MapKind { type MapEnt (line 60) | pub(crate) struct MapEnt { method map_type (line 66) | fn map_type(&self) -> MapType { type MapType (line 75) | pub enum MapType { type PhysMap (line 81) | pub struct PhysMap { method new (line 87) | pub(crate) fn new(size: usize, hdl: Arc) -> Self { method map_mut (line 94) | pub(crate) fn map_mut(&mut self) -> &mut ASpace { method add_mem (line 101) | pub(crate) fn add_mem( method add_rom (line 127) | pub(crate) fn add_rom( method add_mmio_reservation (line 153) | pub(crate) fn add_mmio_reservation( method post_reinit (line 164) | pub(crate) fn post_reinit(&self) -> Result<()> { method mappings (line 181) | pub fn mappings(&self) -> Vec<(usize, usize, MapType)> { method finalize (line 188) | pub(crate) fn finalize(&mut self) -> MemAccessor { method seg_create_map (line 198) | fn seg_create_map( method destroy (line 223) | pub(crate) fn destroy(&mut self) { method new_test (line 233) | pub(crate) fn new_test(size: usize) -> Self { method add_test_mem (line 240) | pub(crate) fn add_test_mem( method add_test_rom (line 260) | pub(crate) fn add_test_rom( method seg_test_map (line 280) | fn seg_test_map( type Mapping (line 350) | pub(crate) struct Mapping { method new (line 358) | fn new( method drop (line 396) | fn drop(&mut self) { type Backing (line 412) | enum Backing<'a> { type SubMapping (line 426) | pub struct SubMapping<'a> { function new_base (line 440) | fn new_base<'a>(base: &'a Mapping) -> SubMapping<'a> { function new_sub (line 452) | fn new_sub(&self) -> SubMapping<'_> { function new_base_test (line 463) | fn new_base_test(base: &Mapping) -> SubMapping<'_> { function subregion (line 478) | pub fn subregion( function constrain_access (line 487) | pub fn constrain_access(mut self, prot_limit: Prot) -> Self { function constrain_region (line 500) | pub fn constrain_region( function check_write_access (line 526) | fn check_write_access(&self) -> Result<()> { function check_read_access (line 535) | fn check_read_access(&self) -> Result<()> { function read (line 544) | pub fn read(&self) -> Result { function read_many_owned (line 562) | pub fn read_many_owned(&self) -> Result> { function read_many (line 583) | pub fn read_many( function read_bytes (line 623) | pub fn read_bytes(&self, buf: &mut [u8]) -> Result { function read_bytes_uninit (line 635) | pub fn read_bytes_uninit( function pread (line 645) | pub fn pread( function write (line 668) | pub fn write(&self, value: &T) -> Result<()> { function write_many (line 678) | pub fn write_many(&self, values: &[T]) -> Result<()> { function write_bytes (line 713) | pub fn write_bytes(&self, buf: &[u8]) -> Result { function write_byte (line 720) | pub fn write_byte(&self, val: u8, count: usize) -> Result { function pwrite (line 730) | pub fn pwrite( function len (line 753) | pub fn len(&self) -> usize { function is_empty (line 758) | pub fn is_empty(&self) -> bool { function prot (line 762) | pub fn prot(&self) -> Prot { function raw_readable (line 774) | pub unsafe fn raw_readable(&self) -> Option<*const u8> { function raw_writable (line 790) | pub unsafe fn raw_writable(&self) -> Option<*mut u8> { type MappingExt (line 804) | pub trait MappingExt { method preadv (line 806) | fn preadv(&self, fd: RawFd, offset: i64) -> Result; method pwritev (line 809) | fn pwritev(&self, fd: RawFd, offset: i64) -> Result; method preadv (line 851) | fn preadv(&self, fd: RawFd, offset: i64) -> Result { method pwritev (line 929) | fn pwritev(&self, fd: RawFd, offset: i64) -> Result { constant MAPPING_IO_LIMIT_BYTES (line 832) | const MAPPING_IO_LIMIT_BYTES: usize = crate::common::MB; function total_mapping_size (line 838) | fn total_mapping_size(mappings: &[SubMapping<'_>]) -> Result { type MemCtx (line 1005) | pub struct MemCtx { method read (line 1010) | pub fn read( method read_into (line 1025) | pub fn read_into( method direct_read_into (line 1040) | pub fn direct_read_into( method read_many (line 1053) | pub fn read_many( method write (line 1070) | pub fn write(&self, addr: GuestAddr, val: &T) -> ... method write_from (line 1082) | pub fn write_from( method write_byte (line 1096) | pub fn write_byte(&self, addr: GuestAddr, val: u8, count: usize) -> bo... method write_many (line 1107) | pub fn write_many( method writable_region (line 1121) | pub fn writable_region( method readable_region (line 1128) | pub fn readable_region( method readwrite_region (line 1135) | pub fn readwrite_region( method direct_writable_region_by_name (line 1144) | pub fn direct_writable_region_by_name( method direct_writable_region (line 1168) | pub fn direct_writable_region( method direct_readable_region (line 1179) | pub fn direct_readable_region( method region_mappings (line 1190) | fn region_mappings( method region_covered (line 1230) | fn region_covered( method mem_bounds (line 1250) | pub fn mem_bounds(&self) -> Option> { type MemAccessed (line 1263) | pub enum MemAccessed {} type Root (line 1265) | type Root = Arc; type Leaf (line 1266) | type Leaf = Arc; type Target (line 1267) | type Target = MemCtx; method derive (line 1269) | fn derive(root: &Self::Root) -> Self::Leaf { method deref (line 1272) | fn deref(leaf: &Self::Leaf) -> &Self::Target { type MemMany (line 1278) | pub struct MemMany<'a, T: Copy> { function get (line 1288) | pub fn get(&self, pos: usize) -> Option> { type Item (line 1302) | type Item = GuestData; method next (line 1304) | fn next(&mut self) -> Option { type Pfn (line 1314) | pub(crate) struct Pfn(u64); method fmt (line 1317) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method fmt (line 1323) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method new (line 1338) | pub(crate) fn new(pfn: u64) -> Option { method new_unchecked (line 1356) | pub(crate) fn new_unchecked(pfn: u64) -> Self { method addr (line 1361) | pub(crate) fn addr(&self) -> GuestAddr { function from (line 1329) | fn from(value: Pfn) -> Self { constant TEST_LEN (line 1370) | const TEST_LEN: usize = 16 * 1024; function test_setup (line 1372) | fn test_setup(prot: Prot) -> (VmmHdl, Arc) { function memory_protections_match_libc (line 1380) | fn memory_protections_match_libc() { function mapping_denies_read_beyond_end (line 1387) | fn mapping_denies_read_beyond_end() { function mapping_shortens_read_bytes_beyond_end (line 1395) | fn mapping_shortens_read_bytes_beyond_end() { function mapping_shortens_write_bytes_beyond_end (line 1404) | fn mapping_shortens_write_bytes_beyond_end() { function mapping_create_empty (line 1413) | fn mapping_create_empty() { function mapping_valid_subregions (line 1423) | fn mapping_valid_subregions() { function mapping_invalid_subregions (line 1433) | fn mapping_invalid_subregions() { function subregion_protection (line 1447) | fn subregion_protection() { function region_lookup (line 1477) | fn region_lookup() { FILE: lib/propolis/src/vmm/mod.rs function check_api_version (line 17) | pub(crate) fn check_api_version() -> Result<(), crate::api_version::Erro... FILE: lib/propolis/src/vmm/time.rs constant NS_PER_SEC (line 11) | pub const NS_PER_SEC: u64 = 1_000_000_000; constant SEC_PER_DAY (line 12) | pub const SEC_PER_DAY: u64 = 24 * 60 * 60; type VmTimeData (line 18) | pub struct VmTimeData { method wall_clock (line 50) | pub fn wall_clock(&self) -> Duration { method from (line 56) | fn from(raw: bhyve_api::vdi_time_info_v1) -> Self { type VmTimeDataAdjustments (line 41) | pub struct VmTimeDataAdjustments { function from (line 68) | fn from(info: VmTimeData) -> Self { function import_time_data (line 80) | pub fn import_time_data( function export_time_data (line 90) | pub fn export_time_data(hdl: &VmmHdl) -> std::io::Result { function host_time_snapshot (line 109) | pub fn host_time_snapshot(hdl: &VmmHdl) -> std::io::Result<(i64, Duratio... function adjust_time_data (line 124) | pub fn adjust_time_data( type TimeAdjustError (line 287) | pub enum TimeAdjustError { function calc_tsc_delta (line 371) | fn calc_tsc_delta( function base_time_data (line 422) | fn base_time_data() -> VmTimeData { function test_invalid_hrtime (line 435) | fn test_invalid_hrtime() { function test_calc_migrate_delta (line 446) | fn test_calc_migrate_delta() { type Gutv (line 503) | struct Gutv { constant GUEST_UPTIME_TESTS_VALID (line 508) | const GUEST_UPTIME_TESTS_VALID: &'static [Gutv] = &[ type Guti (line 528) | struct Guti { constant GUEST_UPTIME_TESTS_INVALID (line 532) | const GUEST_UPTIME_TESTS_INVALID: &'static [Guti] = &[ function test_calc_guest_uptime (line 546) | fn test_calc_guest_uptime() { function test_calc_boot_hrtime_delta (line 607) | fn test_calc_boot_hrtime_delta() { function test_calc_boot_hrtime (line 643) | fn test_calc_boot_hrtime() { function test_calc_tsc_delta (line 709) | fn test_calc_tsc_delta() { function test_calc_guest_tsc (line 762) | fn test_calc_guest_tsc() { FILE: lib/propolis/src/vsock/buffer.rs type VsockBufError (line 9) | pub enum VsockBufError { type VsockBuf (line 17) | pub struct VsockBuf { method fmt (line 24) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method new (line 37) | pub fn new(capacity: NonZeroUsize) -> Self { method capacity (line 46) | pub fn capacity(&self) -> usize { method len (line 50) | pub fn len(&self) -> usize { method free (line 54) | fn free(&self) -> usize { method is_empty (line 58) | pub fn is_empty(&self) -> bool { method push (line 62) | pub fn push( method write_to (line 94) | pub fn write_to( function test_capacity_and_len (line 138) | fn test_capacity_and_len() { function test_push_less_than_capacity (line 152) | fn test_push_less_than_capacity() { function test_push_more_than_capacity (line 159) | fn test_push_more_than_capacity() { function test_write_to (line 169) | fn test_write_to() { function test_partial_write_to (line 180) | fn test_partial_write_to() { function test_wrap_around (line 197) | fn test_wrap_around() { FILE: lib/propolis/src/vsock/mod.rs constant VSOCK_HOST_CID (line 19) | pub(crate) const VSOCK_HOST_CID: u64 = 2; type InvalidGuestCid (line 23) | pub struct InvalidGuestCid(u64); type GuestCid (line 26) | pub struct GuestCid(u64); method get (line 29) | pub const fn get(&self) -> u64 { type Error (line 35) | type Error = InvalidGuestCid; method try_from (line 37) | fn try_from(value: u64) -> Result { type VsockError (line 50) | pub enum VsockError { type VsockBackend (line 55) | pub trait VsockBackend: Send + Sync + 'static { method queue_notify (line 56) | fn queue_notify(&self, queue_id: u16) -> Result<(), VsockError>; function vsock_pkt_rx (line 64) | fn vsock_pkt_rx(hdr: &VsockPacketHeader) {} function vsock_pkt_tx (line 66) | fn vsock_pkt_tx(hdr: &VsockPacketHeader) {} FILE: lib/propolis/src/vsock/packet.rs type VsockSocketType (line 25) | pub enum VsockSocketType { type VsockPacketError (line 33) | pub enum VsockPacketError { type VsockPacketOp (line 58) | pub enum VsockPacketOp { type VsockGuestAddr (line 69) | pub struct VsockGuestAddr { type VsockPacketHeader (line 80) | pub struct VsockPacketHeader { method src_cid (line 117) | pub fn src_cid(&self) -> u64 { method dst_cid (line 121) | pub fn dst_cid(&self) -> u64 { method src_port (line 125) | pub fn src_port(&self) -> u32 { method dst_port (line 129) | pub fn dst_port(&self) -> u32 { method len (line 133) | pub fn len(&self) -> u32 { method socket_type (line 137) | pub fn socket_type(&self) -> Option { method op (line 141) | pub fn op(&self) -> Option { method flags (line 145) | pub fn flags(&self) -> VsockPacketFlags { method buf_alloc (line 149) | pub fn buf_alloc(&self) -> u32 { method fwd_cnt (line 153) | pub fn fwd_cnt(&self) -> u32 { method new (line 157) | pub const fn new() -> Self { method set_host_src_cid (line 172) | pub const fn set_host_src_cid(&mut self) -> &mut Self { method set_src_cid (line 178) | pub const fn set_src_cid(&mut self, cid: GuestCid) -> &mut Self { method set_dst_cid_raw (line 184) | pub const fn set_dst_cid_raw(&mut self, cid: u64) -> &mut Self { method set_dst_cid (line 189) | pub const fn set_dst_cid(&mut self, cid: GuestCid) -> &mut Self { method set_src_port (line 194) | pub const fn set_src_port(&mut self, port: u32) -> &mut Self { method set_dst_port (line 199) | pub const fn set_dst_port(&mut self, port: u32) -> &mut Self { method set_len (line 204) | pub const fn set_len(&mut self, len: u32) -> &mut Self { method set_socket_type (line 209) | pub const fn set_socket_type( method set_op (line 217) | pub const fn set_op(&mut self, op: VsockPacketOp) -> &mut Self { method set_flags (line 222) | pub const fn set_flags(&mut self, flags: VsockPacketFlags) -> &mut Self { method set_buf_alloc (line 227) | pub const fn set_buf_alloc(&mut self, buf_alloc: u32) -> &mut Self { method set_fwd_cnt (line 232) | pub const fn set_fwd_cnt(&mut self, fwd_cnt: u32) -> &mut Self { method serialize (line 96) | fn serialize( type VsockPacket (line 239) | pub struct VsockPacket { method fmt (line 245) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method new (line 254) | fn new(addr: VsockGuestAddr, op: VsockPacketOp) -> Self { method new_reset (line 266) | pub fn new_reset(addr: VsockGuestAddr) -> Self { method new_response (line 270) | pub fn new_response(addr: VsockGuestAddr) -> Self { method new_rw (line 280) | pub fn new_rw( method new_credit_update (line 298) | pub fn new_credit_update(addr: VsockGuestAddr, fwd_cnt: u32) -> Self { method new_shutdown (line 304) | pub fn new_shutdown( FILE: lib/propolis/src/vsock/poller.rs constant DEFAULT_QUIESCE_TIMEOUT (line 44) | const DEFAULT_QUIESCE_TIMEOUT: Duration = Duration::from_secs(2); type VsockEvent (line 47) | enum VsockEvent { type Error (line 54) | type Error = usize; method try_from (line 56) | fn try_from(value: usize) -> Result { type PollerState (line 66) | struct PollerState { method new (line 71) | fn new() -> Self { method wait_stopped (line 75) | fn wait_stopped(&self) { method set_stopped (line 80) | fn set_stopped(&self) { method set_running (line 88) | fn set_running(&self) { type PausedCmd (line 95) | enum PausedCmd { type VsockPollerNotify (line 104) | pub struct VsockPollerNotify { method port_fd (line 111) | fn port_fd(&self) -> BorrowedFd<'_> { method port_send (line 115) | fn port_send(&self, event: VsockEvent) -> std::io::Result<()> { method queue_notify (line 127) | pub fn queue_notify(&self, id: u16) -> std::io::Result<()> { method pause (line 135) | pub fn pause(&self) -> std::io::Result<()> { method resume (line 139) | pub fn resume(&self) { method reset (line 143) | pub fn reset(&self) { method halt (line 149) | pub fn halt(&self) { method wait_stopped (line 153) | pub fn wait_stopped(&self) { function is_readable (line 159) | const fn is_readable(flags: PollFlags) -> bool { function is_writable (line 170) | const fn is_writable(flags: PollFlags) -> bool { type RxEvent (line 180) | enum RxEvent { type ClosingConn (line 189) | struct ClosingConn { type VsockPoller (line 194) | pub struct VsockPoller { method new (line 224) | pub fn new( method notify_handle (line 276) | pub fn notify_handle(&self) -> VsockPollerNotify { method run (line 285) | pub fn run(mut self) -> JoinHandle<()> { method handle_connection_request (line 293) | fn handle_connection_request(&mut self, key: ConnKey, packet: VsockPac... method handle_shutdown (line 325) | fn handle_shutdown(&mut self, key: ConnKey, flags: VsockPacketFlags) { method handle_rw_packet (line 378) | fn handle_rw_packet(&mut self, key: ConnKey, packet: VsockPacket) { method handle_tx_queue_event (line 404) | fn handle_tx_queue_event(&mut self) { method handle_rx_queue_event (line 515) | fn handle_rx_queue_event(&mut self) { method process_pending_rx (line 540) | fn process_pending_rx(&mut self) { method handle_user_event (line 595) | fn handle_user_event(&mut self, event: VsockEvent) -> bool { method handle_fd_event (line 608) | fn handle_fd_event(&mut self, event: PortEvent, read_buf: &mut [u8]) { method handle_writable_fd (line 622) | fn handle_writable_fd(&mut self, key: ConnKey) { method handle_readable_fd (line 659) | fn handle_readable_fd(&mut self, key: ConnKey, read_buf: &mut [u8]) { method associate_fd (line 752) | fn associate_fd(&mut self, key: ConnKey, fd: RawFd, interests: PollFla... method send_conn_rst (line 778) | fn send_conn_rst(&mut self, key: ConnKey) { method quiesce_connections (line 782) | fn quiesce_connections(&mut self) { method handle_events (line 803) | fn handle_events(&mut self) { method poller_loop (line 955) | fn poller_loop(&mut self) { method reset (line 1001) | fn reset(&mut self) { type EventSource (line 1012) | pub enum EventSource { method from_raw (line 1022) | fn from_raw(source: u16) -> Self { type PortEvent (line 1036) | struct PortEvent { method from_raw (line 1049) | fn from_raw(event: libc::port_event) -> Self { method from_conn_key (line 1062) | fn from_conn_key(guest_cid: GuestCid, key: ConnKey) -> Self { type VecDequeExt (line 1069) | trait VecDequeExt { method pop_front_if (line 1070) | fn pop_front_if( function pop_front_if (line 1077) | fn pop_front_if( function test_logger (line 1113) | fn test_logger() -> slog::Logger { constant QUEUE_SIZE (line 1121) | const QUEUE_SIZE: u16 = 64; constant PAGE_SIZE (line 1122) | const PAGE_SIZE: u64 = 0x1000; function bind_test_backend (line 1127) | fn bind_test_backend( type VsockTestHarness (line 1138) | struct VsockTestHarness { method new (line 1145) | fn new() -> Self { method make_vsock_vq (line 1160) | fn make_vsock_vq(&self) -> VsockVq { method add_rx_writable (line 1168) | fn add_rx_writable(&mut self, len: u32) -> u16 { method add_tx_readable (line 1175) | fn add_tx_readable(&mut self, data: &[u8]) -> u16 { method publish_tx (line 1180) | fn publish_tx(&mut self, head: u16) { method chain_tx (line 1185) | fn chain_tx(&mut self, from: u16, to: u16) { method reset_tx_cursors (line 1190) | fn reset_tx_cursors(&mut self) { method reset_rx_cursors (line 1195) | fn reset_rx_cursors(&mut self) { method read_vsock_packet (line 1200) | fn read_vsock_packet( method rx_used_idx (line 1222) | fn rx_used_idx(&self) -> u16 { method tx_used_idx (line 1226) | fn tx_used_idx(&self) -> u16 { function hdr_as_bytes (line 1232) | fn hdr_as_bytes(hdr: &VsockPacketHeader) -> &[u8] { function wait_for_condition (line 1237) | fn wait_for_condition(mut f: F, timeout_ms: u64) function request_receives_response (line 1252) | fn request_receives_response() { function rw_with_invalid_socket_type_receives_rst (line 1308) | fn rw_with_invalid_socket_type_receives_rst() { function request_then_rw_delivers_data (line 1360) | fn request_then_rw_delivers_data() { function credit_update_sent_after_flushing_half_buffer (line 1442) | fn credit_update_sent_after_flushing_half_buffer() { function rst_removes_established_connection (line 1556) | fn rst_removes_established_connection() { function end_to_end_guest_to_host (line 1642) | fn end_to_end_guest_to_host() { function rx_blocked_resumes_when_descriptors_available (line 1743) | fn rx_blocked_resumes_when_descriptors_available() { function end_to_end_large_data (line 1826) | fn end_to_end_large_data() { function host_socket_eof_sends_shutdown (line 2045) | fn host_socket_eof_sends_shutdown() { function end_to_end_guest_to_host_closes_half_open (line 2135) | fn end_to_end_guest_to_host_closes_half_open() { function reset_clears_connections (line 2252) | fn reset_clears_connections() { function pause_resume_preserves_connections (line 2327) | fn pause_resume_preserves_connections() { function halt_from_paused (line 2400) | fn halt_from_paused() { FILE: lib/propolis/src/vsock/poller_stub.rs type VsockPollerNotify (line 23) | pub struct VsockPollerNotify; method queue_notify (line 26) | pub fn queue_notify(&self, _id: u16) -> std::io::Result<()> { method pause (line 32) | pub fn pause(&self) -> std::io::Result<()> { method resume (line 36) | pub fn resume(&self) {} method reset (line 38) | pub fn reset(&self) {} method halt (line 40) | pub fn halt(&self) {} method wait_stopped (line 42) | pub fn wait_stopped(&self) {} type VsockPoller (line 45) | pub struct VsockPoller; method new (line 48) | pub fn new( method notify_handle (line 60) | pub fn notify_handle(&self) -> VsockPollerNotify { method run (line 64) | pub fn run(self) -> JoinHandle<()> { FILE: lib/propolis/src/vsock/proxy.rs constant CONN_TX_BUF_SIZE (line 35) | pub const CONN_TX_BUF_SIZE: usize = 1024 * 128; type ConnState (line 39) | pub enum ConnState { type ConnKey (line 54) | pub struct ConnKey { method to_portev_user (line 71) | pub fn to_portev_user(self) -> usize { method from_portev_user (line 77) | pub fn from_portev_user(val: usize) -> Self { type ProxyConnError (line 83) | pub enum ProxyConnError { type VsockProxyConn (line 108) | pub struct VsockProxyConn { method new (line 128) | pub fn new(addr: &SocketAddr) -> Result { method poll_interests (line 150) | pub fn poll_interests(&self) -> Option { method has_buffered_data (line 163) | pub fn has_buffered_data(&self) -> bool { method set_established (line 168) | pub fn set_established(&mut self) -> Result<(), ProxyConnError> { method guest_can_read (line 183) | pub fn guest_can_read(&self) -> bool { method shutdown_guest_read (line 190) | pub fn shutdown_guest_read(&mut self) -> Result<(), ProxyConnError> { method shutdown_guest_write (line 209) | pub fn shutdown_guest_write(&mut self) -> Result<(), ProxyConnError> { method should_close (line 229) | pub fn should_close(&self) -> bool { method update_peer_credit (line 234) | pub fn update_peer_credit(&mut self, header: &VsockPacketHeader) { method recv_packet (line 240) | pub fn recv_packet( method flush (line 247) | pub fn flush(&mut self) -> std::io::Result { method peer_credit (line 252) | pub fn peer_credit(&self) -> u32 { method update_fwd_cnt (line 258) | pub fn update_fwd_cnt(&mut self, bytes: u32) { method update_tx_cnt (line 263) | pub fn update_tx_cnt(&mut self, bytes: u32) { method fwd_cnt (line 268) | pub fn fwd_cnt(&self) -> u32 { method buf_alloc (line 273) | pub fn buf_alloc(&self) -> u32 { method needs_credit_update (line 281) | pub fn needs_credit_update(&self) -> bool { method mark_credit_sent (line 288) | pub fn mark_credit_sent(&mut self) { method get_fd (line 292) | pub fn get_fd(&self) -> RawFd { type VsockPortMapping (line 298) | pub struct VsockPortMapping { method new (line 305) | pub fn new(port: u32, addr: SocketAddr) -> Self { method addr (line 309) | pub fn addr(&self) -> &SocketAddr { type Key (line 315) | type Key<'a> = u32; method key (line 317) | fn key(&self) -> Self::Key<'_> { type VsockProxy (line 325) | pub struct VsockProxy { method new (line 333) | pub fn new( method queue_notify (line 360) | fn queue_notify(&self, vq_id: u16) -> std::io::Result<()> { method start (line 364) | pub fn start(&self) { method pause (line 371) | pub fn pause(&self) -> std::io::Result<()> { method wait_stopped (line 375) | pub fn wait_stopped(&self) { method resume (line 379) | pub fn resume(&self) { method reset (line 383) | pub fn reset(&self) { method halt (line 387) | pub fn halt(&self) { method queue_notify (line 394) | fn queue_notify(&self, queue_id: u16) -> Result<(), VsockError> { FILE: packaging/propolis-package/src/main.rs constant PKG_NAME (line 13) | const PKG_NAME: PackageName = PackageName::new_const("propolis-server"); type PrintProgress (line 15) | struct PrintProgress(slog::Logger); method get_log (line 24) | fn get_log(&self) -> &Logger { method set_message (line 28) | fn set_message(&self, msg: std::borrow::Cow<'static, str>) { method default (line 17) | fn default() -> Self { function main (line 34) | async fn main() -> Result<()> { FILE: phd-tests/framework/src/artifacts/buildomat.rs type Repo (line 13) | pub(super) struct Repo(Cow<'static, str>); method from_static (line 34) | pub(super) const fn from_static(s: &'static str) -> Self { method artifact_for_commit (line 38) | pub(super) async fn artifact_for_commit( method get_branch_head (line 52) | pub(super) async fn get_branch_head( method get_sha256 (line 74) | async fn get_sha256( method fmt (line 119) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type Commit (line 17) | pub struct Commit(String); method fmt (line 151) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { method deserialize (line 157) | fn deserialize(deserializer: D) -> Result type Series (line 21) | pub(super) struct Series(Cow<'static, str>); method from_static (line 167) | pub(super) const fn from_static(s: &'static str) -> Self { method fmt (line 173) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type BuildomatArtifact (line 24) | pub struct BuildomatArtifact { method uri (line 179) | pub(super) fn uri(&self, filename: impl AsRef) -> String { method fmt (line 192) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { constant BASE_URI (line 31) | const BASE_URI: &str = "https://buildomat.eng.oxide.computer/public"; type Err (line 125) | type Err = anyhow::Error; method from_str (line 127) | fn from_str(s: &str) -> Result { function download_buildomat_uri (line 211) | pub(super) async fn download_buildomat_uri( function str_from_bytes (line 272) | fn str_from_bytes(bytes: &bytes::Bytes) -> anyhow::Result<&str> { FILE: phd-tests/framework/src/artifacts/manifest.rs type Manifest (line 10) | pub(super) struct Manifest { method from_toml_path (line 16) | pub(super) fn from_toml_path(toml_path: &camino::Utf8Path) -> Result Self { method ensure (line 37) | async fn ensure( method cache_path (line 146) | fn cache_path( type Store (line 175) | pub struct Store { method from_toml_path (line 182) | pub fn from_toml_path( method from_manifest (line 194) | fn from_manifest( method add_propolis_from_local_cmd (line 223) | pub fn add_propolis_from_local_cmd( method add_current_propolis (line 235) | pub async fn add_current_propolis( method add_crucible_downstairs (line 290) | pub async fn add_crucible_downstairs( method get_guest_os_image (line 346) | pub async fn get_guest_os_image( method get_bootrom (line 364) | pub async fn get_bootrom( method get_propolis_server (line 380) | pub async fn get_propolis_server( method get_crucible_downstairs (line 396) | pub async fn get_crucible_downstairs(&self) -> anyhow::Result anyhow::Result( function extract_tar_gz (line 505) | fn extract_tar_gz( function extract_tarball (line 535) | fn extract_tarball( method download_buildomat_artifact (line 579) | async fn download_buildomat_artifact( method download_remote_artifact (line 598) | async fn download_remote_artifact( FILE: phd-tests/framework/src/disk/crucible.rs type DataDirectory (line 29) | struct DataDirectory { method drop (line 34) | fn drop(&mut self) { type Downstairs (line 46) | struct Downstairs { method vcr_address (line 61) | fn vcr_address(&self) -> SocketAddr { method drop (line 67) | fn drop(&mut self) { type CrucibleDisk (line 76) | pub struct CrucibleDisk { method new (line 85) | pub(crate) fn new( method vcr (line 115) | pub fn vcr(&self) -> VolumeConstructionRequest { method set_generation (line 121) | pub fn set_generation(&self, generation: u64) { method enable_vcr_black_hole (line 129) | pub fn enable_vcr_black_hole(&self) { method disable_vcr_black_hole (line 152) | pub fn disable_vcr_black_hole(&self) { method device_name (line 160) | fn device_name(&self) -> &DeviceName { method backend_spec (line 164) | fn backend_spec(&self) -> Component { method guest_os (line 168) | fn guest_os(&self) -> Option { method as_crucible (line 172) | fn as_crucible(&self) -> Option<&CrucibleDisk> { type Inner (line 178) | struct Inner { method new (line 206) | pub(crate) fn new( method backend_spec (line 384) | fn backend_spec(&self, disk_id: Uuid) -> Component { method vcr (line 394) | fn vcr(&self, disk_id: Uuid) -> VolumeConstructionRequest { function run_crucible_downstairs (line 433) | fn run_crucible_downstairs( FILE: phd-tests/framework/src/disk/fat.rs constant MAX_DISK_SIZE_BYTES (line 20) | const MAX_DISK_SIZE_BYTES: usize = 1 << 20; constant BYTES_PER_SECTOR (line 25) | const BYTES_PER_SECTOR: usize = 512; constant BYTES_PER_DIRECTORY_ENTRY (line 28) | const BYTES_PER_DIRECTORY_ENTRY: usize = 32; constant ROOT_DIRECTORY_ENTRIES (line 31) | const ROOT_DIRECTORY_ENTRIES: usize = 512; constant TABLES_PER_VOLUME (line 35) | const TABLES_PER_VOLUME: usize = 2; type Sectors (line 39) | struct Sectors(usize); method needed_for_bytes (line 51) | const fn needed_for_bytes(bytes: usize) -> Self { function overhead_sectors (line 84) | fn overhead_sectors() -> Sectors { function total_usable_sectors (line 108) | fn total_usable_sectors() -> Sectors { type File (line 115) | struct File { type Error (line 121) | pub enum Error { type FatFilesystem (line 135) | pub struct FatFilesystem { method new (line 142) | pub fn new() -> Self { method add_file_from_str (line 151) | pub fn add_file_from_str( method add_file_from_bytes (line 162) | pub fn add_file_from_bytes( method as_bytes (line 196) | pub fn as_bytes(&self) -> anyhow::Result> { function cannot_add_file_too_large_for_disk (line 257) | fn cannot_add_file_too_large_for_disk() { function cannot_exceed_disk_size_limit_with_multiple_files (line 265) | fn cannot_exceed_disk_size_limit_with_multiple_files() { FILE: phd-tests/framework/src/disk/file.rs type BackingFile (line 19) | enum BackingFile { method create_from_source (line 32) | fn create_from_source( method path (line 58) | fn path(&self) -> Utf8PathBuf { method drop (line 67) | fn drop(&mut self) { type FileBackedDisk (line 84) | pub struct FileBackedDisk { method new_from_artifact (line 99) | pub(crate) fn new_from_artifact( method device_name (line 127) | fn device_name(&self) -> &DeviceName { method backend_spec (line 131) | fn backend_spec(&self) -> Component { method guest_os (line 140) | fn guest_os(&self) -> Option { FILE: phd-tests/framework/src/disk/in_memory.rs type InMemoryDisk (line 14) | pub struct InMemoryDisk { method new (line 23) | pub fn new( method device_name (line 33) | fn device_name(&self) -> &DeviceName { method backend_spec (line 37) | fn backend_spec(&self) -> Component { method guest_os (line 49) | fn guest_os(&self) -> Option { FILE: phd-tests/framework/src/disk/mod.rs type DiskError (line 36) | pub enum DiskError { type BlockSize (line 57) | pub enum BlockSize { method bytes (line 63) | fn bytes(&self) -> u64 { type DeviceName (line 84) | pub struct DeviceName(String); method new (line 87) | pub fn new(name: String) -> Self { method into_backend_name (line 91) | pub fn into_backend_name(self) -> BackendName { method into_string (line 96) | pub fn into_string(self) -> String { method as_str (line 100) | pub fn as_str(&self) -> &str { type BackendName (line 108) | pub struct BackendName(String); method into_string (line 111) | pub fn into_string(self) -> String { type DiskConfig (line 117) | pub trait DiskConfig: std::fmt::Debug + Send + Sync { method device_name (line 119) | fn device_name(&self) -> &DeviceName; method backend_spec (line 122) | fn backend_spec(&self) -> Component; method guest_os (line 126) | fn guest_os(&self) -> Option; method as_crucible (line 130) | fn as_crucible(&self) -> Option<&CrucibleDisk> { type DiskSource (line 137) | pub enum DiskSource<'a> { function kind (line 149) | pub(crate) fn kind(&self) -> &'static str { type DiskFactory (line 181) | pub(crate) struct DiskFactory { method new (line 201) | pub fn new( method get_guest_artifact_info (line 217) | async fn get_guest_artifact_info( method create_file_backed_disk (line 232) | pub(crate) async fn create_file_backed_disk( method create_crucible_disk (line 276) | pub(crate) async fn create_crucible_disk( method create_in_memory_disk (line 337) | pub(crate) async fn create_in_memory_disk( FILE: phd-tests/framework/src/guest_os/alpine.rs type Alpine (line 9) | pub(super) struct Alpine; method get_login_sequence (line 12) | fn get_login_sequence(&self) -> CommandSequence<'_> { method get_shell_prompt (line 21) | fn get_shell_prompt(&self) -> &'static str { method read_only_fs (line 25) | fn read_only_fs(&self) -> bool { method shell_command_sequence (line 29) | fn shell_command_sequence<'a>(&self, cmd: &'a str) -> CommandSequence<'a> { method graceful_reboot (line 36) | fn graceful_reboot(&self) -> CommandSequence<'_> { FILE: phd-tests/framework/src/guest_os/debian11_nocloud.rs type Debian11NoCloud (line 9) | pub(super) struct Debian11NoCloud; method get_login_sequence (line 12) | fn get_login_sequence(&self) -> CommandSequence<'_> { method get_shell_prompt (line 21) | fn get_shell_prompt(&self) -> &'static str { method read_only_fs (line 25) | fn read_only_fs(&self) -> bool { method graceful_reboot (line 29) | fn graceful_reboot(&self) -> CommandSequence<'_> { FILE: phd-tests/framework/src/guest_os/linux.rs function stty_enable_long_lines (line 11) | pub(super) fn stty_enable_long_lines<'a>( FILE: phd-tests/framework/src/guest_os/mod.rs type CommandSequenceEntry (line 24) | pub(super) enum CommandSequenceEntry<'a> { function write_str (line 53) | fn write_str(s: impl Into>) -> Self { function wait_for (line 57) | fn wait_for(s: impl Into>) -> Self { type CommandSequence (line 62) | pub(super) struct CommandSequence<'a>(pub Vec>); function extend (line 65) | fn extend(mut self, other: CommandSequence<'a>) -> CommandSequence<'a> { type GuestOs (line 71) | pub(super) trait GuestOs: Send + Sync { method get_login_sequence (line 74) | fn get_login_sequence(&self) -> CommandSequence<'_>; method get_shell_prompt (line 77) | fn get_shell_prompt(&self) -> &'static str; method read_only_fs (line 80) | fn read_only_fs(&self) -> bool; method shell_command_sequence (line 84) | fn shell_command_sequence<'a>(&self, cmd: &'a str) -> CommandSequence<... method graceful_reboot (line 95) | fn graceful_reboot(&self) -> CommandSequence<'_>; type GuestOsKind (line 101) | pub enum GuestOsKind { method is_linux (line 111) | pub fn is_linux(&self) -> bool { method is_windows (line 122) | pub fn is_windows(&self) -> bool { type Err (line 135) | type Err = std::io::Error; method from_str (line 137) | fn from_str(s: &str) -> Result { function get_guest_os_adapter (line 153) | pub(super) fn get_guest_os_adapter(kind: GuestOsKind) -> Box { FILE: phd-tests/framework/src/guest_os/shell_commands.rs function shell_command_sequence (line 19) | pub(super) fn shell_command_sequence( FILE: phd-tests/framework/src/guest_os/ubuntu22_04.rs type Ubuntu2204 (line 10) | pub(super) struct Ubuntu2204; method get_login_sequence (line 13) | fn get_login_sequence(&self) -> CommandSequence<'_> { method get_shell_prompt (line 28) | fn get_shell_prompt(&self) -> &'static str { method read_only_fs (line 32) | fn read_only_fs(&self) -> bool { method graceful_reboot (line 36) | fn graceful_reboot(&self) -> CommandSequence<'_> { FILE: phd-tests/framework/src/guest_os/windows.rs type WindowsVm (line 15) | pub struct WindowsVm<'a> { function run_powershell_command (line 23) | pub async fn run_powershell_command( type Target (line 48) | type Target = TestVm; function deref (line 50) | fn deref(&self) -> &Self::Target { constant CYGWIN_CMD (line 55) | const CYGWIN_CMD: &str = "C:\\cygwin\\cygwin.bat\r"; function prepend_reset_to_shell_command (line 63) | pub(super) fn prepend_reset_to_shell_command(cmd: &str) -> String { function get_login_sequence_for (line 75) | pub(super) fn get_login_sequence_for<'a>( FILE: phd-tests/framework/src/guest_os/windows_server_2016.rs type WindowsServer2016 (line 22) | pub(super) struct WindowsServer2016; method get_login_sequence (line 25) | fn get_login_sequence(&self) -> CommandSequence<'_> { method get_shell_prompt (line 29) | fn get_shell_prompt(&self) -> &'static str { method read_only_fs (line 33) | fn read_only_fs(&self) -> bool { method shell_command_sequence (line 37) | fn shell_command_sequence<'a>(&self, cmd: &'a str) -> CommandSequence<'a> { method graceful_reboot (line 44) | fn graceful_reboot(&self) -> CommandSequence<'_> { FILE: phd-tests/framework/src/guest_os/windows_server_2019.rs type WindowsServer2019 (line 18) | pub(super) struct WindowsServer2019; method get_login_sequence (line 21) | fn get_login_sequence(&self) -> CommandSequence<'_> { method get_shell_prompt (line 25) | fn get_shell_prompt(&self) -> &'static str { method read_only_fs (line 29) | fn read_only_fs(&self) -> bool { method shell_command_sequence (line 33) | fn shell_command_sequence<'a>(&self, cmd: &'a str) -> CommandSequence<'a> { method graceful_reboot (line 40) | fn graceful_reboot(&self) -> CommandSequence<'_> { FILE: phd-tests/framework/src/guest_os/windows_server_2022.rs type WindowsServer2022 (line 13) | pub(super) struct WindowsServer2022; method get_login_sequence (line 16) | fn get_login_sequence(&self) -> CommandSequence<'_> { method get_shell_prompt (line 20) | fn get_shell_prompt(&self) -> &'static str { method read_only_fs (line 24) | fn read_only_fs(&self) -> bool { method graceful_reboot (line 28) | fn graceful_reboot(&self) -> CommandSequence<'_> { FILE: phd-tests/framework/src/host_api/kvm.rs type nlist (line 20) | struct nlist { method default (line 34) | fn default() -> Self { function kvm_open (line 48) | fn kvm_open( function kvm_close (line 56) | fn kvm_close(kd: *const c_void) -> c_int; function kvm_nlist (line 58) | fn kvm_nlist(kd: *const c_void, nl: *mut nlist) -> c_int; function kvm_kread (line 60) | fn kvm_kread( function kvm_kwrite (line 67) | fn kvm_kwrite( type KvmHdl (line 76) | struct KvmHdl { method open (line 81) | fn open() -> Result { method drop (line 107) | fn drop(&mut self) { function find_symbol_va (line 116) | fn find_symbol_va(kvm_hdl: &KvmHdl, symbol: &str) -> Result { function read_from_va (line 142) | fn read_from_va(kvm_hdl: &KvmHdl, va: uintptr_t, buf: &mut [u8]) -> Resu... function write_to_va (line 168) | fn write_to_va(kvm_hdl: &KvmHdl, va: uintptr_t, buf: &mut [u8]) -> Resul... function read_u8_from_va (line 196) | fn read_u8_from_va(kvm_hdl: &KvmHdl, va: uintptr_t) -> Result { function read_u32_from_va (line 202) | fn read_u32_from_va(kvm_hdl: &KvmHdl, va: uintptr_t) -> Result { function write_u8_to_va (line 208) | fn write_u8_to_va(kvm_hdl: &KvmHdl, va: uintptr_t, value: u8) -> Result<... function write_u32_to_va (line 214) | fn write_u32_to_va(kvm_hdl: &KvmHdl, va: uintptr_t, value: u32) -> Resul... type SizedKernelGlobal (line 221) | trait SizedKernelGlobal: Sized + Default + Display { method read_from_va (line 223) | fn read_from_va(&mut self, kvm_hdl: &KvmHdl, va: uintptr_t) -> Result<... method write_to_va (line 226) | fn write_to_va(&self, kvm_hdl: &KvmHdl, va: uintptr_t) -> Result<()>; method write_to_va (line 230) | fn write_to_va(&self, kvm_hdl: &KvmHdl, va: uintptr_t) -> Result<()> { method read_from_va (line 234) | fn read_from_va(&mut self, kvm_hdl: &KvmHdl, va: uintptr_t) -> Result<... method write_to_va (line 241) | fn write_to_va(&self, kvm_hdl: &KvmHdl, va: uintptr_t) -> Result<()> { method read_from_va (line 245) | fn read_from_va(&mut self, kvm_hdl: &KvmHdl, va: uintptr_t) -> Result<... type KernelValueGuard (line 252) | struct KernelValueGuard { function new (line 273) | fn new(symbol: &'static str, value: T) -> Result { method drop (line 287) | fn drop(&mut self) { function set_vmm_globals (line 302) | pub fn set_vmm_globals() -> Result>> { FILE: phd-tests/framework/src/host_api/stubs.rs type VmmStateWriteGuard (line 7) | pub struct VmmStateWriteGuard; function set_vmm_globals (line 9) | pub fn set_vmm_globals() -> Result>> { FILE: phd-tests/framework/src/lib.rs type TestCtx (line 64) | pub struct TestCtx { method vm_config_builder (line 138) | pub fn vm_config_builder(&self, vm_name: &str) -> VmConfig<'_> { method environment_builder (line 144) | pub fn environment_builder(&self) -> EnvironmentSpec { method default_guest_os_artifact (line 151) | pub fn default_guest_os_artifact(&self) -> &str { method default_guest_os_kind (line 157) | pub async fn default_guest_os_kind(&self) -> anyhow::Result bool { method migration_base_enabled (line 170) | pub fn migration_base_enabled(&self) -> bool { method spawn_default_vm (line 176) | pub async fn spawn_default_vm( method spawn_vm (line 186) | pub async fn spawn_vm( method spawn_vm_with_spec (line 204) | pub async fn spawn_vm_with_spec( method spawn_successor_vm (line 223) | pub async fn spawn_successor_vm( method set_cleanup_task_outcome_receiver (line 248) | pub fn set_cleanup_task_outcome_receiver( type Framework (line 71) | pub struct Framework { method new (line 263) | pub async fn new(params: FrameworkParameters<'_>) -> anyhow::Result, fully_qualified_name: String) -> Tes... method reset (line 350) | pub async fn reset(&self) { method vm_config_builder (line 357) | pub fn vm_config_builder(&self, vm_name: &str) -> VmConfig<'_> { method environment_builder (line 368) | pub fn environment_builder(&self) -> EnvironmentSpec { method default_guest_os_artifact (line 375) | pub fn default_guest_os_artifact(&self) -> &str { method default_guest_os_kind (line 381) | pub async fn default_guest_os_kind(&self) -> anyhow::Result bool { method migration_base_enabled (line 398) | pub fn migration_base_enabled(&self) -> bool { method cleanup_task_channel (line 404) | pub(crate) fn cleanup_task_channel( method wait_for_cleanup_tasks (line 418) | async fn wait_for_cleanup_tasks(&self) { type FrameworkParameters (line 103) | pub struct FrameworkParameters<'a> { type CrucibleDownstairsSource (line 123) | pub enum CrucibleDownstairsSource { method fmt (line 437) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type BasePropolisSource (line 129) | pub enum BasePropolisSource<'a> { function fmt (line 448) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { FILE: phd-tests/framework/src/lifecycle.rs type Action (line 13) | pub enum Action<'a> { method lifecycle_test (line 38) | pub async fn lifecycle_test( FILE: phd-tests/framework/src/log_config.rs type LogConfig (line 15) | pub struct LogConfig { type OutputMode (line 22) | pub enum OutputMode { method get_handles (line 62) | pub(crate) fn get_handles( type Err (line 34) | type Err = std::io::Error; method from_str (line 36) | fn from_str(s: &str) -> Result { type LogFormat (line 98) | pub enum LogFormat { function create_file (line 107) | fn create_file(path: &impl AsRef) -> anyhow::Result { FILE: phd-tests/framework/src/port_allocator.rs type PortAllocatorError (line 15) | pub enum PortAllocatorError { type PortAllocator (line 20) | pub struct PortAllocator { method new (line 31) | pub fn new(range: Range) -> Self { method next (line 36) | pub fn next(&self) -> Result { method reset (line 49) | pub fn reset(&self) { FILE: phd-tests/framework/src/serial/mod.rs type OutputWaiter (line 23) | struct OutputWaiter { type Buffer (line 34) | trait Buffer: Send { method process_bytes (line 36) | fn process_bytes(&mut self, bytes: &[u8]); method clear (line 39) | fn clear(&mut self); method register_wait_for_output (line 42) | fn register_wait_for_output(&mut self, waiter: OutputWaiter); method cancel_wait_for_output (line 46) | fn cancel_wait_for_output(&mut self) -> Option; type BufferKind (line 51) | pub enum BufferKind { type TaskCommand (line 63) | enum TaskCommand { type SerialConsole (line 92) | pub struct SerialConsole { method new (line 105) | pub async fn new( method send_bytes (line 119) | pub fn send_bytes( method clear (line 129) | pub fn clear(&self) -> anyhow::Result<()> { method register_wait_for_string (line 143) | pub fn register_wait_for_string( method cancel_wait_for_string (line 156) | pub fn cancel_wait_for_string(&self) -> Result<()> { method change_buffer_kind (line 162) | pub fn change_buffer_kind(&self, kind: BufferKind) -> Result<()> { method set_repeated_character_debounce (line 168) | pub fn set_repeated_character_debounce( function new_buffer (line 178) | fn new_buffer( function serial_task (line 201) | async fn serial_task( FILE: phd-tests/framework/src/serial/raw_buffer.rs type RawBuffer (line 22) | pub(super) struct RawBuffer { method new (line 32) | pub(super) fn new(log_path: Utf8PathBuf) -> Result { method push_character (line 48) | fn push_character(&mut self, c: char) { method push_str (line 66) | fn push_str(&mut self, s: &str) { method satisfy_or_set_wait (line 90) | fn satisfy_or_set_wait(&mut self, waiter: OutputWaiter) { method process_bytes (line 114) | fn process_bytes(&mut self, bytes: &[u8]) { method clear (line 136) | fn clear(&mut self) { method register_wait_for_output (line 140) | fn register_wait_for_output(&mut self, waiter: OutputWaiter) { method cancel_wait_for_output (line 144) | fn cancel_wait_for_output(&mut self) -> Option { method drop (line 150) | fn drop(&mut self) { function make_buffer (line 163) | fn make_buffer() -> RawBuffer { function successful_wait_consumes_buffer_contents (line 177) | async fn successful_wait_consumes_buffer_contents() { function successful_wait_consumes_last_match (line 202) | async fn successful_wait_consumes_last_match() { FILE: phd-tests/framework/src/serial/vt80x24.rs constant SURFACE_ROWS (line 16) | const SURFACE_ROWS: usize = 24; type Vt80x24 (line 22) | pub(super) struct Vt80x24 { method new (line 42) | pub(super) fn new() -> Self { method apply_actions (line 52) | fn apply_actions(&mut self, actions: &[Action]) { method satisfy_or_set_wait (line 107) | fn satisfy_or_set_wait(&mut self, waiter: OutputWaiter) { method process_bytes (line 128) | fn process_bytes(&mut self, bytes: &[u8]) { method clear (line 133) | fn clear(&mut self) { method register_wait_for_output (line 142) | fn register_wait_for_output(&mut self, waiter: OutputWaiter) { method cancel_wait_for_output (line 146) | fn cancel_wait_for_output(&mut self) -> Option { function make_absolute_cursor_position (line 153) | fn make_absolute_cursor_position(col: usize, row: usize) -> Change { function trace_buffer_contents (line 160) | fn trace_buffer_contents(contents: &str) { FILE: phd-tests/framework/src/test_vm/config.rs type DiskInterface (line 28) | pub enum DiskInterface { type DiskBackend (line 34) | pub enum DiskBackend { type DiskRequest (line 41) | struct DiskRequest<'a> { type VmConfig (line 49) | pub struct VmConfig<'dr> { function new (line 63) | pub(crate) fn new( function cpus (line 93) | pub fn cpus(&mut self, cpus: u8) -> &mut Self { function memory_mib (line 98) | pub fn memory_mib(&mut self, mem: u64) -> &mut Self { function bootrom (line 103) | pub fn bootrom(&mut self, artifact: &str) -> &mut Self { function named (line 108) | pub fn named(&mut self, name: impl ToString) -> &mut Self { function cpuid (line 113) | pub fn cpuid(&mut self, entries: Vec) -> &mut Self { function guest_hv_interface (line 118) | pub fn guest_hv_interface( function vsock (line 126) | pub fn vsock(&mut self, guest_cid: u64, pci_device_num: u8) -> &mut Self { function fail_migration_exports (line 132) | pub fn fail_migration_exports(&mut self, exports: u32) -> &mut Self { function fail_migration_imports (line 142) | pub fn fail_migration_imports(&mut self, imports: u32) -> &mut Self { function boot_order (line 152) | pub fn boot_order(&mut self, disks: Vec<&'dr str>) -> &mut Self { function clear_boot_order (line 157) | pub fn clear_boot_order(&mut self) -> &mut Self { function boot_disk (line 167) | pub fn boot_disk( function data_disk (line 200) | pub fn data_disk( function vm_spec (line 218) | pub async fn vm_spec(&self, ctx: &TestCtx) -> anyhow::Result { function make_disk (line 418) | async fn make_disk( FILE: phd-tests/framework/src/test_vm/environment.rs type VmLocation (line 13) | pub enum VmLocation { type MetricsLocation (line 21) | pub enum MetricsLocation { type EnvironmentSpec (line 31) | pub struct EnvironmentSpec { method new (line 38) | pub(crate) fn new(location: VmLocation, propolis_artifact: &str) -> Se... method location (line 46) | pub fn location(&mut self, location: VmLocation) -> &mut Self { method propolis (line 51) | pub fn propolis(&mut self, artifact_name: &str) -> &mut Self { method metrics (line 56) | pub fn metrics(&mut self, metrics: Option) -> &mut Se... method build (line 61) | pub(crate) async fn build<'a>( type Environment (line 75) | pub(crate) enum Environment<'a> { function from_builder (line 80) | async fn from_builder( FILE: phd-tests/framework/src/test_vm/metrics.rs constant INTERVAL (line 26) | const INTERVAL: Duration = Duration::from_secs(300); function oximeter_logger (line 28) | fn oximeter_logger(log_config: LogConfig) -> Logger { type OximeterProducerInfo (line 47) | struct OximeterProducerInfo { type FakeOximeterServer (line 52) | pub(crate) struct FakeOximeterServer { method local_addr (line 62) | pub fn local_addr(&self) -> SocketAddr { method sampler (line 66) | pub fn sampler(&self) -> FakeOximeterSampler { type FakeOximeterServerState (line 56) | pub(crate) struct FakeOximeterServerState { method new (line 78) | fn new() -> Self { method set_producer_info (line 84) | async fn set_producer_info(&self, info: ProducerEndpoint) { type FakeOximeterSampler (line 73) | pub struct FakeOximeterSampler { method wait_for_propolis_stats (line 109) | pub async fn wait_for_propolis_stats( method sample_propolis_stats (line 142) | async fn sample_propolis_stats( function register_producer (line 175) | async fn register_producer( function spawn_fake_oximeter_server (line 190) | pub fn spawn_fake_oximeter_server(log_config: LogConfig) -> FakeOximeter... FILE: phd-tests/framework/src/test_vm/mod.rs type PropolisClientError (line 53) | type PropolisClientError = type PropolisClientResult (line 55) | type PropolisClientResult = StdResult, PropolisClien... type VmStateError (line 70) | pub enum VmStateError { type ReplacementComponents (line 80) | type ReplacementComponents = HashMap; type MigrationInfo (line 83) | struct MigrationInfo { type MigrationTimeout (line 90) | pub enum MigrationTimeout { method from (line 109) | fn from(value: std::time::Duration) -> Self { constant MIGRATION_SECS_PER_GUEST_GIB (line 100) | const MIGRATION_SECS_PER_GUEST_GIB: u64 = 90; method default (line 103) | fn default() -> Self { type SerialOutputTimeout (line 117) | pub enum SerialOutputTimeout { method from (line 128) | fn from(value: std::time::Duration) -> Self { function from (line 134) | fn from(value: SerialOutputTimeout) -> Self { type InstanceConsoleSource (line 143) | enum InstanceConsoleSource<'a> { type VmState (line 151) | enum VmState { type StatusCheck (line 162) | enum StatusCheck { type ShellOutputExecutor (line 167) | pub struct ShellOutputExecutor<'ctx> { function ignore_status (line 174) | pub fn ignore_status(mut self) -> ShellOutputExecutor<'a> { function check_ok (line 179) | pub fn check_ok(mut self) -> ShellOutputExecutor<'a> { function check_err (line 184) | pub fn check_err(mut self) -> ShellOutputExecutor<'a> { type Output (line 191) | type Output = Result; type IntoFuture (line 192) | type IntoFuture = futures::future::BoxFuture<'a, Result>; function into_future (line 194) | fn into_future(self) -> Self::IntoFuture { type TestVm (line 262) | pub struct TestVm { method new (line 305) | pub(crate) async fn new( method start_local_vm (line 340) | fn start_local_vm( method name (line 385) | pub fn name(&self) -> &str { method cloned_disk_handles (line 389) | pub fn cloned_disk_handles(&self) -> Vec VmSpec { method environment_spec (line 397) | pub fn environment_spec(&self) -> EnvironmentSpec { method instance_properties (line 401) | pub fn instance_properties(&self) -> InstanceProperties { method metrics_sampler (line 410) | pub fn metrics_sampler(&self) -> Option { method instance_ensure_internal (line 417) | async fn instance_ensure_internal<'a>( method guest_os_kind (line 527) | pub fn guest_os_kind(&self) -> GuestOsKind { method get_windows_vm (line 533) | pub fn get_windows_vm(&self) -> Option> { method launch (line 540) | pub async fn launch(&mut self) -> Result<()> { method instance_ensure (line 548) | pub async fn instance_ensure(&mut self) -> Result<()> { method run (line 564) | pub async fn run(&self) -> PropolisClientResult<()> { method stop (line 569) | pub async fn stop(&self) -> PropolisClientResult<()> { method reset (line 575) | pub async fn reset(&self) -> PropolisClientResult<()> { method put_instance_state (line 580) | async fn put_instance_state( method get (line 590) | pub async fn get(&self) -> Result { method get_spec (line 601) | pub async fn get_spec(&self) -> Result { method migrate_from (line 622) | pub async fn migrate_from( method generate_replacement_components (line 713) | fn generate_replacement_components(&self) -> ReplacementComponents { method get_migration_state (line 740) | pub async fn get_migration_state( method replace_crucible_vcr (line 746) | pub async fn replace_crucible_vcr( method get_serial_console_history (line 779) | pub async fn get_serial_console_history( method wait_for_state (line 793) | pub async fn wait_for_state( method wait_to_boot (line 839) | pub async fn wait_to_boot(&self) -> Result<()> { method wait_for_serial_output (line 918) | pub async fn wait_for_serial_output( method establish_serial_console_echo (line 965) | async fn establish_serial_console_echo( method run_shell_command (line 1016) | pub fn run_shell_command<'a>( method graceful_reboot (line 1027) | pub async fn graceful_reboot(&self) -> Result<()> { method run_command_sequence (line 1035) | async fn run_command_sequence( method send_serial_str (line 1068) | pub async fn send_serial_str(&self, string: &str) -> Result<()> { method serial_console (line 1075) | fn serial_console(&self) -> Result<&SerialConsole> { method send_serial_bytes (line 1082) | fn send_serial_bytes( method clear_serial_buffer (line 1089) | fn clear_serial_buffer(&self) -> Result<()> { method change_serial_buffer_kind (line 1093) | fn change_serial_buffer_kind(&self, kind: BufferKind) -> Result<()> { method set_serial_repeated_character_debounce (line 1097) | fn set_serial_repeated_character_debounce( method guest_os_has_read_only_fs (line 1105) | pub fn guest_os_has_read_only_fs(&self) -> bool { method serial_log_file_path (line 1111) | fn serial_log_file_path(&self) -> Utf8PathBuf { method drop (line 1120) | fn drop(&mut self) { function try_ensure_vm_destroyed (line 1189) | async fn try_ensure_vm_destroyed(client: &Client) { type TestVmManualStop (line 1256) | pub struct TestVmManualStop { method new (line 1266) | pub fn new( method wait_for_stop (line 1273) | async fn wait_for_stop( FILE: phd-tests/framework/src/test_vm/server.rs type ServerProcessParameters (line 24) | pub struct ServerProcessParameters<'a> { type PropolisServer (line 45) | pub struct PropolisServer { method new (line 52) | pub(crate) fn new( method server_addr (line 134) | pub(crate) fn server_addr(&self) -> SocketAddrV4 { method core (line 140) | pub(super) fn core(&self) { method kill (line 171) | pub(super) fn kill(&mut self) { method drop (line 197) | fn drop(&mut self) { FILE: phd-tests/framework/src/test_vm/spec.rs type VmSpec (line 19) | pub struct VmSpec { method get_disk_by_device_name (line 39) | pub fn get_disk_by_device_name( method new (line 48) | pub(crate) fn new( method set_vm_name (line 66) | pub(crate) fn set_vm_name(&mut self, name: String) { method instance_spec (line 70) | pub(crate) fn instance_spec(&self) -> InstanceSpec { method set_crucible_backends (line 78) | fn set_crucible_backends(&self, spec: &mut InstanceSpec) { method refresh_sled_identifiers (line 112) | pub(crate) fn refresh_sled_identifiers(&mut self) { FILE: phd-tests/framework/src/zfs.rs type DatasetName (line 13) | struct DatasetName(String); type SnapshotName (line 16) | struct SnapshotName(String); type CloneName (line 19) | struct CloneName(String); type Dataset (line 24) | struct Dataset { method from_path (line 200) | fn from_path(path: &Utf8Path) -> anyhow::Result { type Snapshot (line 39) | struct Snapshot { method create_from_dataset (line 47) | fn create_from_dataset(dataset: &DatasetName) -> anyhow::Result { method drop (line 56) | fn drop(&mut self) { type Clone (line 65) | struct Clone { method drop (line 82) | fn drop(&mut self) { type ClonedFile (line 91) | pub struct ClonedFile { method create_from_path (line 102) | pub fn create_from_path(path: &Utf8Path) -> anyhow::Result { method path (line 130) | pub fn path(&self) -> Utf8PathBuf { method create_from_paths_and_snapshot (line 140) | fn create_from_paths_and_snapshot( function parse_zfs_list_output (line 232) | fn parse_zfs_list_output( function zfs_command (line 300) | fn zfs_command( FILE: phd-tests/runner/build.rs function main (line 7) | fn main() -> anyhow::Result<()> { function set_crucible_git_rev (line 14) | fn set_crucible_git_rev() -> anyhow::Result<()> { FILE: phd-tests/runner/src/config.rs type Command (line 16) | pub enum Command { type ProcessArgs (line 24) | pub struct ProcessArgs { type RunOptions (line 39) | pub struct RunOptions { method artifact_directory (line 253) | pub fn artifact_directory(&self) -> Utf8PathBuf { method crucible_downstairs (line 257) | pub fn crucible_downstairs( method base_propolis (line 300) | pub fn base_propolis(&self) -> Option> { type ListOptions (line 219) | pub struct ListOptions { type ArtifactCommit (line 232) | enum ArtifactCommit { type Err (line 238) | type Err = anyhow::Error; method from_str (line 239) | fn from_str(s: &str) -> Result { FILE: phd-tests/runner/src/execute.rs type ExecutionStats (line 18) | pub struct ExecutionStats { type Status (line 42) | enum Status { type Execution (line 47) | struct Execution { function run_tests_with_ctx (line 53) | pub async fn run_tests_with_ctx( function set_sigint_handler (line 188) | fn set_sigint_handler() -> watch::Receiver { FILE: phd-tests/runner/src/fixtures.rs type TestFixtures (line 13) | pub struct TestFixtures { method new (line 20) | pub fn new(test_context: Arc) -> Result { method execution_setup (line 26) | pub fn execution_setup(&mut self) -> Result<()> { method execution_cleanup (line 36) | pub fn execution_cleanup(&mut self) -> Result<()> { method test_setup (line 42) | pub fn test_setup(&mut self) -> Result<()> { method test_cleanup (line 52) | pub async fn test_cleanup(&mut self) -> Result<()> { FILE: phd-tests/runner/src/main.rs function main (line 24) | async fn main() -> anyhow::Result<()> { function run_tests (line 50) | async fn run_tests( function list_tests (line 116) | fn list_tests(list_opts: &ListOptions) { function set_tracing_subscriber (line 131) | fn set_tracing_subscriber(args: &ProcessArgs) { FILE: phd-tests/testcase/src/lib.rs type TestSkippedError (line 15) | pub enum TestSkippedError { type TestOutcome (line 22) | pub enum TestOutcome { type TestFunction (line 37) | pub struct TestFunction { type TestCase (line 42) | pub struct TestCase { method new (line 58) | pub const fn new( method fully_qualified_name (line 67) | pub fn fully_qualified_name(&self) -> String { method name (line 72) | pub fn name(&self) -> &str { method run (line 78) | pub async fn run(&self, ctx: &TestCtx) -> TestOutcome { function all_test_cases (line 86) | pub fn all_test_cases() -> impl Iterator { function filtered_test_cases (line 93) | pub fn filtered_test_cases<'rule>( FILE: phd-tests/testcase_macro/src/lib.rs function phd_testcase (line 20) | pub fn phd_testcase(_attrib: TokenStream, input: TokenStream) -> TokenSt... function phd_skip (line 85) | pub fn phd_skip(args: TokenStream) -> TokenStream { FILE: phd-tests/tests/src/boot_order.rs function configurable_boot_order (line 52) | async fn configurable_boot_order(ctx: &TestCtx) { function unbootable_disk_skipped (line 118) | async fn unbootable_disk_skipped(ctx: &TestCtx) { function guest_can_adjust_boot_order (line 237) | async fn guest_can_adjust_boot_order(ctx: &TestCtx) { function boot_order_source_priority (line 404) | async fn boot_order_source_priority(ctx: &TestCtx) { function nvme_boot_option_description (line 511) | async fn nvme_boot_option_description(ctx: &TestCtx) { FILE: phd-tests/tests/src/boot_order/efi_utils.rs constant EDK2_FIRMWARE_VOL_GUID (line 42) | pub(crate) const EDK2_FIRMWARE_VOL_GUID: &[u8; 16] = &[ constant EDK2_UI_APP_GUID (line 46) | pub(crate) const EDK2_UI_APP_GUID: &[u8; 16] = &[ constant EDK2_EFI_SHELL_GUID (line 50) | pub(crate) const EDK2_EFI_SHELL_GUID: &[u8; 16] = &[ constant BOOT_CURRENT_VAR (line 61) | pub(crate) const BOOT_CURRENT_VAR: &str = constant BOOT_ORDER_VAR (line 63) | pub(crate) const BOOT_ORDER_VAR: &str = function bootvar (line 66) | pub(crate) fn bootvar(num: u16) -> String { function efipath (line 70) | pub(crate) fn efipath(varname: &str) -> String { type EfiLoadOption (line 76) | pub(crate) struct EfiLoadOption { method parse_from (line 212) | pub(crate) fn parse_from( method pci_device_function (line 280) | pub fn pci_device_function(&self) -> (u8, u8) { type EfiLoadPath (line 82) | pub(crate) enum EfiLoadPath { method matches_fw_file (line 88) | pub fn matches_fw_file( method matches_pci_device_function (line 104) | pub fn matches_pci_device_function( method as_pci_device_function (line 120) | pub fn as_pci_device_function(&self) -> Option<(u8, u8)> { type DevicePath (line 137) | pub(crate) enum DevicePath { method parse_from (line 149) | fn parse_from(bytes: &mut Cursor<&[u8]>) -> Result { function unhex (line 295) | fn unhex(s: &str) -> Vec { function read_efivar (line 313) | pub(crate) async fn read_efivar( function write_efivar (line 332) | pub(crate) async fn write_efivar( function discover_boot_option_numbers (line 406) | pub(crate) async fn discover_boot_option_numbers( function find_option_in_boot_order (line 474) | pub(crate) fn find_option_in_boot_order( function remove_boot_entry (line 492) | pub(crate) async fn remove_boot_entry( FILE: phd-tests/tests/src/cpuid.rs function cpuid_entry (line 13) | fn cpuid_entry( function cpuid_instance_spec_round_trip_test (line 25) | async fn cpuid_instance_spec_round_trip_test(ctx: &TestCtx) { constant BRAND_STRING (line 51) | const BRAND_STRING: &[u8; 48] = function inject_brand_string (line 59) | fn inject_brand_string(cpuid: &mut CpuidSet) { function verify_guest_brand_string (line 96) | async fn verify_guest_brand_string(vm: &TestVm) -> anyhow::Result<()> { function launch_cpuid_smoke_test_vm (line 108) | async fn launch_cpuid_smoke_test_vm( function cpuid_boot_test (line 142) | async fn cpuid_boot_test(ctx: &TestCtx) { function cpuid_migrate_smoke_test (line 148) | async fn cpuid_migrate_smoke_test(ctx: &TestCtx) { type LinuxGuestTopo (line 167) | struct LinuxGuestTopo<'a> { function cpu_stem (line 172) | fn cpu_stem(vcpu: u8) -> String { function new (line 176) | async fn new(vm: &'a TestVm) -> Self { function vendor_string (line 204) | async fn vendor_string(&self) -> String { function cpus (line 218) | async fn cpus(&self) -> u8 { function physical_package_ids (line 228) | async fn physical_package_ids(&self) -> impl Iterator { function thread_siblings (line 256) | async fn thread_siblings(&self) -> impl Iterator { function guest_cpu_topo_test (line 280) | async fn guest_cpu_topo_test(ctx: &TestCtx) { FILE: phd-tests/tests/src/crucible/migrate.rs function smoke_test (line 11) | async fn smoke_test(ctx: &TestCtx) { function load_test (line 41) | async fn load_test(ctx: &TestCtx) { FILE: phd-tests/tests/src/crucible/mod.rs function add_crucible_boot_disk_or_skip (line 16) | fn add_crucible_boot_disk_or_skip<'a>( function add_default_boot_disk (line 39) | fn add_default_boot_disk<'a>( FILE: phd-tests/tests/src/crucible/smoke.rs function boot_test (line 15) | async fn boot_test(ctx: &TestCtx) { function api_reboot_test (line 24) | async fn api_reboot_test(ctx: &TestCtx) { function guest_reboot_test (line 36) | async fn guest_reboot_test(ctx: &TestCtx) { function shutdown_persistence_test (line 48) | async fn shutdown_persistence_test(ctx: &TestCtx) { function vcr_replace_during_start_test (line 92) | async fn vcr_replace_during_start_test(ctx: &TestCtx) { FILE: phd-tests/tests/src/disk.rs function launch_vm_and_find_in_memory_disk (line 19) | async fn launch_vm_and_find_in_memory_disk( function mount_in_memory_disk (line 82) | async fn mount_in_memory_disk( function in_memory_backend_smoke_test (line 116) | async fn in_memory_backend_smoke_test(ctx: &TestCtx) { function in_memory_backend_migration_test (line 147) | async fn in_memory_backend_migration_test(ctx: &TestCtx) { FILE: phd-tests/tests/src/framework.rs function multiline_serial_test (line 11) | async fn multiline_serial_test(ctx: &TestCtx) { function long_line_serial_test (line 21) | async fn long_line_serial_test(ctx: &TestCtx) { FILE: phd-tests/tests/src/hw.rs function lspci_lifecycle_test (line 9) | async fn lspci_lifecycle_test(ctx: &TestCtx) { FILE: phd-tests/tests/src/hyperv.rs function guest_detect_hyperv (line 25) | async fn guest_detect_hyperv(vm: &TestVm) -> anyhow::Result<()> { function hyperv_smoke_test (line 55) | async fn hyperv_smoke_test(ctx: &TestCtx) { function hyperv_lifecycle_test (line 78) | async fn hyperv_lifecycle_test(ctx: &TestCtx) { function hyperv_reference_tsc_clocksource_test (line 106) | async fn hyperv_reference_tsc_clocksource_test(ctx: &TestCtx) { function hyperv_reference_tsc_elapsed_time_test (line 166) | async fn hyperv_reference_tsc_elapsed_time_test(ctx: &TestCtx) { FILE: phd-tests/tests/src/migrate.rs function smoke_test (line 16) | async fn smoke_test(ctx: &TestCtx) { function serial_history (line 21) | async fn serial_history(ctx: &TestCtx) { function can_migrate_from_base (line 35) | async fn can_migrate_from_base(ctx: &TestCtx) { function serial_history (line 41) | async fn serial_history(ctx: &TestCtx) { function migration_from_base_and_back (line 53) | async fn migration_from_base_and_back(ctx: &TestCtx) { function spawn_base_vm (line 91) | async fn spawn_base_vm(ctx: &TestCtx, name: &str) -> Result { function migrate_running_process (line 117) | async fn migrate_running_process(ctx: &TestCtx) { function import_failure (line 137) | async fn import_failure(ctx: &TestCtx) { function export_failure (line 207) | async fn export_failure(ctx: &TestCtx) { function mk_dirt (line 275) | async fn mk_dirt(vm: &TestVm) -> phd_testcase::Result<()> { function check_dirt (line 295) | async fn check_dirt(vm: &TestVm) -> phd_testcase::Result<()> { function multiple_migrations (line 303) | async fn multiple_migrations(ctx: &TestCtx) { function run_smoke_test (line 321) | async fn run_smoke_test(ctx: &TestCtx, mut source: TestVm) -> Result<()> { function run_serial_history_test (line 350) | async fn run_serial_history_test( function migration_ensures_instance_metadata (line 389) | async fn migration_ensures_instance_metadata(ctx: &TestCtx) { function vm_reaches_destroyed_after_migration_out (line 434) | async fn vm_reaches_destroyed_after_migration_out(ctx: &TestCtx) { FILE: phd-tests/tests/src/server_state_machine.rs function instance_start_stop_test (line 17) | async fn instance_start_stop_test(ctx: &TestCtx) { function instance_stop_unstarted_test (line 33) | async fn instance_stop_unstarted_test(ctx: &TestCtx) { function instance_stop_causes_destroy_test (line 49) | async fn instance_stop_causes_destroy_test(ctx: &TestCtx) { function instance_reset_test (line 73) | async fn instance_reset_test(ctx: &TestCtx) { function instance_reset_requires_running_test (line 104) | async fn instance_reset_requires_running_test(ctx: &TestCtx) { function stop_while_blocked_on_start_test (line 114) | async fn stop_while_blocked_on_start_test(ctx: &TestCtx) { FILE: phd-tests/tests/src/smoke.rs function nproc_test (line 9) | async fn nproc_test(ctx: &TestCtx) { function api_reboot_test (line 20) | async fn api_reboot_test(ctx: &TestCtx) { function guest_reboot_test (line 29) | async fn guest_reboot_test(ctx: &TestCtx) { function instance_spec_get_test (line 38) | async fn instance_spec_get_test(ctx: &TestCtx) { FILE: phd-tests/tests/src/stats.rs constant NANOS_PER_SEC (line 19) | const NANOS_PER_SEC: f64 = 1_000_000_000.0; type VcpuState (line 23) | enum VcpuState { type VcpuUsageMetric (line 31) | struct VcpuUsageMetric { type VirtualMachineMetrics (line 60) | struct VirtualMachineMetrics { method vcpu_state_total (line 109) | fn vcpu_state_total(&self, state: &VcpuState) -> u64 { method update_metric_times (line 115) | fn update_metric_times(&mut self, metric_time: DateTime) { method add_producer_result (line 121) | fn add_producer_result(&mut self, samples: &[Sample]) { function vm_metrics_snapshot (line 67) | async fn vm_metrics_snapshot( function producer_results_as_vm_metrics (line 80) | fn producer_results_as_vm_metrics( function instance_vcpu_stats (line 199) | async fn instance_vcpu_stats(ctx: &TestCtx) { FILE: phd-tests/tests/src/vsock.rs constant GUEST_CID (line 7) | const GUEST_CID: u64 = 16; constant PCI_DEV_NUM (line 8) | const PCI_DEV_NUM: u8 = 26; function vsock_smoke_test (line 11) | async fn vsock_smoke_test(ctx: &TestCtx) { function vsock_get_cid (line 26) | async fn vsock_get_cid(ctx: &TestCtx) { FILE: xtask/src/external.rs type External (line 33) | pub struct External { method exec_bin (line 45) | pub fn exec_bin( method exec_common (line 58) | fn exec_common(mut self, args: &[&str]) -> Result<()> { function new_command (line 64) | fn new_command() -> Command { function cargo_command (line 71) | pub fn cargo_command(location: CargoLocation) -> Command { type CargoLocation (line 86) | pub enum CargoLocation { method resolve (line 93) | fn resolve(self) -> Command { type SanitizedEnvVars (line 105) | struct SanitizedEnvVars { method new (line 112) | const fn new() -> Self { method matches (line 126) | fn matches(&self, key: &str) -> bool { FILE: xtask/src/main.rs type Args (line 19) | struct Args { type Cmds (line 26) | enum Cmds { function main (line 58) | fn main() -> Result<()> { FILE: xtask/src/task_clippy.rs function cmd_clippy (line 11) | pub(crate) fn cmd_clippy(strict: bool, quiet: bool) -> Result<()> { FILE: xtask/src/task_fmt.rs function cmd_fmt (line 11) | pub(crate) fn cmd_fmt() -> Result<()> { FILE: xtask/src/task_license.rs type LicenseRc (line 14) | struct LicenseRc { type LicenseHeader (line 18) | struct LicenseHeader { type LicenseEnt (line 25) | struct LicenseEnt { function commentify (line 29) | fn commentify(raw: String) -> Vec { function check_file (line 33) | fn check_file(fp: File, needle: &[String]) -> Result> { function cmd_license (line 50) | pub(crate) fn cmd_license() -> Result<()> { FILE: xtask/src/task_phd.rs type Cmd (line 45) | pub(crate) enum Cmd { method run (line 258) | pub(crate) fn run(self) -> anyhow::Result<()> { type RunArgs (line 71) | pub(crate) struct RunArgs { type PropolisArgs (line 105) | struct PropolisArgs { type BasePropolisArgs (line 130) | struct BasePropolisArgs { method configure_command (line 427) | fn configure_command(&self, cmd: &mut Command) { type CrucibleArgs (line 195) | struct CrucibleArgs { method configure_command (line 411) | fn configure_command(&self, cmd: &mut Command) { type ArtifactStoreArgs (line 242) | struct ArtifactStoreArgs { function build_bin (line 456) | fn build_bin( function mkdir (line 489) | fn mkdir( function run_exit_code (line 504) | fn run_exit_code(cmd: &mut Command) -> anyhow::Result { function delete_old_tmps (line 519) | fn delete_old_tmps( type PrettyCmd (line 607) | struct PrettyCmd<'a>(&'a Command); function fmt (line 610) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function relativize (line 632) | fn relativize(path: &Utf8Path) -> &Utf8Path { FILE: xtask/src/task_prepush.rs function cmd_prepush (line 9) | pub(crate) fn cmd_prepush(quiet: bool) -> Result<()> { FILE: xtask/src/task_style.rs function check_test_names (line 13) | fn check_test_names() -> Result<()> { function cmd_style (line 66) | pub(crate) fn cmd_style() -> Result<()> { FILE: xtask/src/util.rs function workspace_root (line 6) | pub(crate) fn workspace_root() -> Result {