-/**
- * Searches for an empty space in the pool, return with the pointer to the
- * allocatable space in the pool.
- * \param size_in_dw The size of the space we are looking for.
- * \return -1 on failure
- */
-int64_t compute_memory_prealloc_chunk(
- struct compute_memory_pool* pool,
- int64_t size_in_dw)
-{
- struct compute_memory_item *item;
-
- int last_end = 0;
-
- assert(size_in_dw <= pool->size_in_dw);
-
- COMPUTE_DBG(pool->screen, "* compute_memory_prealloc_chunk() size_in_dw = %"PRIi64"\n",
- size_in_dw);
-
- LIST_FOR_EACH_ENTRY(item, pool->item_list, link) {
- if (last_end + size_in_dw <= item->start_in_dw) {
- return last_end;
- }
-
- last_end = item->start_in_dw + align(item->size_in_dw, ITEM_ALIGNMENT);
- }
-
- if (pool->size_in_dw - last_end < size_in_dw) {
- return -1;
- }
-
- return last_end;
-}
-
-/**
- * Search for the chunk where we can link our new chunk after it.
- * \param start_in_dw The position of the item we want to add to the pool.
- * \return The item that is just before the passed position
- */
-struct list_head *compute_memory_postalloc_chunk(
- struct compute_memory_pool* pool,
- int64_t start_in_dw)
-{
- struct compute_memory_item *item;
- struct compute_memory_item *next;
- struct list_head *next_link;
-
- COMPUTE_DBG(pool->screen, "* compute_memory_postalloc_chunck() start_in_dw = %"PRIi64"\n",
- start_in_dw);
-
- /* Check if we can insert it in the front of the list */
- item = LIST_ENTRY(struct compute_memory_item, pool->item_list->next, link);
- if (LIST_IS_EMPTY(pool->item_list) || item->start_in_dw > start_in_dw) {
- return pool->item_list;
- }
-
- LIST_FOR_EACH_ENTRY(item, pool->item_list, link) {
- next_link = item->link.next;
-
- if (next_link != pool->item_list) {
- next = container_of(next_link, item, link);
- if (item->start_in_dw < start_in_dw
- && next->start_in_dw > start_in_dw) {
- return &item->link;
- }
- }
- else {
- /* end of chain */
- assert(item->start_in_dw < start_in_dw);
- return &item->link;
- }
- }
-
- assert(0 && "unreachable");
- return NULL;
-}
-