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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? monitor.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * QEMU monitor * * Copyright (c) 2003-2004 Fabrice Bellard * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */#include "hw/hw.h"#include "hw/usb.h"#include "hw/pcmcia.h"#include "hw/pc.h"#include "hw/pci.h"#include "gdbstub.h"#include "net.h"#include "qemu-char.h"#include "sysemu.h"#include "console.h"#include "block.h"#include "audio/audio.h"#include "disas.h"#include <dirent.h>#ifdef CONFIG_PROFILER#include "qemu-timer.h" /* for ticks_per_sec */#endif//#define DEBUG//#define DEBUG_COMPLETION#ifndef offsetof#define offsetof(type, field) ((size_t) &((type *)0)->field)#endif/* * Supported types: * * 'F'          filename * 'B'          block device name * 's'          string (accept optional quote) * 'i'          32 bit integer * 'l'          target long (32 or 64 bit) * '/'          optional gdb-like print format (like "/10x") * * '?'          optional type (for 'F', 's' and 'i') * */typedef struct term_cmd_t {    const char *name;    const char *args_type;    void (*handler)();    const char *params;    const char *help;} term_cmd_t;#define MAX_MON 4static CharDriverState *monitor_hd[MAX_MON];static int hide_banner;static term_cmd_t term_cmds[];static term_cmd_t info_cmds[];static uint8_t term_outbuf[1024];static int term_outbuf_index;static void monitor_start_input(void);CPUState *mon_cpu = NULL;void term_flush(void){    int i;    if (term_outbuf_index > 0) {        for (i = 0; i < MAX_MON; i++)            if (monitor_hd[i] && monitor_hd[i]->focus == 0)                qemu_chr_write(monitor_hd[i], term_outbuf, term_outbuf_index);        term_outbuf_index = 0;    }}/* flush at every end of line or if the buffer is full */void term_puts(const char *str){    char c;    for(;;) {        c = *str++;        if (c == '\0')            break;        if (c == '\n')            term_outbuf[term_outbuf_index++] = '\r';        term_outbuf[term_outbuf_index++] = c;        if (term_outbuf_index >= (sizeof(term_outbuf) - 1) ||            c == '\n')            term_flush();    }}void term_vprintf(const char *fmt, va_list ap){    char buf[4096];    vsnprintf(buf, sizeof(buf), fmt, ap);    term_puts(buf);}void term_printf(const char *fmt, ...){    va_list ap;    va_start(ap, fmt);    term_vprintf(fmt, ap);    va_end(ap);}void term_print_filename(const char *filename){    int i;    for (i = 0; filename[i]; i++) {	switch (filename[i]) {	case ' ':	case '"':	case '\\':	    term_printf("\\%c", filename[i]);	    break;	case '\t':	    term_printf("\\t");	    break;	case '\r':	    term_printf("\\r");	    break;	case '\n':	    term_printf("\\n");	    break;	default:	    term_printf("%c", filename[i]);	    break;	}    }}static int monitor_fprintf(FILE *stream, const char *fmt, ...){    va_list ap;    va_start(ap, fmt);    term_vprintf(fmt, ap);    va_end(ap);    return 0;}static int compare_cmd(const char *name, const char *list){    const char *p, *pstart;    int len;    len = strlen(name);    p = list;    for(;;) {        pstart = p;        p = strchr(p, '|');        if (!p)            p = pstart + strlen(pstart);        if ((p - pstart) == len && !memcmp(pstart, name, len))            return 1;        if (*p == '\0')            break;        p++;    }    return 0;}static void help_cmd1(term_cmd_t *cmds, const char *prefix, const char *name){    term_cmd_t *cmd;    for(cmd = cmds; cmd->name != NULL; cmd++) {        if (!name || !strcmp(name, cmd->name))            term_printf("%s%s %s -- %s\n", prefix, cmd->name, cmd->params, cmd->help);    }}static void help_cmd(const char *name){    if (name && !strcmp(name, "info")) {        help_cmd1(info_cmds, "info ", NULL);    } else {        help_cmd1(term_cmds, "", name);        if (name && !strcmp(name, "log")) {            CPULogItem *item;            term_printf("Log items (comma separated):\n");            term_printf("%-10s %s\n", "none", "remove all logs");            for(item = cpu_log_items; item->mask != 0; item++) {                term_printf("%-10s %s\n", item->name, item->help);            }        }    }}static void do_help(const char *name){    help_cmd(name);}static void do_commit(const char *device){    int i, all_devices;    all_devices = !strcmp(device, "all");    for (i = 0; i < nb_drives; i++) {            if (all_devices ||                !strcmp(bdrv_get_device_name(drives_table[i].bdrv), device))                bdrv_commit(drives_table[i].bdrv);    }}static void do_info(const char *item){    term_cmd_t *cmd;    if (!item)        goto help;    for(cmd = info_cmds; cmd->name != NULL; cmd++) {        if (compare_cmd(item, cmd->name))            goto found;    } help:    help_cmd("info");    return; found:    cmd->handler();}static void do_info_version(void){  term_printf("%s\n", QEMU_VERSION);}static void do_info_name(void){    if (qemu_name)        term_printf("%s\n", qemu_name);}static void do_info_block(void){    bdrv_info();}static void do_info_blockstats(void){    bdrv_info_stats();}/* get the current CPU defined by the user */static int mon_set_cpu(int cpu_index){    CPUState *env;    for(env = first_cpu; env != NULL; env = env->next_cpu) {        if (env->cpu_index == cpu_index) {            mon_cpu = env;            return 0;        }    }    return -1;}static CPUState *mon_get_cpu(void){    if (!mon_cpu) {        mon_set_cpu(0);    }    return mon_cpu;}static void do_info_registers(void){    CPUState *env;    env = mon_get_cpu();    if (!env)        return;#ifdef TARGET_I386    cpu_dump_state(env, NULL, monitor_fprintf,                   X86_DUMP_FPU);#else    cpu_dump_state(env, NULL, monitor_fprintf,                   0);#endif}static void do_info_cpus(void){    CPUState *env;    /* just to set the default cpu if not already done */    mon_get_cpu();    for(env = first_cpu; env != NULL; env = env->next_cpu) {        term_printf("%c CPU #%d:",                    (env == mon_cpu) ? '*' : ' ',                    env->cpu_index);#if defined(TARGET_I386)        term_printf(" pc=0x" TARGET_FMT_lx, env->eip + env->segs[R_CS].base);        if (env->hflags & HF_HALTED_MASK)            term_printf(" (halted)");#elif defined(TARGET_PPC)        term_printf(" nip=0x" TARGET_FMT_lx, env->nip);        if (env->halted)            term_printf(" (halted)");#elif defined(TARGET_SPARC)        term_printf(" pc=0x" TARGET_FMT_lx " npc=0x" TARGET_FMT_lx, env->pc, env->npc);        if (env->halted)            term_printf(" (halted)");#elif defined(TARGET_MIPS)        term_printf(" PC=0x" TARGET_FMT_lx, env->PC[env->current_tc]);        if (env->halted)            term_printf(" (halted)");#endif        term_printf("\n");    }}static void do_cpu_set(int index){    if (mon_set_cpu(index) < 0)        term_printf("Invalid CPU index\n");}static void do_info_jit(void){    dump_exec_info(NULL, monitor_fprintf);}static void do_info_history (void){    int i;    const char *str;    i = 0;    for(;;) {        str = readline_get_history(i);        if (!str)            break;	term_printf("%d: '%s'\n", i, str);        i++;    }}#if defined(TARGET_PPC)/* XXX: not implemented in other targets */static void do_info_cpu_stats (void){    CPUState *env;    env = mon_get_cpu();    cpu_dump_statistics(env, NULL, &monitor_fprintf, 0);}#endifstatic void do_quit(void){    exit(0);}static int eject_device(BlockDriverState *bs, int force){    if (bdrv_is_inserted(bs)) {        if (!force) {            if (!bdrv_is_removable(bs)) {                term_printf("device is not removable\n");                return -1;            }            if (bdrv_is_locked(bs)) {                term_printf("device is locked\n");                return -1;            }        }        bdrv_close(bs);    }    return 0;}static void do_eject(int force, const char *filename){    BlockDriverState *bs;    bs = bdrv_find(filename);    if (!bs) {        term_printf("device not found\n");        return;    }    eject_device(bs, force);}static void do_change_block(const char *device, const char *filename){    BlockDriverState *bs;    bs = bdrv_find(device);    if (!bs) {        term_printf("device not found\n");        return;    }    if (eject_device(bs, 0) < 0)        return;    bdrv_open(bs, filename, 0);    qemu_key_check(bs, filename);}static void do_change_vnc(const char *target){    if (strcmp(target, "passwd") == 0 ||	strcmp(target, "password") == 0) {	char password[9];	monitor_readline("Password: ", 1, password, sizeof(password)-1);	password[sizeof(password)-1] = '\0';	if (vnc_display_password(NULL, password) < 0)	    term_printf("could not set VNC server password\n");    } else {	if (vnc_display_open(NULL, target) < 0)	    term_printf("could not start VNC server on %s\n", target);    }}static void do_change(const char *device, const char *target){    if (strcmp(device, "vnc") == 0) {	do_change_vnc(target);    } else {	do_change_block(device, target);    }}static void do_screen_dump(const char *filename){    vga_hw_screen_dump(filename);}static void do_logfile(const char *filename){    cpu_set_log_filename(filename);}static void do_log(const char *items){    int mask;    if (!strcmp(items, "none")) {        mask = 0;    } else {        mask = cpu_str_to_log_mask(items);        if (!mask) {            help_cmd("log");            return;        }    }    cpu_set_log(mask);}static void do_stop(void){    vm_stop(EXCP_INTERRUPT);}static void do_cont(void){    vm_start();}#ifdef CONFIG_GDBSTUBstatic void do_gdbserver(const char *port){    if (!port)        port = DEFAULT_GDBSTUB_PORT;    if (gdbserver_start(port) < 0) {        qemu_printf("Could not open gdbserver socket on port '%s'\n", port);    } else {        qemu_printf("Waiting gdb connection on port '%s'\n", port);    }}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合成人精品亚洲另类欧美 | 亚洲欧美日韩在线| 欧美一级一区二区| 欧美日韩1区2区| 欧美欧美午夜aⅴ在线观看| 91麻豆精东视频| 91视视频在线观看入口直接观看www | 欧美日韩免费高清一区色橹橹| 韩国午夜理伦三级不卡影院| 美国精品在线观看| 久久国产精品第一页| 蜜桃av一区二区| 国产一区啦啦啦在线观看| 欧美aa在线视频| 精品一区二区久久| 国产美女视频91| bt7086福利一区国产| 99re在线精品| 欧美日韩激情在线| 欧美xxxxx牲另类人与| 久久嫩草精品久久久精品一| 欧美激情一区不卡| 亚洲欧美偷拍卡通变态| 亚洲一区免费在线观看| 日韩欧美一二三四区| 3d成人动漫网站| 精品999久久久| 国产精品久久久久久亚洲伦| 一区二区三区中文字幕在线观看| 亚洲一区二区三区四区中文字幕 | 欧美性大战久久| 日韩欧美国产三级电影视频| 欧美激情在线一区二区| 亚洲国产精品影院| 国产一区二区调教| 欧美性三三影院| 亚洲国产精品精华液2区45| 亚洲影院免费观看| 国产福利视频一区二区三区| 欧美亚洲动漫精品| 国产亚洲1区2区3区| 午夜av电影一区| 不卡的av中国片| 日韩一区二区三区在线| 奇米亚洲午夜久久精品| 国产99一区视频免费 | 欧美蜜桃一区二区三区| 久久久久久电影| 欧美bbbbb| 在线一区二区视频| 国产精品人妖ts系列视频| 青青草伊人久久| 色婷婷av一区二区三区gif| 欧美大尺度电影在线| 亚洲啪啪综合av一区二区三区| 久久精品国产**网站演员| 91黄色免费版| 最新日韩在线视频| 国产成人啪免费观看软件| 538prom精品视频线放| 一区二区三区日韩在线观看| 国产高清无密码一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 激情小说欧美图片| 欧美一区二区不卡视频| 五月天激情小说综合| 91国偷自产一区二区三区成为亚洲经典 | 欧美丝袜第三区| 亚洲综合成人在线| 欧美性视频一区二区三区| 亚洲欧洲日产国码二区| 99vv1com这只有精品| 亚洲视频免费看| av网站免费线看精品| 中文字幕色av一区二区三区| 国产91精品欧美| 国产精品久久久久久一区二区三区| 成人免费观看视频| 国产精品伦一区| 97成人超碰视| 一区二区国产视频| 欧美亚洲国产一区在线观看网站| 一区二区三区在线免费播放 | 视频一区二区不卡| 欧美精品在线观看一区二区| 亚洲国产成人porn| 日韩亚洲欧美在线| 黄色成人免费在线| 亚洲欧洲成人精品av97| 色噜噜狠狠成人中文综合| 亚洲观看高清完整版在线观看 | 高清在线观看日韩| 国产精品伦一区二区三级视频| 99国产精品久久| 天天色综合天天| 精品国产亚洲在线| 成人黄色小视频| 亚洲国产精品久久久久婷婷884| 色老头久久综合| 九九精品一区二区| 国产精品乱人伦| 在线播放国产精品二区一二区四区| 日本强好片久久久久久aaa| 日韩一区二区三区视频在线| 九色综合狠狠综合久久| 国产精品成人在线观看| 欧美四级电影网| 丝袜美腿亚洲一区| 久久久精品中文字幕麻豆发布| 成人sese在线| 亚洲大片一区二区三区| 亚洲精品在线观看视频| 91精品福利在线| 国产一区二区三区香蕉| 一区二区在线观看免费视频播放| 777色狠狠一区二区三区| 国产91精品在线观看| 亚洲电影一级黄| 欧美激情一二三区| 在线播放国产精品二区一二区四区| 国产乱码精品一区二区三区五月婷| 中文字幕一区不卡| 五月激情综合色| 欧美激情一二三区| 欧美日韩一区二区在线视频| 麻豆传媒一区二区三区| 国产精品对白交换视频| 精品久久一区二区三区| 欧美中文字幕亚洲一区二区va在线| 国产在线精品一区二区夜色| 亚洲成人免费影院| 亚洲欧美自拍偷拍| 精品国产乱码久久久久久老虎| 91在线免费看| 国产99精品在线观看| 青青草97国产精品免费观看 | www.成人网.com| 久久丁香综合五月国产三级网站| 一区二区三区影院| 久久精品国内一区二区三区| 一区二区三区在线免费| 久久久精品欧美丰满| 欧美日韩国产成人在线91| 91免费看`日韩一区二区| 国产成人一区在线| 欧美tk丨vk视频| 国产精品美女久久久久久| 久久精品夜色噜噜亚洲a∨| 日韩一区日韩二区| 91国产视频在线观看| 美女国产一区二区三区| 偷窥少妇高潮呻吟av久久免费| 国产精品白丝在线| 日韩一区二区在线观看| 911国产精品| 69堂成人精品免费视频| 欧美色手机在线观看| 欧美性xxxxxxxx| 色婷婷精品久久二区二区蜜臂av| av资源站一区| 国产精选一区二区三区| 精品一区免费av| 精品在线播放午夜| 久久99热狠狠色一区二区| 视频一区国产视频| 奇米色一区二区三区四区| 蜜臀久久久久久久| 精品一区二区三区av| 国产精品正在播放| 91视频com| 欧美区在线观看| 久久亚洲一区二区三区四区| 亚洲国产精品成人久久综合一区| 中文字幕av一区二区三区| 日韩毛片视频在线看| 亚洲宅男天堂在线观看无病毒| 亚洲精品大片www| 日本最新不卡在线| 韩国午夜理伦三级不卡影院| 粉嫩av一区二区三区| 欧美性色欧美a在线播放| 欧美一区二区三区在线| 久久九九久久九九| 亚洲青青青在线视频| 免费观看日韩av| 国产很黄免费观看久久| 91视频观看视频| 欧美一卡二卡三卡| 国产日韩欧美一区二区三区综合| 国产精品第五页| 日本成人在线不卡视频| 成人综合在线视频| 欧美日韩三级一区二区| 欧美岛国在线观看| 亚洲精品视频自拍| 国产精品18久久久久久久久| 欧美性大战久久久久久久蜜臀| 精品久久久久久最新网址| 亚洲精品国久久99热| 国产一区999|