Exemple #1
0
/*
 * Wait for a keycode to arrive.
 * Uses the keyboard wait queue to sleep until
 * a keycode arrives.
 */
Keycode Wait_For_Key(void) {
    bool gotKey, iflag;
    Keycode keycode = KEY_UNKNOWN;

    // see if we still have input from the qemu command line to hand off
    keycode = Get_Test_Input();
    if (keycode != KEY_UNKNOWN) {
        return keycode;
    }

    iflag = Begin_Int_Atomic();

    do {
        gotKey = !Is_Queue_Empty();
        if (gotKey)
            keycode = Dequeue_Keycode();
        else
            Wait(&s_waitQueue);
    }
    while (!gotKey);

    End_Int_Atomic(iflag);

    return keycode;
}
Exemple #2
0
/*
 * Poll for a key event.
 * Returns true if a key is available,
 * false if not.  If a key event is available,
 * it will be stored in the location pointed to
 * by keycode.
 */
bool Read_Key(Keycode * keycode) {
    bool result, iflag;

    iflag = Begin_Int_Atomic();

    result = !Is_Queue_Empty();
    if (result) {
        *keycode = Dequeue_Keycode();
    }

    End_Int_Atomic(iflag);

    return result;
}
Exemple #3
0
/*
 * Wait for a keycode to arrive.
 * Uses the keyboard wait queue to sleep until
 * a keycode arrives.
 */
Keycode Wait_For_Key(void) {
    bool gotKey, iflag;
    Keycode keycode = KEY_UNKNOWN;

    iflag = Begin_Int_Atomic();

    do {
        gotKey = !Is_Queue_Empty();
        if (gotKey)
            keycode = Dequeue_Keycode();
        else
            Wait(&s_waitQueue);
    }
    while (!gotKey);

    End_Int_Atomic(iflag);

    return keycode;
}