Lines Matching refs:slot

47 // One slot would suffice, since the map is locked while mapping a page table,
56 // one slot is for use in interrupts
70 inline void PutSlot(PhysicalPageSlot* slot);
113 PhysicalPageSlot* slot;
163 PhysicalPageSlot*& slot);
164 void PutSlot(PhysicalPageSlot* slot);
208 PhysicalPageSlot* slot = fSlots;
209 fSlots = slot->next;
210 return slot;
215 PhysicalPageSlotPool::PutSlot(PhysicalPageSlot* slot)
217 slot->next = fSlots;
218 fSlots = slot;
229 fFreeSlotCondition.Init(this, "physical page ops slot queue");
239 // wait for a free slot to turn up
248 PhysicalPageSlot* slot = fSlots;
249 fSlots = slot->next;
251 return slot;
261 // wait for two free slot to turn up
277 PhysicalPageSlotQueue::PutSlot(PhysicalPageSlot* slot)
281 slot->next = fSlots;
282 fSlots = slot;
284 if (slot->next == NULL)
286 else if (slot->next->next == NULL)
325 PhysicalPageSlot* slot;
326 status_t error = sPhysicalPageMapper.GetSlot(false, slot);
333 return slot;
355 if (fSlots[i].slot != NULL)
356 sPhysicalPageMapper.PutSlot(fSlots[i].slot);
366 status_t error = sPhysicalPageMapper.GetSlot(true, fSlots[i].slot);
396 page_slot& slot = fSlots[i];
397 if (slot.physicalAddress == physicalAddress) {
399 if ((slot.valid & (1 << currentCPU)) == 0) {
401 arch_cpu_invalidate_TLB_range(slot.slot->address,
402 slot.slot->address + B_PAGE_SIZE);
403 slot.valid |= 1 << currentCPU;
405 return (void*)slot.slot->address + off;
410 page_slot& slot = fSlots[fNextSlot];
413 slot.physicalAddress = physicalAddress;
414 slot.slot->Map(physicalAddress);
415 slot.valid = 1 << currentCPU;
417 return (void*)slot.slot->address + off;
440 // get the debug slot
487 PhysicalPageSlot* slot = fPerCPUData[smp_get_current_cpu()].interruptSlot;
488 slot->Map(physicalAddress);
489 return (void*)slot->address;
497 PhysicalPageSlot* slot;
498 status_t error = GetSlot(true, slot);
502 slot->Map(physicalAddress);
504 *handle = slot;
505 *virtualAddress = slot->address + physicalAddress % B_PAGE_SIZE;
526 // get a slot from the per-cpu user pool
529 PhysicalPageSlot* slot = slotQueue.GetSlot();
530 slot->Map(physicalAddress);
532 *virtualAddress = slot->address + physicalAddress % B_PAGE_SIZE;
533 *handle = slot;
543 // return the slot to the per-cpu user pool
581 PhysicalPageSlot* slot = slotQueue->GetSlot();
584 slot->Map(address - pageOffset);
587 memset((void*)(slot->address + pageOffset), value, toSet);
594 slotQueue->PutSlot(slot);
611 PhysicalPageSlot* slot = slotQueue->GetSlot();
618 slot->Map(from - pageOffset);
621 error = user_memcpy(to, (void*)(slot->address + pageOffset),
626 memcpy(to, (void*)(slot->address + pageOffset), toCopy);
634 slotQueue->PutSlot(slot);
651 PhysicalPageSlot* slot = slotQueue->GetSlot();
658 slot->Map(to - pageOffset);
661 error = user_memcpy((void*)(slot->address + pageOffset), from,
666 memcpy((void*)(slot->address + pageOffset), from, toCopy);
674 slotQueue->PutSlot(slot);
703 LargeMemoryPhysicalPageMapper::GetSlot(bool canWait, PhysicalPageSlot*& slot)
723 slot = pool->GetSlot();
735 LargeMemoryPhysicalPageMapper::PutSlot(PhysicalPageSlot* slot)
739 PhysicalPageSlotPool* pool = slot->pool;
745 pool->PutSlot(slot);