view src/interface/vm.h @ 254:66a6aedf60f9

add CodeGear dirlink_loopcheck etc
author menikon
date Wed, 05 Feb 2020 17:39:17 +0900
parents 7a4d299a35be
children 052669f2ef74
line wrap: on
line source

typedef struct vm<Type,Impl> {
    union Data* vm;
    uint low;
    uint hi;
    struct proc* p;
    pde_t* pgdir;
    char* init;
    uint sz;
    char* addr;
    struct inode* ip;
    uint offset;
    uint oldsz;
    uint newsz;
    char* uva;
    uint va;
    void* pp;
    uint len;
    uint phy_low;
    uint phy_hi;
    __code init_vmm(Impl* vm, __code next(...));
    __code kpt_freerange(Impl* vm, uint low, uint hi, __code next(...));
    __code kpt_alloc(Impl* vm ,__code next(...));
    __code switchuvm(Impl* vm ,struct proc* p, __code next(...));
    __code init_inituvm(Impl* vm, pde_t* pgdir, char* init, uint sz, __code next(...));
    __code loaduvm(Impl* vm,pde_t* pgdir, char* addr, struct inode* ip, uint offset, uint sz,  __code next(...));
    __code allocuvm(Impl* vm, pde_t* pgdir, uint oldsz, uint newsz, __code next(...));
    __code clearpteu(Impl* vm, pde_t* pgdir, char* uva,  __code next(...));
    __code copyuvm(Impl* vm, pde_t* pgdir, uint sz, __code next(...));
    __code uva2ka(Impl* vm, pde_t* pgdir, char* uva, __code next(...));
    __code copyout(Impl* vm, pde_t* pgdir, uint va, void* pp, uint len, __code next(...));
    __code paging_int(Impl* vm, uint phy_low, uint phy_hi, __code next(...));
    __code next(...);
} vm;