示例#1
0
 public static void GetPageFaultInfo(ref MessageRegisters mr, out uint pfa, out uint pc, out uint faultType)
 {
     pfa = (uint)mr.mr0;
     pc = (uint)mr.mr1;
     const uint WRITE_BIT = 2;
     faultType = ((pfa & WRITE_BIT) != 0) ? L4FPage.L4_FPAGE_FAULT_WRITE : L4FPage.L4_FPAGE_FAULT_READ;
 }
示例#2
0
        public static void GetPageFaultInfo(ref MessageRegisters mr, out uint pfa, out uint pc, out uint faultType)
        {
            pfa = (uint)mr.mr0;
            pc  = (uint)mr.mr1;
            const uint WRITE_BIT = 2;

            faultType = ((pfa & WRITE_BIT) != 0) ? L4FPage.L4_FPAGE_FAULT_WRITE : L4FPage.L4_FPAGE_FAULT_READ;
        }
示例#3
0
 public static void ReturnFromPageFault(L4Handle target, out Msgtag tag, ref MessageRegisters mr, uint pfa, Pointer physicalPage, uint permssion)
 {
     var virt_page_addr = ArchDefinition.PageIndex(physicalPage.ToUInt32());
     var fpage = new L4FPage(virt_page_addr, ArchDefinition.PageShift, (int)permssion);
     tag = new Msgtag(0, 0, 1, 0);
     mr.mr0 = (int)(ArchDefinition.PageIndex(pfa) | Msgtag.L4_ITEM_MAP);
     mr.mr1 = (int)fpage.raw;
     NativeMethods.l4api_ipc_send(target, NativeMethods.l4api_utcb(), tag, Timeout.Never);
 }
示例#4
0
        public static void ReturnFromPageFault(L4Handle target, out Msgtag tag, ref MessageRegisters mr, uint pfa, Pointer physicalPage, uint permssion)
        {
            var virt_page_addr = ArchDefinition.PageIndex(physicalPage.ToUInt32());
            var fpage          = new L4FPage(virt_page_addr, ArchDefinition.PageShift, (int)permssion);

            tag    = new Msgtag(0, 0, 1, 0);
            mr.mr0 = (int)(ArchDefinition.PageIndex(pfa) | Msgtag.L4_ITEM_MAP);
            mr.mr1 = (int)fpage.raw;
            NativeMethods.l4api_ipc_send(target, NativeMethods.l4api_utcb(), tag, Timeout.Never);
        }