MCPcopy Create free account
hub / github.com/Ruddle/Fomos / add_request

Method add_request

bootloader/kernel/src/virtio.rs:522–537  ·  view source on GitHub ↗
(&mut self, desc_id: u16, desc_next_id: u16, data: T)

Source from the content-addressed store, hash-verified

520 }
521
522 pub fn add_request<T>(&mut self, desc_id: u16, desc_next_id: u16, data: T) {
523 unsafe {
524 let descs = self.common.cap.queue_desc as *mut Desc;
525 let mut desc = descs.offset(desc_id as isize).read_volatile();
526 desc.len = core::intrinsics::size_of_val(&data) as u32;
527 // desc.len = data.len() as u32;
528 let data_ptr = desc.addr as *mut T;
529 data_ptr.write_volatile(data);
530
531 desc.flags = VIRTQ_DESC_F_NEXT;
532 desc.next = desc_next_id;
533 descs.offset(desc_id as isize).write_volatile(desc);
534 self.set_writable(desc_next_id);
535 self.set_available(desc_id);
536 };
537 }
538
539 pub fn kick(&mut self, queue_select: u16) {
540 unsafe {

Callers 1

requestFunction · 0.80

Calls 2

set_writableMethod · 0.80
set_availableMethod · 0.80

Tested by

no test coverage detected