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

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

?? syscall.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 4 頁
字號:
}long do_fstat(uint32_t arg1, struct stat * arg2){    long ret;    DPRINTF("fstat(0x%x, %p)\n", arg1, arg2);    ret = get_errno(fstat(arg1, arg2));    if(!is_error(ret))        byteswap_stat(arg2);    return ret;}long do_lstat(char * arg1, struct stat * arg2){    long ret;    /* XXX: don't let the %s stay in there */    DPRINTF("lstat(%s, %p)\n", (const char *)arg1, arg2);    ret = get_errno(lstat(arg1, arg2));    if(!is_error(ret))        byteswap_stat(arg2);    return ret;}long do_getdirentries(uint32_t arg1, void* arg2, uint32_t arg3, void* arg4){    long ret;    DPRINTF("getdirentries(0x%x, %p, 0x%x, %p)\n", arg1, arg2, arg3, arg4);    if(arg4)        tswap32s((uint32_t *)arg4);    ret = get_errno(getdirentries(arg1, arg2, arg3, arg4));    if(arg4)        tswap32s((uint32_t *)arg4);    if(!is_error(ret))        byteswap_dirents(arg2, ret);    return ret;}long do_lseek(void *cpu_env, int num){    long ret;    int i = 0;    uint32_t arg1 = get_int_arg(&i, cpu_env);    uint64_t offset = get_int64_arg(&i, cpu_env);    uint32_t arg3 = get_int_arg(&i, cpu_env);    uint64_t r = lseek(arg1, offset, arg3);#ifdef TARGET_I386    /* lowest word in eax, highest in edx */    ret = r & 0xffffffff; /* will be set to eax after do_unix_syscall exit */    ((CPUX86State *)cpu_env)->regs[R_EDX] = (uint32_t)((r >> 32) & 0xffffffff) ;#elif defined TARGET_PPC    ret = r & 0xffffffff; /* will be set to r3 after do_unix_syscall exit */    ((CPUPPCState *)cpu_env)->gpr[4] = (uint32_t)((r >> 32) & 0xffffffff) ;#else    qerror("64 bit ret value on your arch?");#endif    return get_errno(ret);}void no_swap(void * oldp, int size){}void sysctl_tswap32s(void * oldp, int size){    tswap32s(oldp);}void bswap_oid(uint32_t * oldp, int size){    int count = size / sizeof(int);    int i = 0;    do { tswap32s(oldp + i); } while (++i < count);}void sysctl_usrstack(uint32_t * oldp, int size){    DPRINTF("sysctl_usrstack: 0x%x\n", *oldp);    tswap32s(oldp);}void sysctl_ncpu(uint32_t * ncpu, int size){    *ncpu = 0x1;    DPRINTF("sysctl_ncpu: 0x%x\n", *ncpu);    tswap32s(ncpu);}void sysctl_exec(char * exec, int size){    DPRINTF("sysctl_exec: %s\n", exec);}void sysctl_translate(char * exec, int size){    DPRINTF("sysctl_translate: %s\n", exec);}struct sysctl_dir {    int num;    const char * name;    void (*swap_func)(void *, int);    struct sysctl_dir *childs;};#define ENTRYD(num, name, childs) { num, name, NULL, childs }#define ENTRYE(num, name, func)   { num, name, (void (*)(void *, int))func, NULL  }struct sysctl_dir sysctls_unspec[] = {    ENTRYE(3,  "oip", bswap_oid),    { 0, NULL, NULL, NULL }};struct sysctl_dir sysctls_kern[] = {    ENTRYE(KERN_TRANSLATE,          "translate",    sysctl_translate), /* 44 */    ENTRYE(KERN_EXEC,               "exec",         sysctl_exec), /* 45 */    ENTRYE(KERN_USRSTACK32,          "KERN_USRSTACK32", sysctl_usrstack), /* 35 */    ENTRYE(KERN_SHREG_PRIVATIZABLE,  "KERN_SHREG_PRIVATIZABLE", sysctl_tswap32s), /* 54 */    { 0, NULL, NULL, NULL }};struct sysctl_dir sysctls_hw[] = {    ENTRYE(HW_NCPU, "ncpud", sysctl_tswap32s),    ENTRYE(104, "104", no_swap),    ENTRYE(105, "105", no_swap),    { 0, NULL, NULL, NULL }};struct sysctl_dir sysctls[] = {    ENTRYD(CTL_UNSPEC, "unspec", sysctls_unspec),    ENTRYD(CTL_KERN, "kern", sysctls_kern),    ENTRYD(CTL_HW,   "hw",   sysctls_hw ),    { 0, NULL, NULL, NULL }};#undef ENTRYE#undef ENTRYDstatic inline struct sysctl_dir * get_sysctl_entry_for_mib(int mib, struct sysctl_dir * sysctl_elmt){    if(!sysctl_elmt)        return NULL;    for(; sysctl_elmt->name != NULL ; sysctl_elmt++) {        if(sysctl_elmt->num == mib)            return sysctl_elmt;    }    return NULL;}static inline long bswap_syctl(int * mib, int count, void *buf, int size){    int i;    struct sysctl_dir * sysctl = sysctls;    struct sysctl_dir * ret = NULL;    for(i = 0; i < count; i++) {        if(!(ret = sysctl = get_sysctl_entry_for_mib(mib[i], sysctl))) {            gemu_log("bswap_syctl: can't find mib %d\n", mib[i]);            return -ENOTDIR;        }        if(!(sysctl = sysctl->childs))            break;    }    if(ret->childs)        qerror("we shouldn't have a directory element\n");    ret->swap_func(buf, size);    return 0;}static inline void print_syctl(int * mib, int count){    int i;    struct sysctl_dir * sysctl = sysctls;    struct sysctl_dir * ret = NULL;    for(i = 0; i < count; i++) {        if(!(ret = sysctl = get_sysctl_entry_for_mib(mib[i], sysctl))){            gemu_log("print_syctl: can't find mib %d\n", mib[i]);            return;        }        DPRINTF("%s.", sysctl->name);        if(!(sysctl = sysctl->childs))            break;    }    DPRINTF("\n");}long do___sysctl(int * name, uint32_t namelen, void * oldp, size_t * oldlenp, void * newp, size_t newlen  /* ignored */){    long ret = 0;    int i;    DPRINTF("sysctl(%p, 0x%x, %p, %p, %p, 0x%lx)\n",            name, namelen, oldp, oldlenp, newp, newlen);    if(name) {        i = 0;        do { tswap32s( name + i); } while (++i < namelen);        print_syctl(name, namelen);        //bswap_syctl(name, namelen, newp, newlen);        tswap32s((uint32_t*)oldlenp);    }    if(name) /* Sometimes sysctl is called with no arg1, ignore */        ret = get_errno(sysctl(name, namelen, oldp, oldlenp, newp, newlen));#if defined(TARGET_I386) ^ defined(__i386__) || defined(TARGET_PPC) ^ defined(__ppc__)    if (!is_error(ret) && bswap_syctl(name, namelen, oldp, *oldlenp) != 0) {        return -ENOTDIR;    }#endif    if(name) {        //bswap_syctl(name, namelen, newp, newlen);        tswap32s((uint32_t*)oldlenp);        i = 0;        do { tswap32s( name + i); } while (++i < namelen);    }    return ret;}long do_getattrlist(void * arg1, void * arg2, void * arg3, uint32_t arg4, uint32_t arg5){    struct attrlist * attrlist = (void *)arg2;    long ret;#if defined(TARGET_I386) ^ defined(__i386__) || defined(TARGET_PPC) ^ defined(__ppc__)    gemu_log("SYS_getdirentriesattr unimplemented\n");    return -ENOTSUP;#endif    /* XXX: don't let the %s stay in there */    DPRINTF("getattrlist(%s, %p, %p, 0x%x, 0x%x)\n",            (char *)arg1, arg2, arg3, arg4, arg5);    if(arg2) /* XXX: We should handle that in a copy especially        if the structure is not writable */        byteswap_attrlist(attrlist);    ret = get_errno(getattrlist((const char* )arg1, attrlist, (void *)arg3, arg4, arg5));    if(!is_error(ret))    {        byteswap_attrbuf((void *)arg3, attrlist);        byteswap_attrlist(attrlist);    }    return ret;}long do_getdirentriesattr(uint32_t arg1, void * arg2, void * arg3, size_t arg4, void * arg5, void * arg6, void* arg7, uint32_t arg8){    DPRINTF("getdirentriesattr(0x%x, %p, %p, 0x%lx, %p, %p, %p, 0x%x)\n",            arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);#if defined(TARGET_I386) ^ defined(__i386__) || defined(TARGET_PPC) ^ defined(__ppc__)    qerror("SYS_getdirentriesattr unimplemented\n");#endif    return get_errno(getdirentriesattr( arg1, (struct attrlist * )arg2, (void *)arg3, arg4,                                       (unsigned long *)arg5, (unsigned long *)arg6,                                       (unsigned long *)arg7, arg8));}static inline void bswap_flock(struct flock *f){    tswap64s(&f->l_start);    tswap64s(&f->l_len);    tswap32s(&f->l_pid);    tswap16s(&f->l_type);    tswap16s(&f->l_whence);}static inline void bswap_fstore(struct fstore *f){    tswap32s(&f->fst_flags);    tswap32s(&f->fst_posmode);    tswap64s(&f->fst_offset);    tswap64s(&f->fst_length);    tswap64s(&f->fst_bytesalloc);}static inline void bswap_radvisory(struct radvisory *f){    tswap64s(&f->ra_offset);    tswap32s(&f->ra_count);}static inline void bswap_fbootstraptransfer(struct fbootstraptransfer *f){    tswap64s(&f->fbt_offset);    tswap32s((uint32_t*)&f->fbt_length);    tswap32s((uint32_t*)&f->fbt_buffer); /* XXX: this is a ptr */}static inline void bswap_log2phys(struct log2phys *f){    tswap32s(&f->l2p_flags);    tswap64s(&f->l2p_contigbytes);    tswap64s(&f->l2p_devoffset);}static inline void bswap_fcntl_arg(int cmd, void * arg){    switch(cmd)    {        case F_DUPFD:        case F_GETFD:        case F_SETFD:        case F_GETFL:        case F_SETFL:        case F_GETOWN:        case F_SETOWN:        case F_SETSIZE:        case F_RDAHEAD:        case F_FULLFSYNC:            break;        case F_GETLK:        case F_SETLK:        case F_SETLKW:            bswap_flock(arg);            break;        case F_PREALLOCATE:            bswap_fstore(arg);            break;        case F_RDADVISE:            bswap_radvisory(arg);            break;        case F_READBOOTSTRAP:        case F_WRITEBOOTSTRAP:            bswap_fbootstraptransfer(arg);            break;        case F_LOG2PHYS:            bswap_log2phys(arg);            break;        default:            gemu_log("unknow cmd in fcntl\n");    }}long do_fcntl(int fd, int cmd, int arg){    long ret;    bswap_fcntl_arg(cmd, (void *)arg);    ret = get_errno(fcntl(fd, cmd, arg));    if(!is_error(ret))        bswap_fcntl_arg(cmd, (void *)arg);    return ret;}long no_syscall(void *cpu_env, int num){    /* XXX: We should probably fordward it to the host kernel */    qerror("no unix syscall %d\n", num);    /* not reached */    return -1;}long unimpl_unix_syscall(void *cpu_env, int num){    if( (num < 0) || (num > SYS_MAXSYSCALL-1) )        qerror("unix syscall %d is out of unix syscall bounds (0-%d) " , num, SYS_MAXSYSCALL-1);    gemu_log("qemu: Unsupported unix syscall %s %d\n", unix_syscall_table[num].name , num);    gdb_handlesig (cpu_env, SIGTRAP);    exit(-1);}long do_unix_syscall(void *cpu_env, int num){    long ret = 0;    DPRINTF("unix syscall %d: " , num);    if( (num < 0) || (num > SYS_MAXSYSCALL-1) )        qerror("unix syscall %d is out of unix syscall bounds (0-%d) " , num, SYS_MAXSYSCALL-1);    DPRINTF("%s [%s]", unix_syscall_table[num].name, unix_syscall_table[num].call_type & CALL_DIRECT ? "direct" : "indirect" );    ret = unix_syscall_table[num].function(cpu_env, num);    if(!(unix_syscall_table[num].call_type & CALL_NOERRNO))        ret = get_errno(ret);    DPRINTF("[returned 0x%x(%d)]\n", (int)ret, (int)ret);    return ret;}/* ------------------------------------------------------------   syscall_init*/void syscall_init(void){    /* Nothing yet */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人三级在线| www国产精品av| 国产精品免费人成网站| 日本中文一区二区三区| 99精品黄色片免费大全| 欧美xxxx老人做受| 亚洲一线二线三线久久久| 丰满白嫩尤物一区二区| 日韩精品一区二区三区四区| 亚洲欧美日韩电影| 国产99久久久精品| 日韩午夜中文字幕| 亚洲一区二区在线免费看| 播五月开心婷婷综合| 日韩精品一区二| 午夜婷婷国产麻豆精品| 色狠狠色狠狠综合| 欧美极品少妇xxxxⅹ高跟鞋| 麻豆国产精品一区二区三区| 欧美精品乱码久久久久久| 亚洲欧美综合网| 国产精品综合一区二区| 日韩三级伦理片妻子的秘密按摩| 亚洲一二三四在线观看| 91小视频在线免费看| 欧美国产日韩精品免费观看| 狠狠色丁香久久婷婷综合丁香| 日韩一区二区在线看片| 石原莉奈在线亚洲三区| 在线观看国产日韩| 亚洲乱码中文字幕综合| 成人av网站在线观看免费| 国产日韩欧美综合一区| 国产精品一区二区黑丝| 久久婷婷国产综合国色天香| 久久电影国产免费久久电影| 日韩欧美一区在线观看| 日本va欧美va瓶| 91精品国产高清一区二区三区| 午夜视频在线观看一区| 在线不卡一区二区| 午夜精品久久久久久久久| 精品视频全国免费看| 亚洲成人在线观看视频| 欧美午夜精品久久久| 亚洲不卡一区二区三区| 欧美精品九九99久久| 日日摸夜夜添夜夜添亚洲女人| 欧美区视频在线观看| 日韩不卡手机在线v区| 7878成人国产在线观看| 蜜臀久久99精品久久久久久9 | 日韩中文字幕一区二区三区| 欧美日韩一本到| 日韩精品一卡二卡三卡四卡无卡| 制服.丝袜.亚洲.另类.中文| 美女任你摸久久| 久久久精品免费免费| 成人午夜精品一区二区三区| 日韩一区欧美小说| 在线视频一区二区三区| 天堂成人免费av电影一区| 欧美一区二区三区色| 激情都市一区二区| 亚洲国产成人午夜在线一区| 92精品国产成人观看免费 | 日韩色视频在线观看| 麻豆成人91精品二区三区| 久久婷婷国产综合国色天香| 成人av网址在线| 亚洲一区二区视频在线| 欧美一区二区三区在线观看视频| 黑人巨大精品欧美黑白配亚洲 | 欧美丰满一区二区免费视频| 蜜桃av一区二区三区| 久久精品免费在线观看| 99re热这里只有精品免费视频| 亚洲大片在线观看| 日韩精品一区二区三区在线观看| 岛国一区二区三区| 亚洲久草在线视频| 777色狠狠一区二区三区| 激情深爱一区二区| ...av二区三区久久精品| 欧美日韩免费电影| 精品一区二区三区久久久| 国产精品国产精品国产专区不片| 欧美中文字幕亚洲一区二区va在线 | 国产亚洲女人久久久久毛片| 91一区二区在线| 日韩激情视频在线观看| 久久久久久一级片| 在线观看免费亚洲| 国产九色精品成人porny | 久久综合久久99| 色猫猫国产区一区二在线视频| 免费成人在线播放| 亚洲欧美色一区| 精品乱人伦小说| 色av综合在线| 国产mv日韩mv欧美| 日韩电影免费一区| 最新国产成人在线观看| 精品成人在线观看| 欧美专区亚洲专区| 成人高清在线视频| 老司机免费视频一区二区三区| 中文字幕亚洲不卡| 欧美精品一区二区三区在线| 欧美日韩免费在线视频| a4yy欧美一区二区三区| 久久99蜜桃精品| 亚洲.国产.中文慕字在线| 亚洲国产精品ⅴa在线观看| 欧美二区在线观看| 一本色道**综合亚洲精品蜜桃冫| 国产一区二区在线免费观看| 偷拍与自拍一区| 日韩毛片高清在线播放| 久久久久亚洲蜜桃| 欧美一级爆毛片| 欧美视频一区二| 91麻豆文化传媒在线观看| 激情图片小说一区| 日韩av不卡一区二区| 怡红院av一区二区三区| 国产日本亚洲高清| 日韩一二三区视频| 欧美日韩国产123区| 97国产一区二区| 国产69精品久久久久毛片| 久久精品国产秦先生| 偷拍亚洲欧洲综合| 亚洲国产精品久久久男人的天堂| 自拍偷拍欧美精品| 国产欧美综合色| 国产午夜精品在线观看| 欧美成人vps| 日韩一区二区三区免费看 | 91一区二区三区在线播放| 国产91富婆露脸刺激对白| 国内外成人在线| 九九九精品视频| 日本中文在线一区| 日韩精品一二三| 天天综合色天天综合色h| 夜夜揉揉日日人人青青一国产精品 | 精品视频1区2区3区| 色呦呦网站一区| 91猫先生在线| 91久久精品网| 欧美亚洲高清一区二区三区不卡| 色一情一伦一子一伦一区| 91丝袜呻吟高潮美腿白嫩在线观看| 成人福利视频在线看| 不卡av在线免费观看| 99在线精品免费| 99视频一区二区| 99视频一区二区| 91丨九色丨蝌蚪富婆spa| 91丝袜美女网| 色国产精品一区在线观看| 欧洲人成人精品| 精品1区2区3区| 欧美日韩国产区一| 91精品国产综合久久精品性色| 3d成人动漫网站| 欧美成人性福生活免费看| 精品国产1区2区3区| 久久久久久综合| 综合色中文字幕| 亚洲一线二线三线视频| 日韩福利视频网| 蜜芽一区二区三区| 激情小说亚洲一区| 国产69精品久久久久毛片| 91在线一区二区三区| 欧美专区日韩专区| 777午夜精品免费视频| 26uuu久久综合| 中文字幕中文字幕中文字幕亚洲无线| 亚洲欧洲精品天堂一级| 一区二区三区免费| 日本中文字幕一区二区视频 | av成人免费在线观看| 91国内精品野花午夜精品| 欧美精品一卡两卡| 精品少妇一区二区三区日产乱码 | 中文字幕乱码久久午夜不卡| 亚洲乱码国产乱码精品精的特点| 五月天丁香久久| 国产精品18久久久久久久久 | 欧美亚洲综合久久| 日韩精品一区二区三区四区| 中文字幕av在线一区二区三区| 亚洲综合图片区| 韩国一区二区视频| 色天使色偷偷av一区二区| 3atv一区二区三区| 国产精品久久网站|