MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / _do_pages_alloc_noaff

Function _do_pages_alloc_noaff

components/mm/mm_page.c:881–910  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

879}
880
881static void *_do_pages_alloc_noaff(rt_uint32_t size_bits, size_t flags)
882{
883 void *rc = RT_NULL;
884
885 if (size_bits < AFFID_BLK_BITS)
886 {
887 int try_affid = _get_balanced_id(size_bits);
888 size_t numof_id = AFFID_NUMOF_ID_IN_SET(size_bits);
889 size_t valid_affid_mask = numof_id - 1;
890
891 for (size_t i = 0; i < numof_id; i++, try_affid += 1 << size_bits)
892 {
893 rc = _do_pages_alloc(size_bits, flags, try_affid & valid_affid_mask);
894 if (rc)
895 {
896 break;
897 }
898 }
899 }
900 else
901 {
902 rc = _do_pages_alloc(size_bits, flags, 0);
903 }
904
905 if (!rc)
906 {
907 RT_ASSERT(0);
908 }
909 return rc;
910}
911
912void *rt_pages_alloc(rt_uint32_t size_bits)
913{

Callers 2

rt_pages_allocFunction · 0.85
rt_pages_alloc_extFunction · 0.85

Calls 2

_get_balanced_idFunction · 0.85
_do_pages_allocFunction · 0.85

Tested by

no test coverage detected