Lines Matching refs:order
132 void* AllocateByOrder(s32 order) in AllocateByOrder() argument
134 NN_ASSERT(order >= 0); in AllocateByOrder()
136 NN_LOG_DEBUG("demands order %d\n", order); in AllocateByOrder()
139 Page* pPage = GetFreePage(order); in AllocateByOrder()
146 NN_LOG_DEBUG("returns order %d, address 0x%08X\n", order, addr); in AllocateByOrder()
164 void Free(void* p, s32 order) in Free() argument
176 NN_ASSERT(GetIndexFromPage(*pPage) % (1 << order) == 0); in Free()
178 NN_LOG_DEBUG("addr = 0x%08x, order = %d, pPage = 0x%08x\n", p, order, pPage); in Free()
180 JointBuddies(pPage, order); in Free()
391 Page* GetFreePage(s32 order) in GetFreePage() argument
393 for(s32 i = order; i < MAX_ORDER; i++) in GetFreePage()
407 DivideBuddies(pPage, order, i); in GetFreePage()
413 NN_LOG_WARN("No free pages order %d\n", order); in GetFreePage()
447 void JointBuddies(Page* pPage, s32 order) in JointBuddies() argument
450 while(order < MAX_ORDER - 1) in JointBuddies()
453 Page* pBuddyPage = GetBuddy(pPage, order); in JointBuddies()
456 if(m_FreeArea[order].Remove(pBuddyPage)) in JointBuddies()
461 if(!IsAlignedToOrder(pPage, order + 1)) in JointBuddies()
466 …0x%08X, order %d", GetAddressFromPage(*pPage), GetAddressFromPage(*GetBuddy(pPage, order)), order); in JointBuddies()
469 order++; in JointBuddies()
479 … NN_LOG_DEBUG("adding a free page, address 0x%08X, order %d", GetAddressFromPage(*pPage), order ); in JointBuddies()
480 m_FreeArea[order].PushBack(pPage); in JointBuddies()
520 inline Page* GetBuddy(Page* pPage, s32 order) in GetBuddy() argument
523 if(IsAlignedToOrder(pPage, order + 1)) in GetBuddy()
525 return pPage + GetNumPagesByOrder(order); in GetBuddy()
529 return pPage - GetNumPagesByOrder(order); in GetBuddy()
541 inline bool IsAlignedToOrder(Page* pPage, s32 order) const in IsAlignedToOrder() argument
543 return GetIndexFromPage(*pPage) % GetNumPagesByOrder(order) == 0; in IsAlignedToOrder()
553 inline int GetNumPagesByOrder(s32 order) const in GetNumPagesByOrder() argument
555 return (1 << order); in GetNumPagesByOrder()
560 for(int order = 0; order <= MAX_ORDER; order++) in GetNearestHigherOrder() local
562 if( numPages <= (1U << order) ) { in GetNearestHigherOrder()
563 return order; in GetNearestHigherOrder()
573 for(int order = 0; order <= MAX_ORDER; order++) in GetNearestLowerOrder() local
575 if( numPages < (1 << order) ) { in GetNearestLowerOrder()
576 return order - 1; in GetNearestLowerOrder()
635 void* AllocateByOrder(s32 order) in AllocateByOrder() argument
638 return Base::AllocateByOrder(order); in AllocateByOrder()
647 void Free(void* p, s32 order) in Free() argument
650 Base::Free(p, order); in Free()
714 s32 order = m_Heap->GetOrder(size + ALIGN); variable
716 void* p = m_Heap->AllocateByOrder(order);
721 NN_LOG_DEBUG("Alloc size %d, order %d\n", size + ALIGN, order);
722 *reinterpret_cast<s32*>(p) = order;
734 s32 order = *reinterpret_cast<s32*>(p); in Free() local
735 m_Heap->Free(p, order); in Free()