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

Method poll

bootloader/kernel/src/drivers/virtio_gpu.rs:552–585  ·  view source on GitHub ↗
(
        self: core::pin::Pin<&mut Self>,
        cx: &mut core::task::Context<'_>,
    )

Source from the content-addressed store, hash-verified

550impl futures::future::Future for IdWait {
551 type Output = ();
552 fn poll(
553 self: core::pin::Pin<&mut Self>,
554 cx: &mut core::task::Context<'_>,
555 ) -> core::task::Poll<Self::Output> {
556 {
557 let val = &mut WAKERS.lock()[self.id];
558 match val {
559 IdWaker::None => {
560 let aw = AtomicWaker::new();
561 aw.register(&cx.waker());
562 *val = IdWaker::Waker(aw);
563
564 return core::task::Poll::Pending;
565 }
566 IdWaker::Done => {
567 *val = IdWaker::None;
568 return core::task::Poll::Ready(());
569 }
570 IdWaker::Waker(e) => {
571 e.register(&cx.waker());
572 }
573 }
574 }
575 {
576 let val = &mut WAKERS.lock()[self.id];
577 match val {
578 IdWaker::Done => {
579 *val = IdWaker::None;
580 core::task::Poll::Ready(())
581 }
582 _ => core::task::Poll::Pending,
583 }
584 }
585 }
586}
587
588#[repr(u32)]

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected