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

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

?? multi.c

?? xen虛擬機源代碼安裝包
?? C
?? 第 1 頁 / 共 5 頁
字號:
        map = sh_map_domain_page(mfn);        ASSERT(map != NULL);        dst = map + ((unsigned long)dst & (PAGE_SIZE - 1));    }    for ( i = 0; i < entries; i++ )        safe_write_entry(dst++, src++);    if ( map != NULL ) sh_unmap_domain_page(map);}static inline intperms_strictly_increased(u32 old_flags, u32 new_flags) /* Given the flags of two entries, are the new flags a strict * increase in rights over the old ones? */{    u32 of = old_flags & (_PAGE_PRESENT|_PAGE_RW|_PAGE_USER|_PAGE_NX);    u32 nf = new_flags & (_PAGE_PRESENT|_PAGE_RW|_PAGE_USER|_PAGE_NX);    /* Flip the NX bit, since it's the only one that decreases rights;     * we calculate as if it were an "X" bit. */    of ^= _PAGE_NX_BIT;    nf ^= _PAGE_NX_BIT;    /* If the changed bits are all set in the new flags, then rights strictly      * increased between old and new. */    return ((of | (of ^ nf)) == nf);}static int inlineshadow_get_page_from_l1e(shadow_l1e_t sl1e, struct domain *d){    int res;    mfn_t mfn;    struct domain *owner;    ASSERT(!sh_l1e_is_magic(sl1e));    if ( !shadow_mode_refcounts(d) )        return 1;    res = get_page_from_l1e(sl1e, d);    // If a privileged domain is attempting to install a map of a page it does    // not own, we let it succeed anyway.    //    if ( unlikely(!res) &&         !shadow_mode_translate(d) &&         mfn_valid(mfn = shadow_l1e_get_mfn(sl1e)) &&         (owner = page_get_owner(mfn_to_page(mfn))) &&         (d != owner) &&         IS_PRIV_FOR(d, owner))    {        res = get_page_from_l1e(sl1e, owner);        SHADOW_PRINTK("privileged domain %d installs map of mfn %05lx "                       "which is owned by domain %d: %s\n",                       d->domain_id, mfn_x(mfn), owner->domain_id,                       res ? "success" : "failed");    }    if ( unlikely(!res) )    {        perfc_incr(shadow_get_page_fail);        SHADOW_PRINTK("failed: l1e=" SH_PRI_pte "\n");    }    return res;}static void inlineshadow_put_page_from_l1e(shadow_l1e_t sl1e, struct domain *d){     if ( !shadow_mode_refcounts(d) )        return;    put_page_from_l1e(sl1e, d);}#if GUEST_PAGING_LEVELS >= 4static int shadow_set_l4e(struct vcpu *v,                           shadow_l4e_t *sl4e,                           shadow_l4e_t new_sl4e,                           mfn_t sl4mfn){    int flags = 0, ok;    shadow_l4e_t old_sl4e;    paddr_t paddr;    ASSERT(sl4e != NULL);    old_sl4e = *sl4e;    if ( old_sl4e.l4 == new_sl4e.l4 ) return 0; /* Nothing to do */        paddr = ((((paddr_t)mfn_x(sl4mfn)) << PAGE_SHIFT)              | (((unsigned long)sl4e) & ~PAGE_MASK));    if ( shadow_l4e_get_flags(new_sl4e) & _PAGE_PRESENT )     {        /* About to install a new reference */                mfn_t sl3mfn = shadow_l4e_get_mfn(new_sl4e);        ok = sh_get_ref(v, sl3mfn, paddr);        /* Are we pinning l3 shadows to handle wierd linux behaviour? */        if ( sh_type_is_pinnable(v, SH_type_l3_64_shadow) )            ok |= sh_pin(v, sl3mfn);        if ( !ok )        {            domain_crash(v->domain);            return SHADOW_SET_ERROR;        }#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC )        shadow_resync_all(v, 0);#endif    }    /* Write the new entry */    shadow_write_entries(sl4e, &new_sl4e, 1, sl4mfn);    flags |= SHADOW_SET_CHANGED;    if ( shadow_l4e_get_flags(old_sl4e) & _PAGE_PRESENT )     {        /* We lost a reference to an old mfn. */        mfn_t osl3mfn = shadow_l4e_get_mfn(old_sl4e);        if ( (mfn_x(osl3mfn) != mfn_x(shadow_l4e_get_mfn(new_sl4e)))             || !perms_strictly_increased(shadow_l4e_get_flags(old_sl4e),                                           shadow_l4e_get_flags(new_sl4e)) )        {            flags |= SHADOW_SET_FLUSH;        }        sh_put_ref(v, osl3mfn, paddr);    }    return flags;}static int shadow_set_l3e(struct vcpu *v,                           shadow_l3e_t *sl3e,                           shadow_l3e_t new_sl3e,                           mfn_t sl3mfn){    int flags = 0;    shadow_l3e_t old_sl3e;    paddr_t paddr;    ASSERT(sl3e != NULL);    old_sl3e = *sl3e;    if ( old_sl3e.l3 == new_sl3e.l3 ) return 0; /* Nothing to do */    paddr = ((((paddr_t)mfn_x(sl3mfn)) << PAGE_SHIFT)              | (((unsigned long)sl3e) & ~PAGE_MASK));        if ( shadow_l3e_get_flags(new_sl3e) & _PAGE_PRESENT )    {        /* About to install a new reference */                if ( !sh_get_ref(v, shadow_l3e_get_mfn(new_sl3e), paddr) )        {            domain_crash(v->domain);            return SHADOW_SET_ERROR;        }#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC )        shadow_resync_all(v, 0);#endif    }    /* Write the new entry */    shadow_write_entries(sl3e, &new_sl3e, 1, sl3mfn);    flags |= SHADOW_SET_CHANGED;    if ( shadow_l3e_get_flags(old_sl3e) & _PAGE_PRESENT )     {        /* We lost a reference to an old mfn. */        mfn_t osl2mfn = shadow_l3e_get_mfn(old_sl3e);        if ( (mfn_x(osl2mfn) != mfn_x(shadow_l3e_get_mfn(new_sl3e))) ||             !perms_strictly_increased(shadow_l3e_get_flags(old_sl3e),                                        shadow_l3e_get_flags(new_sl3e)) )         {            flags |= SHADOW_SET_FLUSH;        }        sh_put_ref(v, osl2mfn, paddr);    }    return flags;}#endif /* GUEST_PAGING_LEVELS >= 4 */ static int shadow_set_l2e(struct vcpu *v,                           shadow_l2e_t *sl2e,                           shadow_l2e_t new_sl2e,                           mfn_t sl2mfn){    int flags = 0;    shadow_l2e_t old_sl2e;    paddr_t paddr;#if GUEST_PAGING_LEVELS == 2    /* In 2-on-3 we work with pairs of l2es pointing at two-page     * shadows.  Reference counting and up-pointers track from the first     * page of the shadow to the first l2e, so make sure that we're      * working with those:          * Align the pointer down so it's pointing at the first of the pair */    sl2e = (shadow_l2e_t *)((unsigned long)sl2e & ~(sizeof(shadow_l2e_t)));    /* Align the mfn of the shadow entry too */    new_sl2e.l2 &= ~(1<<PAGE_SHIFT);#endif    ASSERT(sl2e != NULL);    old_sl2e = *sl2e;        if ( old_sl2e.l2 == new_sl2e.l2 ) return 0; /* Nothing to do */        paddr = ((((paddr_t)mfn_x(sl2mfn)) << PAGE_SHIFT)             | (((unsigned long)sl2e) & ~PAGE_MASK));    if ( shadow_l2e_get_flags(new_sl2e) & _PAGE_PRESENT )     {        mfn_t sl1mfn = shadow_l2e_get_mfn(new_sl2e);        /* About to install a new reference */        if ( !sh_get_ref(v, sl1mfn, paddr) )        {            domain_crash(v->domain);            return SHADOW_SET_ERROR;        }#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)        {            struct shadow_page_info *sp = mfn_to_shadow_page(sl1mfn);            mfn_t gl1mfn = _mfn(sp->backpointer);            /* If the shadow is a fl1 then the backpointer contains               the GFN instead of the GMFN, and it's definitely not               OOS. */            if ( (sp->type != SH_type_fl1_shadow) && mfn_valid(gl1mfn)                 && mfn_is_out_of_sync(gl1mfn) )                sh_resync(v, gl1mfn);        }#endif    }    /* Write the new entry */#if GUEST_PAGING_LEVELS == 2    {        shadow_l2e_t pair[2] = { new_sl2e, new_sl2e };        /* The l1 shadow is two pages long and need to be pointed to by         * two adjacent l1es.  The pair have the same flags, but point         * at odd and even MFNs */        ASSERT(!(pair[0].l2 & (1<<PAGE_SHIFT)));        pair[1].l2 |= (1<<PAGE_SHIFT);        shadow_write_entries(sl2e, &pair, 2, sl2mfn);    }#else /* normal case */    shadow_write_entries(sl2e, &new_sl2e, 1, sl2mfn);#endif    flags |= SHADOW_SET_CHANGED;    if ( shadow_l2e_get_flags(old_sl2e) & _PAGE_PRESENT )     {        /* We lost a reference to an old mfn. */        mfn_t osl1mfn = shadow_l2e_get_mfn(old_sl2e);        if ( (mfn_x(osl1mfn) != mfn_x(shadow_l2e_get_mfn(new_sl2e))) ||             !perms_strictly_increased(shadow_l2e_get_flags(old_sl2e),                                        shadow_l2e_get_flags(new_sl2e)) )         {            flags |= SHADOW_SET_FLUSH;        }        sh_put_ref(v, osl1mfn, paddr);    }    return flags;}static inline void shadow_vram_get_l1e(shadow_l1e_t new_sl1e,                                       shadow_l1e_t *sl1e,                                       mfn_t sl1mfn,                                       struct domain *d){     mfn_t mfn;    unsigned long gfn;    if ( !d->dirty_vram ) return;    mfn = shadow_l1e_get_mfn(new_sl1e);    if ( !mfn_valid(mfn) ) return; /* m2p for mmio_direct may not exist */    gfn = mfn_to_gfn(d, mfn);    if ( (gfn >= d->dirty_vram->begin_pfn) && (gfn < d->dirty_vram->end_pfn) ) {        unsigned long i = gfn - d->dirty_vram->begin_pfn;        struct page_info *page = mfn_to_page(mfn);        u32 count_info = page->u.inuse.type_info & PGT_count_mask;                if ( count_info == 1 )            /* Initial guest reference, record it */            d->dirty_vram->sl1ma[i] = pfn_to_paddr(mfn_x(sl1mfn))                | ((unsigned long)sl1e & ~PAGE_MASK);    }}static inline void shadow_vram_put_l1e(shadow_l1e_t old_sl1e,                                       shadow_l1e_t *sl1e,                                       mfn_t sl1mfn,                                       struct domain *d){    mfn_t mfn;    unsigned long gfn;    if ( !d->dirty_vram ) return;    mfn = shadow_l1e_get_mfn(old_sl1e);    if ( !mfn_valid(mfn) ) return;    gfn = mfn_to_gfn(d, mfn);    if ( (gfn >= d->dirty_vram->begin_pfn) && (gfn < d->dirty_vram->end_pfn) ) {        unsigned long i = gfn - d->dirty_vram->begin_pfn;        struct page_info *page = mfn_to_page(mfn);        u32 count_info = page->u.inuse.type_info & PGT_count_mask;        int dirty = 0;        paddr_t sl1ma = pfn_to_paddr(mfn_x(sl1mfn))            | ((unsigned long)sl1e & ~PAGE_MASK);        if ( count_info == 1 ) {            /* Last reference */            if ( d->dirty_vram->sl1ma[i] == INVALID_PADDR ) {                /* We didn't know it was that one, let's say it is dirty */                dirty = 1;            } else {                ASSERT(d->dirty_vram->sl1ma[i] == sl1ma);                d->dirty_vram->sl1ma[i] = INVALID_PADDR;                if ( shadow_l1e_get_flags(old_sl1e) & _PAGE_DIRTY )                    dirty = 1;            }        } else {            /* We had more than one reference, just consider the page dirty. */            dirty = 1;            /* Check that it's not the one we recorded. */            if ( d->dirty_vram->sl1ma[i] == sl1ma ) {                /* Too bad, we remembered the wrong one... */                d->dirty_vram->sl1ma[i] = INVALID_PADDR;            } else {                /* Ok, our recorded sl1e is still pointing to this page, let's                 * just hope it will remain. */            }        }        if ( dirty ) {            d->dirty_vram->dirty_bitmap[i / 8] |= 1 << (i % 8);            d->dirty_vram->last_dirty = NOW();        }    }}static int shadow_set_l1e(struct vcpu *v,                           shadow_l1e_t *sl1e,                           shadow_l1e_t new_sl1e,                          mfn_t sl1mfn){    int flags = 0;    struct domain *d = v->domain;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大胆人体bbbb| 在线日韩一区二区| 亚洲国产wwwccc36天堂| 国产精品国产三级国产aⅴ中文| 狠狠色丁香婷婷综合久久片| 亚洲色欲色欲www在线观看| 欧美成人乱码一区二区三区| 色欧美乱欧美15图片| 国产在线视频精品一区| 午夜欧美视频在线观看| 国产精品萝li| 久久久一区二区三区| 欧美视频一区二区三区| 99麻豆久久久国产精品免费| 久久精品国产99国产精品| 婷婷综合另类小说色区| 一区二区三区在线视频免费| 中文字幕免费一区| 2023国产精华国产精品| 日韩欧美国产一二三区| 欧美中文字幕亚洲一区二区va在线 | 亚洲一区二区三区美女| 国产色产综合色产在线视频| 日韩一级成人av| 欧美亚洲一区二区在线| 色综合久久综合网欧美综合网| 免费成人在线观看视频| 亚洲午夜久久久久中文字幕久| 国产亚洲精品aa| 久久久精品免费免费| 精品国产在天天线2019| 日韩亚洲欧美一区| 欧美一区二区人人喊爽| 69久久99精品久久久久婷婷| 欧美高清精品3d| 欧美美女直播网站| 欧美日韩一级二级| 亚洲欧美日韩国产一区二区三区| 国产精品88888| 亚洲伦理在线精品| 欧美久久一二区| 91视频免费播放| 夫妻av一区二区| 欧美一区二区视频在线观看| 亚洲综合一区二区三区| 95精品视频在线| 欧美在线不卡一区| 欧美视频在线一区二区三区 | 日韩av一区二区三区四区| 肉丝袜脚交视频一区二区| 亚洲成人激情自拍| 亚洲欧美另类在线| 在线观看日韩av先锋影音电影院| 国产精品不卡在线观看| 欧美日韩国产精选| 95精品视频在线| 91麻豆国产精品久久| 韩国欧美国产一区| 午夜久久久久久久久久一区二区| 欧美三级韩国三级日本一级| 中文字幕亚洲视频| 亚洲天天做日日做天天谢日日欢| 在线一区二区观看| 欧美性猛交xxxxxx富婆| 日韩精品一区二区三区在线观看 | 国产suv精品一区二区883| 国产欧美日韩综合| 欧美精品一区二区三区视频 | 色94色欧美sute亚洲13| 国产精品456| 国内成人精品2018免费看| 亚洲视频免费在线| 亚洲免费观看高清完整版在线观看| 97久久精品人人爽人人爽蜜臀| 黑人巨大精品欧美一区| 免费欧美高清视频| 亚洲一区二区三区四区不卡| 国产日韩精品一区二区浪潮av| 一本色道久久综合亚洲91 | 日韩欧美在线一区二区三区| 欧美自拍偷拍午夜视频| 欧美日韩色综合| 91激情五月电影| 日韩欧美一区二区免费| 一区二区三区精品| 国产欧美一区视频| 久久久亚洲精华液精华液精华液 | 国产成人av电影在线播放| 成人av在线电影| 欧美精品 国产精品| 国产欧美日韩视频在线观看| 亚洲成人av电影| 粉嫩蜜臀av国产精品网站| 911精品国产一区二区在线| 中文字幕在线观看一区| 免费人成在线不卡| 色婷婷av一区二区三区gif| 日韩精品一区二区三区视频 | 午夜精品久久一牛影视| 国产一区二区三区日韩| 欧美日韩一二区| 成人欧美一区二区三区黑人麻豆 | 一区二区三区四区蜜桃| 国产一区二区中文字幕| 欧美日韩国产精品成人| 亚洲欧美日韩系列| 国产高清不卡一区| 日韩欧美精品在线视频| 亚洲一级二级三级| 99国产精品久久久久久久久久久 | 亚洲色图欧洲色图| 国内精品免费**视频| 欧美日韩和欧美的一区二区| 国产精品久久久久一区| 国产成人自拍在线| 精品欧美乱码久久久久久 | 丝袜美腿成人在线| 在线视频国内自拍亚洲视频| 亚洲国产精品国自产拍av| 老司机午夜精品| 91精品国产91久久综合桃花| 亚洲大尺度视频在线观看| 99久久精品久久久久久清纯| 国产精品天干天干在观线| 国产一区二区三区视频在线播放| 欧美日韩五月天| 日本va欧美va瓶| 欧美精品在线一区二区三区| 亚洲在线一区二区三区| 色综合一个色综合| 亚洲精品国产视频| 91久久精品日日躁夜夜躁欧美| 久久综合成人精品亚洲另类欧美 | 韩国av一区二区三区| 日韩一区二区免费在线观看| 男男成人高潮片免费网站| 日韩一区二区精品葵司在线| 免费观看30秒视频久久| 欧美电视剧免费全集观看| 精品在线你懂的| 久久久五月婷婷| 粉嫩高潮美女一区二区三区| 国产精品你懂的在线欣赏| 不卡av免费在线观看| 综合在线观看色| 日本二三区不卡| 亚洲国产精品一区二区www在线 | av男人天堂一区| 中文字幕在线免费不卡| 色综合久久久久综合体桃花网| 中文字幕一区免费在线观看| 色中色一区二区| 亚洲国产精品影院| 欧美大胆一级视频| 国产成人精品三级麻豆| 亚洲男人的天堂av| 欧美精品在线观看播放| 狂野欧美性猛交blacked| 国产亚洲综合色| 91丨九色丨蝌蚪丨老版| 午夜精品一区二区三区三上悠亚| 欧美丰满高潮xxxx喷水动漫| 国产呦精品一区二区三区网站| 久久综合久久综合久久综合| a级精品国产片在线观看| 一个色综合av| 日韩视频一区二区三区| 成人国产精品免费网站| 一区二区成人在线视频| 欧美mv和日韩mv国产网站| 丁香天五香天堂综合| 一二三区精品视频| 日韩一区二区免费在线观看| 国产**成人网毛片九色| 亚洲成年人影院| 精品国产免费人成在线观看| 91网站在线播放| 日韩av在线发布| 国产精品成人免费在线| 91精品国产综合久久精品麻豆| 精品一区二区三区视频| 亚洲精品中文字幕在线观看| 欧美电影免费观看高清完整版在线 | 韩国av一区二区三区四区| 国产精品久久福利| 日韩精品一区二区三区在线播放| 美女视频第一区二区三区免费观看网站| 欧美大度的电影原声| 日本道色综合久久| 国产电影一区在线| 亚洲成人综合网站| 国产精品你懂的在线欣赏| 日韩午夜中文字幕| 91视频免费看| 国产99久久久国产精品免费看 | 欧美日韩久久一区二区| 国产不卡视频在线播放| 欧美在线999| 国产精品99久久久久久宅男| 秋霞电影网一区二区|