Lines Matching defs:map
42 #define mk_qpn(qpt, map, off) (((map) - (qpt)->map) * BITS_PER_PAGE + \
44 #define find_next_offset(map, off) find_next_zero_bit((map)->page, \
85 static void get_map_page(struct ipath_qp_table *qpt, struct qpn_map *map)
95 if (map->page)
98 map->page = (void *)page;
106 struct qpn_map *map;
115 map = &qpt->map[0];
116 if (unlikely(!map->page)) {
117 get_map_page(qpt, map);
118 if (unlikely(!map->page)) {
123 if (!test_and_set_bit(ret, map->page))
124 atomic_dec(&map->n_free);
134 map = &qpt->map[qpn / BITS_PER_PAGE];
137 if (unlikely(!map->page)) {
138 get_map_page(qpt, map);
139 if (unlikely(!map->page))
142 if (likely(atomic_read(&map->n_free))) {
144 if (!test_and_set_bit(offset, map->page)) {
145 atomic_dec(&map->n_free);
150 offset = find_next_offset(map, offset);
151 qpn = mk_qpn(qpt, map, offset);
170 map = &qpt->map[qpt->nmaps++];
172 } else if (map < &qpt->map[qpt->nmaps]) {
173 ++map;
176 map = &qpt->map[0];
179 qpn = mk_qpn(qpt, map, offset);
190 struct qpn_map *map;
192 map = qpt->map + qpn / BITS_PER_PAGE;
193 if (map->page)
194 clear_bit(qpn & BITS_PER_PAGE_MASK, map->page);
195 atomic_inc(&map->n_free);
297 for (n = 0; n < ARRAY_SIZE(qpt->map); n++) {
298 if (qpt->map[n].page)
299 free_page((unsigned long)qpt->map[n].page);
972 for (i = 0; i < ARRAY_SIZE(idev->qp_table.map); i++) {
973 atomic_set(&idev->qp_table.map[i].n_free, BITS_PER_PAGE);
974 idev->qp_table.map[i].page = NULL;