ADDRESS
ADDRESS pDataBuffer; /* data buffer */
ADDRESS Buffer; /* buffer logical address */
ADDRESS PhysicalAddress;
ADDRESS dataPointer, v, nextpage, currvaddr, nextvaddr, currphypage, nextphypage;
dataPointer = (ADDRESS)fOsPhysicalAddress(v);
currphypage = (ADDRESS)fOsPhysicalAddress((void*)trunc_page((ULONG_PTR)currvaddr));
nextpage = (ADDRESS)trunc_page(((ULONG_PTR)currvaddr + PAGE_SIZE));
nextvaddr = (ADDRESS)MIN(((ULONG_PTR)v + bufferSize), (ULONG_PTR)(nextpage));
if (nextvaddr == (ADDRESS)((ULONG_PTR)v + bufferSize)) break;
nextphypage = (ADDRESS)fOsPhysicalAddress(nextpage);
ppb_MS_init_msq(msq, 2, ADDRESS, buffer, LENGTH, len);