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

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

?? save.h

?? xen虛擬機源代碼安裝包
?? H
字號:
/* * save.h: HVM support routines for save/restore * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307 USA. */#ifndef __XEN_HVM_SAVE_H__#define __XEN_HVM_SAVE_H__#include <public/xen.h>#include <public/hvm/save.h>#include <asm/types.h>/* Marshalling and unmarshalling uses a buffer with size and cursor. */typedef struct hvm_domain_context {    uint32_t cur;    uint32_t size;    uint8_t *data;} hvm_domain_context_t;/* Marshalling an entry: check space and fill in the header */static inline int _hvm_init_entry(struct hvm_domain_context *h,                                  uint16_t tc, uint16_t inst, uint32_t len){    struct hvm_save_descriptor *d         = (struct hvm_save_descriptor *)&h->data[h->cur];    if ( h->size - h->cur < len + sizeof (*d) )    {        gdprintk(XENLOG_WARNING,                 "HVM save: no room for %"PRIu32" + %u bytes "                 "for typecode %"PRIu16"\n",                 len, (unsigned) sizeof (*d), tc);        return -1;    }    d->typecode = tc;    d->instance = inst;    d->length = len;    h->cur += sizeof (*d);    return 0;}/* Marshalling: copy the contents in a type-safe way */#define _hvm_write_entry(_x, _h, _src) do {                     \    *(HVM_SAVE_TYPE(_x) *)(&(_h)->data[(_h)->cur]) = *(_src);   \    (_h)->cur += HVM_SAVE_LENGTH(_x);                           \} while (0)/* Marshalling: init and copy; evaluates to zero on success */#define hvm_save_entry(_x, _inst, _h, _src) ({          \    int r;                                              \    r = _hvm_init_entry((_h), HVM_SAVE_CODE(_x),        \                        (_inst), HVM_SAVE_LENGTH(_x));  \    if ( r == 0 )                                       \        _hvm_write_entry(_x, (_h), (_src));             \    r; })/* Unmarshalling: test an entry's size and typecode and record the instance */static inline int _hvm_check_entry(struct hvm_domain_context *h,                                    uint16_t type, uint32_t len){    struct hvm_save_descriptor *d         = (struct hvm_save_descriptor *)&h->data[h->cur];    if ( len + sizeof (*d) > h->size - h->cur)    {        gdprintk(XENLOG_WARNING,                  "HVM restore: not enough data left to read %u bytes "                 "for type %u\n", len, type);        return -1;    }        if ( type != d->typecode || len != d->length )    {        gdprintk(XENLOG_WARNING,                  "HVM restore mismatch: expected type %u length %u, "                 "saw type %u length %u\n", type, len, d->typecode, d->length);        return -1;    }    h->cur += sizeof (*d);    return 0;}/* Unmarshalling: copy the contents in a type-safe way */#define _hvm_read_entry(_x, _h, _dst) do {                      \    *(_dst) = *(HVM_SAVE_TYPE(_x) *) (&(_h)->data[(_h)->cur]);  \    (_h)->cur += HVM_SAVE_LENGTH(_x);                           \} while (0)/* Unmarshalling: check, then copy. Evaluates to zero on success. */#define hvm_load_entry(_x, _h, _dst) ({                                 \    int r;                                                              \    r = _hvm_check_entry((_h), HVM_SAVE_CODE(_x), HVM_SAVE_LENGTH(_x)); \    if ( r == 0 )                                                       \        _hvm_read_entry(_x, (_h), (_dst));                              \    r; })/* Unmarshalling: what is the instance ID of the next entry? */static inline uint16_t hvm_load_instance(struct hvm_domain_context *h){    struct hvm_save_descriptor *d         = (struct hvm_save_descriptor *)&h->data[h->cur];    return d->instance;}/* Handler types for different types of save-file entry.  * The save handler may save multiple instances of a type into the buffer; * the load handler will be called once for each instance found when * restoring.  Both return non-zero on error. */typedef int (*hvm_save_handler) (struct domain *d,                                  hvm_domain_context_t *h);typedef int (*hvm_load_handler) (struct domain *d,                                 hvm_domain_context_t *h);/* Init-time function to declare a pair of handlers for a type, * and the maximum buffer space needed to save this type of state */void hvm_register_savevm(uint16_t typecode,                         const char *name,                          hvm_save_handler save_state,                         hvm_load_handler load_state,                         size_t size, int kind);/* The space needed for saving can be per-domain or per-vcpu: */#define HVMSR_PER_DOM  0#define HVMSR_PER_VCPU 1/* Syntactic sugar around that function: specify the max number of * saves, and this calculates the size of buffer needed */#define HVM_REGISTER_SAVE_RESTORE(_x, _save, _load, _num, _k)             \static int __hvm_register_##_x##_save_and_restore(void)                   \{                                                                         \    hvm_register_savevm(HVM_SAVE_CODE(_x),                                \                        #_x,                                              \                        &_save,                                           \                        &_load,                                           \                        (_num) * (HVM_SAVE_LENGTH(_x)                     \                                  + sizeof (struct hvm_save_descriptor)), \                        _k);                                              \    return 0;                                                             \}                                                                         \__initcall(__hvm_register_##_x##_save_and_restore);/* Entry points for saving and restoring HVM domain state */size_t hvm_save_size(struct domain *d);int hvm_save(struct domain *d, hvm_domain_context_t *h);int hvm_load(struct domain *d, hvm_domain_context_t *h);/* Arch-specific definitions. */struct hvm_save_header;void arch_hvm_save(struct domain *d, struct hvm_save_header *hdr);int arch_hvm_load(struct domain *d, struct hvm_save_header *hdr);#endif /* __XEN_HVM_SAVE_H__ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色天天综合色天天久久| 日本成人超碰在线观看| 亚洲精品一区二区精华| 在线成人av影院| 欧美一级欧美一级在线播放| 欧美日韩成人综合| 欧美日韩黄色影视| 欧美色精品天天在线观看视频| 欧美亚洲动漫另类| 91麻豆精品国产91久久久更新时间| 在线播放日韩导航| 久久久久九九视频| 亚洲婷婷综合色高清在线| 日韩伦理免费电影| 视频一区欧美日韩| 国产精品一区三区| 色婷婷久久综合| 欧美肥妇毛茸茸| 国产亚洲欧美一级| 一区二区免费看| 狠狠狠色丁香婷婷综合激情| 成人黄色免费短视频| 欧美在线观看视频一区二区三区| 欧美日韩久久久| 久久久精品国产99久久精品芒果| 亚洲视频一区二区免费在线观看| 日韩成人免费在线| 成人h动漫精品一区二区| 91一区二区三区在线播放| 欧美一区二区三区四区高清| 久久久久久久久久久黄色| 一区二区三区欧美激情| 久草精品在线观看| 欧美在线999| 国产亚洲欧美一级| 青青草97国产精品免费观看 | 中文字幕成人网| 亚洲第一主播视频| 不卡的av在线播放| 日韩视频免费直播| 一区二区三区欧美日| 韩国女主播一区| 69堂精品视频| 亚洲日本护士毛茸茸| 国产一区二区三区av电影| 欧美日韩国产综合一区二区| 中文字幕一区二区三区四区 | 欧美激情在线观看视频免费| 亚洲一区二区三区免费视频| 懂色av一区二区三区蜜臀| 欧美一区二区在线不卡| 亚洲一区二区成人在线观看| 国产精品77777| 日韩欧美一级二级三级| 五月婷婷久久丁香| 91精品国产一区二区人妖| 国产精品久久精品日日| 国产大片一区二区| 久久综合九色综合97婷婷 | 久久久精品影视| 免费亚洲电影在线| 欧美日韩在线免费视频| 亚洲人成亚洲人成在线观看图片| 精品一区二区av| 日韩一级免费一区| 日韩中文字幕亚洲一区二区va在线| 成人综合婷婷国产精品久久蜜臀| 日韩免费观看高清完整版| 亚洲aⅴ怡春院| 色狠狠色狠狠综合| 国产精品进线69影院| 国产盗摄精品一区二区三区在线| 欧美成人vps| 激情综合一区二区三区| 91精品国产一区二区三区蜜臀| 婷婷开心久久网| 欧美精品免费视频| 老司机精品视频导航| 欧美日韩国产一级| 日韩av中文字幕一区二区三区| 欧美高清视频不卡网| 日韩精品电影在线观看| 日韩一区二区三免费高清| 麻豆国产欧美日韩综合精品二区| 欧美日韩国产高清一区| 日韩激情中文字幕| 日韩免费看网站| 成人黄色小视频| 亚洲六月丁香色婷婷综合久久| 欧洲精品视频在线观看| 日韩电影在线一区二区| 久久久激情视频| 91网站最新网址| 亚洲成人三级小说| 久久午夜色播影院免费高清| 成人午夜私人影院| 亚洲一线二线三线久久久| 欧美日韩中文精品| 国产在线精品不卡| 国产精品国产a| 欧美精品在欧美一区二区少妇| 蜜乳av一区二区| 中文字幕一区二区三区蜜月| 欧美性受xxxx黑人xyx性爽| 轻轻草成人在线| 亚洲欧美在线高清| 91麻豆国产精品久久| 亚洲va韩国va欧美va精品| 欧美精品一区二区久久久| 国产成人三级在线观看| 综合久久给合久久狠狠狠97色 | 欧美另类z0zxhd电影| 国产一区二区三区国产| 亚洲日穴在线视频| 91国偷自产一区二区三区观看 | 久久精品一区二区三区不卡| 色婷婷久久综合| 日本欧美韩国一区三区| 欧美激情综合五月色丁香| 欧美一区二区三区免费观看视频| 成人免费视频视频在线观看免费| 五月综合激情婷婷六月色窝| 中文字幕一区三区| 久久久一区二区三区捆绑**| 欧美日韩夫妻久久| 91理论电影在线观看| 国产精品一区专区| 免费观看在线综合色| 亚洲一区二区三区在线| 亚洲人成影院在线观看| 国产精品私人影院| 欧美成人精品福利| 制服丝袜一区二区三区| 91蜜桃在线免费视频| 不卡视频免费播放| 丰满亚洲少妇av| 国产精品一区免费在线观看| 毛片av一区二区三区| 日韩激情一二三区| 亚洲电影中文字幕在线观看| 亚洲免费观看视频| 综合久久给合久久狠狠狠97色 | 一区二区欧美国产| 自拍视频在线观看一区二区| 国产亚洲欧美激情| 国产午夜亚洲精品理论片色戒| 日韩三级免费观看| 91精品国产免费| 欧美视频精品在线| 91福利视频网站| 欧美天天综合网| 欧美视频三区在线播放| 69堂国产成人免费视频| 制服.丝袜.亚洲.中文.综合| 欧美日韩日日骚| 欧美乱妇20p| 欧美一区二区三区在线观看| 8x福利精品第一导航| 在线不卡中文字幕播放| 日韩欧美电影在线| 精品日产卡一卡二卡麻豆| 久久综合狠狠综合久久激情 | 一区视频在线播放| 亚洲精品第一国产综合野| 亚洲国产日韩在线一区模特 | 欧美www视频| 国产婷婷色一区二区三区| 亚洲国产成人自拍| 亚洲欧美自拍偷拍色图| 亚洲国产精品影院| 毛片av一区二区三区| 高清beeg欧美| 欧美色综合天天久久综合精品| 欧美理论电影在线| 国产亚洲一本大道中文在线| 亚洲色图另类专区| 久久国内精品自在自线400部| 国产乱人伦偷精品视频不卡| 91麻豆国产香蕉久久精品| 欧美一区二区三区在线看| 亚洲自拍偷拍av| 蜜桃精品视频在线| 97久久精品人人澡人人爽| 91麻豆精品国产91久久久久久 | 一区二区三区91| 久久精品国产免费| 色伊人久久综合中文字幕| 91精品中文字幕一区二区三区| 国产精品视频线看| 日韩精品电影在线| 色94色欧美sute亚洲线路一久| 日韩一区二区精品在线观看| 国产精品福利一区二区三区| 视频一区二区欧美| 91蝌蚪porny九色| 久久久高清一区二区三区| 亚洲超丰满肉感bbw| av电影天堂一区二区在线| 日韩欧美国产wwwww| 亚洲一区二三区|