MCPcopy Create free account
hub / github.com/Dstack-TEE/dstack / qemu_loader_append

Function qemu_loader_append

dstack-mr/src/acpi.rs:375–415  ·  view source on GitHub ↗

Appends a serialized QEMU loader command to the data buffer.

(data: &mut Vec<u8>, cmd: LoaderCmd)

Source from the content-addressed store, hash-verified

373
374/// Appends a serialized QEMU loader command to the data buffer.
375fn qemu_loader_append(data: &mut Vec<u8>, cmd: LoaderCmd) {
376 match cmd {
377 LoaderCmd::Allocate {
378 file,
379 alignment,
380 zone,
381 } => {
382 data.extend_from_slice(&[0x01, 0x00, 0x00, 0x00]);
383 append_fixed_string(data, file);
384 data.extend_from_slice(&alignment.to_le_bytes());
385 data.push(zone);
386 data.resize(data.len() + 63, 0); // Padding
387 }
388 LoaderCmd::AddPtr {
389 pointer_file,
390 pointee_file,
391 pointer_offset,
392 pointer_size,
393 } => {
394 data.extend_from_slice(&[0x02, 0x00, 0x00, 0x00]);
395 append_fixed_string(data, pointer_file);
396 append_fixed_string(data, pointee_file);
397 data.extend_from_slice(&pointer_offset.to_le_bytes());
398 data.push(pointer_size);
399 data.resize(data.len() + 7, 0); // Padding
400 }
401 LoaderCmd::AddChecksum {
402 file,
403 result_offset,
404 start,
405 length,
406 } => {
407 data.extend_from_slice(&[0x03, 0x00, 0x00, 0x00]);
408 append_fixed_string(data, file);
409 data.extend_from_slice(&result_offset.to_le_bytes());
410 data.extend_from_slice(&start.to_le_bytes());
411 data.extend_from_slice(&length.to_le_bytes());
412 data.resize(data.len() + 56, 0); // Padding
413 }
414 }
415}
416
417/// ACPI table header (first 8 bytes of every ACPI table)
418#[derive(Debug, Decode)]

Callers 1

appendMethod · 0.85

Calls 2

append_fixed_stringFunction · 0.85
lenMethod · 0.45

Tested by

no test coverage detected