(&mut self, desc_id: u16, desc_next_id: u16, data: T)
| 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 { |
no test coverage detected