diff options
author | David 'Digit' Turner <digit@android.com> | 2010-12-22 22:35:58 +0100 |
---|---|---|
committer | David 'Digit' Turner <digit@android.com> | 2011-01-02 22:03:45 +0100 |
commit | 707c8a8975842105dd04d61a416ee175d033b94d (patch) | |
tree | c282d07124492a6bf4261383b4d54de7a4c02c27 /vl-android.c | |
parent | c611a19e65c13248bfd881a2d30681d7e24ea773 (diff) | |
download | external_qemu-707c8a8975842105dd04d61a416ee175d033b94d.zip external_qemu-707c8a8975842105dd04d61a416ee175d033b94d.tar.gz external_qemu-707c8a8975842105dd04d61a416ee175d033b94d.tar.bz2 |
upstream: Move bottom-half handlers to async.c
Change-Id: Ibd4321edb2abe349d32483a60fdb94a282f22240
Diffstat (limited to 'vl-android.c')
-rw-r--r-- | vl-android.c | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/vl-android.c b/vl-android.c index 3fb50ea..dd7a255 100644 --- a/vl-android.c +++ b/vl-android.c @@ -2157,110 +2157,6 @@ void qemu_service_io(void) } /***********************************************************/ -/* bottom halves (can be seen as timers which expire ASAP) */ - -struct QEMUBH { - QEMUBHFunc *cb; - void *opaque; - int scheduled; - int idle; - int deleted; - QEMUBH *next; -}; - -static QEMUBH *first_bh = NULL; - -QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque) -{ - QEMUBH *bh; - bh = qemu_mallocz(sizeof(QEMUBH)); - bh->cb = cb; - bh->opaque = opaque; - bh->next = first_bh; - first_bh = bh; - return bh; -} - -int qemu_bh_poll(void) -{ - QEMUBH *bh, **bhp; - int ret; - - ret = 0; - for (bh = first_bh; bh; bh = bh->next) { - if (!bh->deleted && bh->scheduled) { - bh->scheduled = 0; - if (!bh->idle) - ret = 1; - bh->idle = 0; - bh->cb(bh->opaque); - } - } - - /* remove deleted bhs */ - bhp = &first_bh; - while (*bhp) { - bh = *bhp; - if (bh->deleted) { - *bhp = bh->next; - qemu_free(bh); - } else - bhp = &bh->next; - } - - return ret; -} - -void qemu_bh_schedule_idle(QEMUBH *bh) -{ - if (bh->scheduled) - return; - bh->scheduled = 1; - bh->idle = 1; -} - -void qemu_bh_schedule(QEMUBH *bh) -{ - if (bh->scheduled) - return; - bh->scheduled = 1; - bh->idle = 0; - /* stop the currently executing CPU to execute the BH ASAP */ - qemu_notify_event(); -} - -void qemu_bh_cancel(QEMUBH *bh) -{ - bh->scheduled = 0; -} - -void qemu_bh_delete(QEMUBH *bh) -{ - bh->scheduled = 0; - bh->deleted = 1; -} - -void qemu_bh_update_timeout(int *timeout) -{ - QEMUBH *bh; - - for (bh = first_bh; bh; bh = bh->next) { - if (!bh->deleted && bh->scheduled) { - if (bh->idle) { - /* idle bottom halves will be polled at least - * every 10ms */ - *timeout = MIN(10, *timeout); - } else { - /* non-idle bottom halves will be executed - * immediately */ - *timeout = 0; - break; - } - } - } -} - -/***********************************************************/ /* machine registration */ static QEMUMachine *first_machine = NULL; |