xen的授权表

Xen的授权表用于实现域间通信,包括页面共享和消息传递。通过grant_table对象和HYPERVISOR_grant_table_op超级调用进行操作。在domain_create时初始化,如grant_table_create。页面映射涉及A分配ref给B,B使用ref调用gnttab_map_grant_ref。页面使用后需取消映射并回收ref。授权表是基于超级调用的通信机制,结合事件通道实现信息传递。
摘要由CSDN通过智能技术生成

xen的授权表提供的是域间通信(传递消息,页面的共享)的功能.

为了使叙事的清晰,我们按照对象和方法来介绍授权表的组成,按照功能的完成过程来理解工作的方式

授权表的组成

对象:grant_table

struct grant_table {
    /* Table size. Number of frames shared with guest */
    unsigned int          nr_grant_frames;
    /* Shared grant table (see include/public/grant_table.h). */
    union {
        void **shared_raw;
        struct grant_entry_v1 **shared_v1;
        union grant_entry_v2 **shared_v2;
    };
    /* Number of grant status frames shared with guest (for version 2) */
    unsigned int          nr_status_frames;
    /* State grant table (see include/public/grant_table.h). */
    grant_status_t       **status;
    /* Active grant table. */
    struct active_grant_entry **active; 
    /* Mapping tracking table. */
    struct grant_mapping **maptrack;
    unsigned int          maptrack_head;
    unsigned int          maptrack_limit;
    /* Lock protecting updates to active and shared grant tables. */
    spinlock_t            lock;
    /* The defined versions are 1 and 2.  Set to 0 if we don't know
       what version to use yet. */
    unsigned              gt_version;
};

domain这个结构中有一个指向这个结构的指针.nr_grant_frames是授权表中的总页数.union是共享页面信息(共享的标志,目标domid,页号等)的数组.nr_status_frames不太清楚.status应该是每个页面的状态和union对应.active记录的是页面使用相关信息(页面的引用计数,目标domain,页号等).还有一个maptrack和2个指标,另外还有一个grant_table的自旋锁. 这个地方可能有很多疑问,比如为什么会有2个共享页面的信息,maptrack是干啥的?这个会在功能的实现上来说.

方法:HYPERVISOR_grant_table_op超级调用,超级调用需要3个参数,cmd,结构体指针,和操作的次数



/* ` enum grant_table_op { // GNTTABOP_* => struct gnttab_* */
#define GNTTABOP_map_grant_ref        0
#define GNTTABOP_unmap_grant_ref      1
#define GNTTABOP_setup_table          2
#define GNTTABOP_dump_table           3
#define GNTTABOP_transfer             4
#define GNTTABOP_copy          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值