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

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

?? 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品费精品国产一区二区| 国产偷国产偷精品高清尤物| 久久久影视传媒| 亚洲综合久久av| 国产成人av一区| 日韩视频一区二区在线观看| 樱花草国产18久久久久| 粉嫩aⅴ一区二区三区四区 | 久久91精品久久久久久秒播| 91黄色小视频| 亚洲色图欧美偷拍| av在线这里只有精品| 久久先锋影音av鲁色资源网| 免费观看在线综合色| 欧美高清精品3d| 亚洲成人免费视| 91久久精品一区二区三| 成人网男人的天堂| 婷婷丁香久久五月婷婷| 91浏览器入口在线观看| 久久精品综合网| 韩国视频一区二区| 精品国产免费一区二区三区四区| 天堂一区二区在线| 欧美三级欧美一级| 视频一区二区三区在线| 欧美人动与zoxxxx乱| 亚洲综合偷拍欧美一区色| 在线亚洲人成电影网站色www| 亚洲人成精品久久久久| av电影天堂一区二区在线观看| 中文字幕免费一区| 成人午夜av在线| 亚洲人午夜精品天堂一二香蕉| 91黄视频在线| 午夜欧美一区二区三区在线播放| 欧美日韩不卡一区二区| 日韩中文字幕一区二区三区| 精品一区二区三区免费视频| 中文字幕av一区二区三区高 | 五月婷婷激情综合| 在线不卡免费av| 老司机精品视频线观看86| 日韩欧美中文字幕公布| 国产一区在线观看视频| 欧美激情一区二区三区蜜桃视频| av电影一区二区| 亚洲国产精品久久久男人的天堂 | 久久精品久久99精品久久| 久久久久久久久久美女| 99久久精品免费精品国产| 一区二区三区四区在线| 91精品国产免费久久综合| 国产一区二区不卡| 亚洲人精品一区| 日韩一区二区三区在线| www.亚洲人| 国产精品资源在线看| 国产午夜亚洲精品羞羞网站| 色哟哟一区二区在线观看| 日韩影院精彩在线| 国产精品久久久久久户外露出| 欧美在线观看视频一区二区| 美女一区二区三区在线观看| 国产精品久久久久影院| 欧美一区二区三区在线观看视频| 国产激情视频一区二区三区欧美| 亚洲日本丝袜连裤袜办公室| 日韩一区二区在线观看视频播放| 不卡av在线网| 美脚の诱脚舐め脚责91| 亚洲精品视频免费观看| 精品91自产拍在线观看一区| 日本道免费精品一区二区三区| 麻豆91免费看| 亚洲国产综合人成综合网站| 国产欧美一区二区精品久导航| 欧美日韩精品一区视频| av网站免费线看精品| 精品一区二区三区免费毛片爱 | 97se狠狠狠综合亚洲狠狠| 日韩电影网1区2区| 亚洲欧美福利一区二区| 久久久国产综合精品女国产盗摄| 欧美日韩二区三区| 91网站最新地址| 国产**成人网毛片九色 | 日韩电影在线免费| 亚洲精品一卡二卡| 国产精品视频线看| 精品国产网站在线观看| 欧美日韩国产高清一区二区| 色综合天天综合狠狠| 成人午夜激情在线| 国产精品一二三区| 国产精品一级在线| 国产伦精品一区二区三区免费 | 亚洲小说春色综合另类电影| 国产精品国产三级国产普通话蜜臀| 欧美xxxx老人做受| 日韩三级伦理片妻子的秘密按摩| 欧美日韩亚洲国产综合| 在线欧美日韩国产| 欧美亚洲丝袜传媒另类| 欧美性三三影院| 欧美性色欧美a在线播放| 欧美综合天天夜夜久久| 在线免费不卡电影| 欧美亚洲国产bt| 欧美精品电影在线播放| 91精品国产高清一区二区三区蜜臀| 欧美怡红院视频| 欧美日韩电影一区| 欧美一二三区在线观看| 欧美大尺度电影在线| 欧美一级二级在线观看| 久久综合网色—综合色88| 精品国精品国产| 久久色在线观看| 亚洲国产精品传媒在线观看| 久久精品视频在线免费观看| 国产欧美中文在线| 亚洲欧美在线视频观看| 亚洲一区在线观看视频| 午夜影院久久久| 捆绑调教美女网站视频一区| 国产精品主播直播| 91丨国产丨九色丨pron| 欧美日韩久久久| 精品成人免费观看| 国产精品网站一区| 亚洲伊人色欲综合网| 老司机免费视频一区二区三区| 国产一区二区三区免费| 一本一本大道香蕉久在线精品 | 91精品国产综合久久小美女| 欧美成人官网二区| 中文字幕国产一区二区| 一区二区三区精密机械公司| 偷拍一区二区三区四区| 国产激情一区二区三区四区| 在线欧美一区二区| 久久综合九色综合欧美亚洲| **性色生活片久久毛片| 日韩精品电影在线| 风流少妇一区二区| 欧美日韩国产片| 久久久精品国产免费观看同学| 日韩伦理av电影| 九九精品视频在线看| 99久久伊人久久99| 日韩一级片网址| 丝袜亚洲精品中文字幕一区| 91免费国产视频网站| 欧美日韩mp4| 久久久久久日产精品| 亚洲美女视频在线| 国产精品中文字幕日韩精品| 色婷婷久久久久swag精品 | 欧美性受xxxx黑人xyx性爽| 精品国产sm最大网站免费看| 亚洲欧美另类综合偷拍| 国产一区在线视频| 欧美日韩你懂的| 国产精品久久久久三级| 精品在线播放免费| 91福利国产成人精品照片| 久久久午夜精品理论片中文字幕| 亚洲v日本v欧美v久久精品| 成人av在线影院| 久久综合九色综合欧美98| 日韩中文欧美在线| 欧美伊人久久大香线蕉综合69 | 亚洲日本青草视频在线怡红院 | 日韩成人av影视| 色哟哟国产精品免费观看| 国产日韩欧美a| 国产一区二区三区高清播放| 欧美疯狂做受xxxx富婆| 一区二区三区在线影院| 成人一道本在线| 国产欧美一区二区精品性色超碰| 久久精品国产亚洲a| 欧美一级专区免费大片| 日韩精品亚洲专区| 欧美吻胸吃奶大尺度电影| 一二三四社区欧美黄| av在线不卡免费看| 国产精品美女久久福利网站| 国产成人鲁色资源国产91色综| 日韩欧美一区在线| 老汉av免费一区二区三区| 日韩你懂的电影在线观看| 轻轻草成人在线| 日韩欧美一区二区免费| 精品一区二区久久久| 国产视频一区二区在线观看| 国产成人在线视频网站| 欧美经典三级视频一区二区三区| 国产成人亚洲综合a∨婷婷图片|