亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vl.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 5 頁
字號:
        prev = cursor;        cursor = cursor->next;    }    if (cursor == NULL) // does not exist or list empty        return;    else if (prev == NULL) { // entry is head        qemu_put_mouse_event_head = cursor->next;        if (qemu_put_mouse_event_current == entry)            qemu_put_mouse_event_current = cursor->next;        qemu_free(entry->qemu_put_mouse_event_name);        qemu_free(entry);        return;    }    prev->next = entry->next;    if (qemu_put_mouse_event_current == entry)        qemu_put_mouse_event_current = prev;    qemu_free(entry->qemu_put_mouse_event_name);    qemu_free(entry);}void kbd_put_keycode(int keycode){    if (qemu_put_kbd_event) {        qemu_put_kbd_event(qemu_put_kbd_event_opaque, keycode);    }}void kbd_mouse_event(int dx, int dy, int dz, int buttons_state){    QEMUPutMouseEvent *mouse_event;    void *mouse_event_opaque;    int width;    if (!qemu_put_mouse_event_current) {        return;    }    mouse_event =        qemu_put_mouse_event_current->qemu_put_mouse_event;    mouse_event_opaque =        qemu_put_mouse_event_current->qemu_put_mouse_event_opaque;    if (mouse_event) {        if (graphic_rotate) {            if (qemu_put_mouse_event_current->qemu_put_mouse_event_absolute)                width = 0x7fff;            else                width = graphic_width;            mouse_event(mouse_event_opaque,                                 width - dy, dx, dz, buttons_state);        } else            mouse_event(mouse_event_opaque,                                 dx, dy, dz, buttons_state);    }}int kbd_mouse_is_absolute(void){    if (!qemu_put_mouse_event_current)        return 0;    return qemu_put_mouse_event_current->qemu_put_mouse_event_absolute;}void do_info_mice(void){    QEMUPutMouseEntry *cursor;    int index = 0;    if (!qemu_put_mouse_event_head) {        term_printf("No mouse devices connected\n");        return;    }    term_printf("Mouse devices available:\n");    cursor = qemu_put_mouse_event_head;    while (cursor != NULL) {        term_printf("%c Mouse #%d: %s\n",                    (cursor == qemu_put_mouse_event_current ? '*' : ' '),                    index, cursor->qemu_put_mouse_event_name);        index++;        cursor = cursor->next;    }}void do_mouse_set(int index){    QEMUPutMouseEntry *cursor;    int i = 0;    if (!qemu_put_mouse_event_head) {        term_printf("No mouse devices connected\n");        return;    }    cursor = qemu_put_mouse_event_head;    while (cursor != NULL && index != i) {        i++;        cursor = cursor->next;    }    if (cursor != NULL)        qemu_put_mouse_event_current = cursor;    else        term_printf("Mouse at given index not found\n");}/* compute with 96 bit intermediate result: (a*b)/c */uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c){    union {        uint64_t ll;        struct {#ifdef WORDS_BIGENDIAN            uint32_t high, low;#else            uint32_t low, high;#endif        } l;    } u, res;    uint64_t rl, rh;    u.ll = a;    rl = (uint64_t)u.l.low * (uint64_t)b;    rh = (uint64_t)u.l.high * (uint64_t)b;    rh += (rl >> 32);    res.l.high = rh / c;    res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c;    return res.ll;}/***********************************************************//* real time host monotonic timer */#define QEMU_TIMER_BASE 1000000000LL#ifdef WIN32static int64_t clock_freq;static void init_get_clock(void){    LARGE_INTEGER freq;    int ret;    ret = QueryPerformanceFrequency(&freq);    if (ret == 0) {        fprintf(stderr, "Could not calibrate ticks\n");        exit(1);    }    clock_freq = freq.QuadPart;}static int64_t get_clock(void){    LARGE_INTEGER ti;    QueryPerformanceCounter(&ti);    return muldiv64(ti.QuadPart, QEMU_TIMER_BASE, clock_freq);}#elsestatic int use_rt_clock;static void init_get_clock(void){    use_rt_clock = 0;#if defined(__linux__)    {        struct timespec ts;        if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) {            use_rt_clock = 1;        }    }#endif}static int64_t get_clock(void){#if defined(__linux__)    if (use_rt_clock) {        struct timespec ts;        clock_gettime(CLOCK_MONOTONIC, &ts);        return ts.tv_sec * 1000000000LL + ts.tv_nsec;    } else#endif    {        /* XXX: using gettimeofday leads to problems if the date           changes, so it should be avoided. */        struct timeval tv;        gettimeofday(&tv, NULL);        return tv.tv_sec * 1000000000LL + (tv.tv_usec * 1000);    }}#endif/***********************************************************//* guest cycle counter */static int64_t cpu_ticks_prev;static int64_t cpu_ticks_offset;static int64_t cpu_clock_offset;static int cpu_ticks_enabled;/* return the host CPU cycle counter and handle stop/restart */int64_t cpu_get_ticks(void){    if (!cpu_ticks_enabled) {        return cpu_ticks_offset;    } else {        int64_t ticks;        ticks = cpu_get_real_ticks();        if (cpu_ticks_prev > ticks) {            /* Note: non increasing ticks may happen if the host uses               software suspend */            cpu_ticks_offset += cpu_ticks_prev - ticks;        }        cpu_ticks_prev = ticks;        return ticks + cpu_ticks_offset;    }}/* return the host CPU monotonic timer and handle stop/restart */static int64_t cpu_get_clock(void){    int64_t ti;    if (!cpu_ticks_enabled) {        return cpu_clock_offset;    } else {        ti = get_clock();        return ti + cpu_clock_offset;    }}/* enable cpu_get_ticks() */void cpu_enable_ticks(void){    if (!cpu_ticks_enabled) {        cpu_ticks_offset -= cpu_get_real_ticks();        cpu_clock_offset -= get_clock();        cpu_ticks_enabled = 1;    }}/* disable cpu_get_ticks() : the clock is stopped. You must not call   cpu_get_ticks() after that.  */void cpu_disable_ticks(void){    if (cpu_ticks_enabled) {        cpu_ticks_offset = cpu_get_ticks();        cpu_clock_offset = cpu_get_clock();        cpu_ticks_enabled = 0;    }}/***********************************************************//* timers */#define QEMU_TIMER_REALTIME 0#define QEMU_TIMER_VIRTUAL  1struct QEMUClock {    int type;    /* XXX: add frequency */};struct QEMUTimer {    QEMUClock *clock;    int64_t expire_time;    QEMUTimerCB *cb;    void *opaque;    struct QEMUTimer *next;};struct qemu_alarm_timer {    char const *name;    unsigned int flags;    int (*start)(struct qemu_alarm_timer *t);    void (*stop)(struct qemu_alarm_timer *t);    void (*rearm)(struct qemu_alarm_timer *t);    void *priv;};#define ALARM_FLAG_DYNTICKS  0x1#define ALARM_FLAG_EXPIRED   0x2static inline int alarm_has_dynticks(struct qemu_alarm_timer *t){    return t->flags & ALARM_FLAG_DYNTICKS;}static void qemu_rearm_alarm_timer(struct qemu_alarm_timer *t){    if (!alarm_has_dynticks(t))        return;    t->rearm(t);}/* TODO: MIN_TIMER_REARM_US should be optimized */#define MIN_TIMER_REARM_US 250static struct qemu_alarm_timer *alarm_timer;#ifdef _WIN32struct qemu_alarm_win32 {    MMRESULT timerId;    HANDLE host_alarm;    unsigned int period;} alarm_win32_data = {0, NULL, -1};static int win32_start_timer(struct qemu_alarm_timer *t);static void win32_stop_timer(struct qemu_alarm_timer *t);static void win32_rearm_timer(struct qemu_alarm_timer *t);#elsestatic int unix_start_timer(struct qemu_alarm_timer *t);static void unix_stop_timer(struct qemu_alarm_timer *t);#ifdef __linux__static int dynticks_start_timer(struct qemu_alarm_timer *t);static void dynticks_stop_timer(struct qemu_alarm_timer *t);static void dynticks_rearm_timer(struct qemu_alarm_timer *t);static int hpet_start_timer(struct qemu_alarm_timer *t);static void hpet_stop_timer(struct qemu_alarm_timer *t);static int rtc_start_timer(struct qemu_alarm_timer *t);static void rtc_stop_timer(struct qemu_alarm_timer *t);#endif /* __linux__ */#endif /* _WIN32 */static struct qemu_alarm_timer alarm_timers[] = {#ifndef _WIN32#ifdef __linux__    {"dynticks", ALARM_FLAG_DYNTICKS, dynticks_start_timer,     dynticks_stop_timer, dynticks_rearm_timer, NULL},    /* HPET - if available - is preferred */    {"hpet", 0, hpet_start_timer, hpet_stop_timer, NULL, NULL},    /* ...otherwise try RTC */    {"rtc", 0, rtc_start_timer, rtc_stop_timer, NULL, NULL},#endif    {"unix", 0, unix_start_timer, unix_stop_timer, NULL, NULL},#else    {"dynticks", ALARM_FLAG_DYNTICKS, win32_start_timer,     win32_stop_timer, win32_rearm_timer, &alarm_win32_data},    {"win32", 0, win32_start_timer,     win32_stop_timer, NULL, &alarm_win32_data},#endif    {NULL, }};static void show_available_alarms(){    int i;    printf("Available alarm timers, in order of precedence:\n");    for (i = 0; alarm_timers[i].name; i++)        printf("%s\n", alarm_timers[i].name);}static void configure_alarms(char const *opt){    int i;    int cur = 0;    int count = (sizeof(alarm_timers) / sizeof(*alarm_timers)) - 1;    char *arg;    char *name;    if (!strcmp(opt, "help")) {        show_available_alarms();        exit(0);    }    arg = strdup(opt);    /* Reorder the array */    name = strtok(arg, ",");    while (name) {        struct qemu_alarm_timer tmp;        for (i = 0; i < count && alarm_timers[i].name; i++) {            if (!strcmp(alarm_timers[i].name, name))                break;        }        if (i == count) {            fprintf(stderr, "Unknown clock %s\n", name);            goto next;        }        if (i < cur)            /* Ignore */            goto next;	/* Swap */        tmp = alarm_timers[i];        alarm_timers[i] = alarm_timers[cur];        alarm_timers[cur] = tmp;        cur++;next:        name = strtok(NULL, ",");    }    free(arg);    if (cur) {	/* Disable remaining timers */        for (i = cur; i < count; i++)            alarm_timers[i].name = NULL;    }    /* debug */    show_available_alarms();}QEMUClock *rt_clock;QEMUClock *vm_clock;static QEMUTimer *active_timers[2];static QEMUClock *qemu_new_clock(int type){    QEMUClock *clock;    clock = qemu_mallocz(sizeof(QEMUClock));    if (!clock)        return NULL;    clock->type = type;    return clock;}QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque){    QEMUTimer *ts;    ts = qemu_mallocz(sizeof(QEMUTimer));    ts->clock = clock;    ts->cb = cb;    ts->opaque = opaque;    return ts;}void qemu_free_timer(QEMUTimer *ts){    qemu_free(ts);}/* stop a timer, but do not dealloc it */void qemu_del_timer(QEMUTimer *ts){    QEMUTimer **pt, *t;    /* NOTE: this code must be signal safe because       qemu_timer_expired() can be called from a signal. */    pt = &active_timers[ts->clock->type];    for(;;) {        t = *pt;        if (!t)            break;        if (t == ts) {            *pt = t->next;            break;        }        pt = &t->next;    }}/* modify the current timer so that it will be fired when current_time   >= expire_time. The corresponding callback will be called. */void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time){    QEMUTimer **pt, *t;    qemu_del_timer(ts);    /* add the timer in the sorted list */    /* NOTE: this code must be signal safe because       qemu_timer_expired() can be called from a signal. */    pt = &active_timers[ts->clock->type];    for(;;) {        t = *pt;        if (!t)            break;        if (t->expire_time > expire_time)            break;        pt = &t->next;    }    ts->expire_time = expire_time;    ts->next = *pt;    *pt = ts;    /* Rearm if necessary  */    if ((alarm_timer->flags & ALARM_FLAG_EXPIRED) == 0 &&        pt == &active_timers[ts->clock->type])        qemu_rearm_alarm_timer(alarm_timer);}int qemu_timer_pending(QEMUTimer *ts){    QEMUTimer *t;    for(t = active_timers[ts->clock->type]; t != NULL; t = t->next) {        if (t == ts)            return 1;    }    return 0;}static inline int qemu_timer_expired(QEMUTimer *timer_head, int64_t current_time){    if (!timer_head)        return 0;    return (timer_head->expire_time <= current_time);}static void qemu_run_timers(QEMUTimer **ptimer_head, int64_t current_time){    QEMUTimer *ts;    for(;;) {        ts = *ptimer_head;        if (!ts || ts->expire_time > current_time)            break;        /* remove timer from the list before calling the callback */        *ptimer_head = ts->next;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜视频在线| 视频一区二区三区中文字幕| 精品国精品自拍自在线| 欧美美女bb生活片| 欧美久久免费观看| 日韩欧美你懂的| 欧美大度的电影原声| 日韩欧美国产成人一区二区| 亚洲视频一区在线| 欧美日韩高清一区二区不卡| 中文字幕精品综合| 欧美性受xxxx| 欧美日韩高清一区二区三区| 欧美伦理影视网| 日韩视频免费观看高清完整版在线观看| 欧美性色黄大片| 制服丝袜亚洲播放| 精品日产卡一卡二卡麻豆| 亚洲精品在线观看视频| 国产欧美日韩亚州综合| 中文字幕一区二区5566日韩| 依依成人综合视频| 奇米影视一区二区三区小说| 国产精品综合视频| 91在线视频观看| 欧美日韩三级在线| 日韩女优电影在线观看| 亚洲国产成人自拍| 亚洲午夜免费电影| 另类人妖一区二区av| 国产成人在线视频免费播放| 91丝袜呻吟高潮美腿白嫩在线观看| 色婷婷精品大视频在线蜜桃视频| 婷婷激情综合网| 一区二区三区欧美亚洲| 久久国产麻豆精品| 国产精品一区二区久久精品爱涩| 成人教育av在线| 91福利资源站| 久久综合久久综合久久| 国产精品麻豆欧美日韩ww| 亚洲福利一区二区三区| 久久99精品国产.久久久久久 | 狠狠色狠狠色合久久伊人| 国产成人一区在线| 欧美日韩一级黄| 国产午夜精品久久久久久免费视| 尤物av一区二区| 麻豆国产精品视频| 91美女片黄在线观看91美女| 91精品视频网| 中文字幕一区三区| 乱中年女人伦av一区二区| 99久久99久久免费精品蜜臀| 日韩视频免费观看高清完整版| 日韩理论片网站| 六月丁香婷婷久久| 欧美色爱综合网| 中文字幕成人在线观看| 日韩精品一二三区| 中文字幕在线一区| 亚洲自拍偷拍图区| 欧美日韩第一区日日骚| 日本一区免费视频| 香蕉加勒比综合久久| 国产a区久久久| 欧美一级夜夜爽| 亚洲美女免费在线| 国产成人免费在线| 欧美大片在线观看| 天堂成人国产精品一区| 99国产精品99久久久久久| 久久久国产综合精品女国产盗摄| 伊人婷婷欧美激情| 成人免费视频app| 欧美精品一区二区三区一线天视频| 亚洲成人中文在线| 91福利精品第一导航| 中文一区一区三区高中清不卡| 日本欧美肥老太交大片| 欧美丝袜丝nylons| 亚洲卡通欧美制服中文| 成人性生交大片免费看视频在线| 精品国产一区二区国模嫣然| 三级欧美在线一区| 欧美亚洲动漫精品| 一区二区三区影院| 色婷婷av一区| 日韩毛片视频在线看| 成人性色生活片| 欧美激情一区在线观看| 国产成人综合亚洲91猫咪| 久久综合九色综合欧美98| 麻豆成人综合网| 日韩一级视频免费观看在线| 视频一区二区国产| 欧美日韩电影在线播放| 午夜不卡av在线| 欧美人牲a欧美精品| 亚洲成人中文在线| 6080国产精品一区二区| 亚洲成av人片www| 91超碰这里只有精品国产| 亚洲成人一二三| 欧美日韩成人综合在线一区二区| 性久久久久久久| 91精品国模一区二区三区| 肉色丝袜一区二区| 欧美成人三级在线| 国产精品一区一区| 国产精品三级av在线播放| av中文字幕一区| 亚洲欧美日韩一区| 欧美调教femdomvk| 视频一区在线播放| 精品欧美乱码久久久久久 | 蜜臀91精品一区二区三区| 日韩午夜激情电影| 国产精品自拍一区| 国产精品蜜臀av| 色妞www精品视频| 性久久久久久久| 精品久久久久久久久久久久包黑料 | 亚洲超碰精品一区二区| 欧美一级在线视频| 欧美少妇bbb| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩免费观看高清完整版在线观看| 激情丁香综合五月| 国产精品久线观看视频| 91视频免费观看| 午夜精品久久久| 久久蜜桃一区二区| 99久久国产综合精品女不卡| 婷婷夜色潮精品综合在线| 欧美岛国在线观看| 91在线看国产| 午夜影院在线观看欧美| 亚洲精品一区在线观看| www.综合网.com| 五月婷婷激情综合| 国产亚洲一区二区三区在线观看 | 国产欧美精品区一区二区三区| 91啪亚洲精品| 日韩国产精品大片| 欧美韩日一区二区三区四区| 欧美午夜宅男影院| 国产成人亚洲精品青草天美 | 日本韩国欧美国产| 蜜臀精品一区二区三区在线观看 | 亚洲视频一区在线| 欧美sm极限捆绑bd| 色呦呦一区二区三区| 久久99精品久久久久婷婷| 亚洲美女在线一区| 精品久久久久久久久久久院品网| 一本在线高清不卡dvd| 精品在线观看视频| 一区二区在线观看视频在线观看| 日韩欧美资源站| 色猫猫国产区一区二在线视频| 久久超碰97中文字幕| 一区二区三区成人| 国产喂奶挤奶一区二区三区 | 午夜视频久久久久久| 久久精品无码一区二区三区| 欧美视频一区在线| 国产乱子轮精品视频| 天堂午夜影视日韩欧美一区二区| 国产精品久久久久婷婷| 日韩美一区二区三区| 欧美日韩国产精选| 色哟哟欧美精品| 成人在线综合网| 久久99精品久久久久久 | 欧美精品久久久久久久久老牛影院| 国产成人av电影在线播放| 日韩va欧美va亚洲va久久| 亚洲欧美日韩国产综合在线| 欧美精品一区二区三区高清aⅴ| 欧美日韩亚洲丝袜制服| 色吊一区二区三区| 成人一级片网址| 国产a视频精品免费观看| 国内国产精品久久| 天堂va蜜桃一区二区三区| 国产欧美一区二区三区沐欲 | 韩国欧美国产1区| 亚洲精品免费一二三区| 欧美国产激情一区二区三区蜜月| 日韩视频免费观看高清完整版 | 欧美一级免费观看| 欧美三区免费完整视频在线观看| 色综合色综合色综合| 成人app软件下载大全免费| 高清不卡在线观看av| 国产一区二区三区高清播放| 国产一区欧美二区| 国产一区999| 国产成人精品亚洲日本在线桃色|