Lines Matching refs:page

51 	struct mlx5_db_page *page;  in __add_page()  local
60 page = malloc(sizeof *page + nlong * sizeof(long)); in __add_page()
61 if (!page) in __add_page()
64 if (mlx5_alloc_buf(&page->buf, ps, ps)) { in __add_page()
65 free(page); in __add_page()
69 page->num_db = pp; in __add_page()
70 page->use_cnt = 0; in __add_page()
72 page->free[i] = ~0; in __add_page()
74 page->prev = NULL; in __add_page()
75 page->next = context->db_list; in __add_page()
76 context->db_list = page; in __add_page()
77 if (page->next) in __add_page()
78 page->next->prev = page; in __add_page()
80 return page; in __add_page()
85 struct mlx5_db_page *page; in mlx5_alloc_dbrec() local
91 for (page = context->db_list; page; page = page->next) in mlx5_alloc_dbrec()
92 if (page->use_cnt < page->num_db) in mlx5_alloc_dbrec()
95 page = __add_page(context); in mlx5_alloc_dbrec()
96 if (!page) in mlx5_alloc_dbrec()
100 ++page->use_cnt; in mlx5_alloc_dbrec()
102 for (i = 0; !page->free[i]; ++i) in mlx5_alloc_dbrec()
105 j = ffsl(page->free[i]); in mlx5_alloc_dbrec()
107 page->free[i] &= ~(1UL << j); in mlx5_alloc_dbrec()
108 db = page->buf.buf + (i * 8 * sizeof(long) + j) * context->cache_line_size; in mlx5_alloc_dbrec()
118 struct mlx5_db_page *page; in mlx5_free_db() local
124 for (page = context->db_list; page; page = page->next) in mlx5_free_db()
125 if (((uintptr_t) db & ~(ps - 1)) == (uintptr_t) page->buf.buf) in mlx5_free_db()
128 if (!page) in mlx5_free_db()
131 i = ((void *) db - page->buf.buf) / context->cache_line_size; in mlx5_free_db()
132 page->free[i / (8 * sizeof(long))] |= 1UL << (i % (8 * sizeof(long))); in mlx5_free_db()
134 if (!--page->use_cnt) { in mlx5_free_db()
135 if (page->prev) in mlx5_free_db()
136 page->prev->next = page->next; in mlx5_free_db()
138 context->db_list = page->next; in mlx5_free_db()
139 if (page->next) in mlx5_free_db()
140 page->next->prev = page->prev; in mlx5_free_db()
142 mlx5_free_buf(&page->buf); in mlx5_free_db()
143 free(page); in mlx5_free_db()