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); }
public static void Initialize(ref BootParam param) { LinuxMainMemoryStart = param.LinuxMainMemoryStart; LinuxMainMemorySize = param.LinuxMainMemorySize; LinuxIPCBuffer = new ByteBufferRef(param.SyncIPCBufferBase.ToIntPtr(), param.SyncIPCBufferSize); if (param.SyncIPCBufferSize < MinimumIPCBufferSize) { ArchDefinition.Panic(); } LinuxServerTid = param.LinuxServerTid; }