Lines Matching defs:slot

49 // One slot would suffice, since the map is locked while mapping a page table,
58 // one slot is for use in interrupts
72 inline void PutSlot(PhysicalPageSlot* slot);
115 PhysicalPageSlot* slot;
165 PhysicalPageSlot*& slot);
166 void PutSlot(PhysicalPageSlot* slot);
210 PhysicalPageSlot* slot = fSlots;
211 fSlots = slot->next;
212 return slot;
217 PhysicalPageSlotPool::PutSlot(PhysicalPageSlot* slot)
219 slot->next = fSlots;
220 fSlots = slot;
231 fFreeSlotCondition.Init(this, "physical page ops slot queue");
241 // wait for a free slot to turn up
250 PhysicalPageSlot* slot = fSlots;
251 fSlots = slot->next;
253 return slot;
263 // wait for two free slot to turn up
279 PhysicalPageSlotQueue::PutSlot(PhysicalPageSlot* slot)
283 slot->next = fSlots;
284 fSlots = slot;
286 if (slot->next == NULL)
288 else if (slot->next->next == NULL)
327 PhysicalPageSlot* slot;
328 status_t error = sPhysicalPageMapper.GetSlot(false, slot);
335 return slot;
357 if (fSlots[i].slot != NULL)
358 sPhysicalPageMapper.PutSlot(fSlots[i].slot);
368 status_t error = sPhysicalPageMapper.GetSlot(true, fSlots[i].slot);
397 page_slot& slot = fSlots[i];
398 if (slot.physicalAddress == physicalAddress) {
400 if ((slot.valid.GetBit(currentCPU)) == 0) {
402 arch_cpu_invalidate_TLB_range(slot.slot->address,
403 slot.slot->address);
404 slot.valid.SetBit(currentCPU);
406 return (void*)slot.slot->address;
411 page_slot& slot = fSlots[fNextSlot];
414 slot.physicalAddress = physicalAddress;
415 slot.slot->Map(physicalAddress);
416 slot.valid.ClearAll();
417 slot.valid.SetBit(currentCPU);
419 return (void*)slot.slot->address;
442 // get the debug slot
489 PhysicalPageSlot* slot = fPerCPUData[smp_get_current_cpu()].interruptSlot;
490 slot->Map(physicalAddress);
491 return (void*)slot->address;
499 PhysicalPageSlot* slot;
500 status_t error = GetSlot(true, slot);
504 slot->Map(physicalAddress);
506 *handle = slot;
507 *virtualAddress = slot->address + physicalAddress % B_PAGE_SIZE;
528 // get a slot from the per-cpu user pool
531 PhysicalPageSlot* slot = slotQueue.GetSlot();
532 slot->Map(physicalAddress);
534 *virtualAddress = slot->address + physicalAddress % B_PAGE_SIZE;
535 *handle = slot;
545 // return the slot to the per-cpu user pool
583 PhysicalPageSlot* slot = slotQueue->GetSlot();
586 slot->Map(address - pageOffset);
589 memset((void*)(slot->address + pageOffset), value, toSet);
596 slotQueue->PutSlot(slot);
613 PhysicalPageSlot* slot = slotQueue->GetSlot();
620 slot->Map(from - pageOffset);
623 error = user_memcpy(to, (void*)(slot->address + pageOffset),
628 memcpy(to, (void*)(slot->address + pageOffset), toCopy);
636 slotQueue->PutSlot(slot);
653 PhysicalPageSlot* slot = slotQueue->GetSlot();
660 slot->Map(to - pageOffset);
663 error = user_memcpy((void*)(slot->address + pageOffset), from,
668 memcpy((void*)(slot->address + pageOffset), from, toCopy);
676 slotQueue->PutSlot(slot);
705 LargeMemoryPhysicalPageMapper::GetSlot(bool canWait, PhysicalPageSlot*& slot)
725 slot = pool->GetSlot();
737 LargeMemoryPhysicalPageMapper::PutSlot(PhysicalPageSlot* slot)
741 PhysicalPageSlotPool* pool = slot->pool;
747 pool->PutSlot(slot);