Lines Matching defs:slot

48 // One slot would suffice, since the map is locked while mapping a page table,
66 inline void PutSlot(PhysicalPageSlot* slot);
109 PhysicalPageSlot* slot;
160 PhysicalPageSlot*& slot);
161 void PutSlot(PhysicalPageSlot* slot);
205 PhysicalPageSlot* slot = fSlots;
206 fSlots = slot->next;
207 return slot;
212 PhysicalPageSlotPool::PutSlot(PhysicalPageSlot* slot)
214 slot->next = fSlots;
215 fSlots = slot;
226 fFreeSlotCondition.Init(this, "physical page ops slot queue");
236 // wait for a free slot to turn up
245 PhysicalPageSlot* slot = fSlots;
246 fSlots = slot->next;
248 return slot;
258 // wait for two free slot to turn up
274 PhysicalPageSlotQueue::PutSlot(PhysicalPageSlot* slot)
278 slot->next = fSlots;
279 fSlots = slot;
281 if (slot->next == NULL)
283 else if (slot->next->next == NULL)
322 PhysicalPageSlot* slot;
323 status_t error = sPhysicalPageMapper.GetSlot(false, slot);
330 return slot;
352 if (fSlots[i].slot != NULL)
353 sPhysicalPageMapper.PutSlot(fSlots[i].slot);
363 status_t error = sPhysicalPageMapper.GetSlot(true, fSlots[i].slot);
393 page_slot& slot = fSlots[i];
394 if (slot.physicalAddress == physicalAddress) {
396 if (!slot.valid.GetBit(currentCPU)) {
398 arch_cpu_invalidate_TLB_range(slot.slot->address,
399 slot.slot->address + B_PAGE_SIZE);
400 slot.valid.SetBit(currentCPU);
402 return (uint8*)slot.slot->address + off;
407 page_slot& slot = fSlots[fNextSlot];
410 slot.physicalAddress = physicalAddress;
411 slot.slot->Map(physicalAddress);
412 slot.valid.ClearAll();
413 slot.valid.SetBit(currentCPU);
415 return (uint8*)slot.slot->address + off;
443 // get the debug slot
491 PhysicalPageSlot* slot = fPerCPUData[smp_get_current_cpu()].interruptSlot;
492 slot->Map(physicalAddress);
493 return (void*)slot->address + off;
501 PhysicalPageSlot* slot;
502 status_t error = GetSlot(true, slot);
506 slot->Map(physicalAddress);
508 *handle = slot;
509 *virtualAddress = slot->address + physicalAddress % B_PAGE_SIZE;
530 // get a slot from the per-cpu user pool
533 PhysicalPageSlot* slot = slotQueue.GetSlot();
534 slot->Map(physicalAddress);
536 *virtualAddress = slot->address + physicalAddress % B_PAGE_SIZE;
537 *handle = slot;
547 // return the slot to the per-cpu user pool
585 PhysicalPageSlot* slot = slotQueue->GetSlot();
588 slot->Map(address - pageOffset);
591 memset((void*)(slot->address + pageOffset), value, toSet);
598 slotQueue->PutSlot(slot);
615 PhysicalPageSlot* slot = slotQueue->GetSlot();
622 slot->Map(from - pageOffset);
625 error = user_memcpy(to, (void*)(slot->address + pageOffset),
630 memcpy(to, (void*)(slot->address + pageOffset), toCopy);
638 slotQueue->PutSlot(slot);
655 PhysicalPageSlot* slot = slotQueue->GetSlot();
662 slot->Map(to - pageOffset);
665 error = user_memcpy((void*)(slot->address + pageOffset), from,
670 memcpy((void*)(slot->address + pageOffset), from, toCopy);
678 slotQueue->PutSlot(slot);
707 LargeMemoryPhysicalPageMapper::GetSlot(bool canWait, PhysicalPageSlot*& slot)
727 slot = pool->GetSlot();
739 LargeMemoryPhysicalPageMapper::PutSlot(PhysicalPageSlot* slot)
743 PhysicalPageSlotPool* pool = slot->pool;
749 pool->PutSlot(slot);