Rev 6082 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6082 | Rev 6936 | ||
---|---|---|---|
Line 146... | Line 146... | ||
146 | return __drm_mm_hole_node_start(hole_node); |
146 | return __drm_mm_hole_node_start(hole_node); |
147 | } |
147 | } |
Line 148... | Line 148... | ||
148 | 148 | ||
149 | static inline u64 __drm_mm_hole_node_end(struct drm_mm_node *hole_node) |
149 | static inline u64 __drm_mm_hole_node_end(struct drm_mm_node *hole_node) |
150 | { |
150 | { |
151 | return list_entry(hole_node->node_list.next, |
- | |
152 | struct drm_mm_node, node_list)->start; |
151 | return list_next_entry(hole_node, node_list)->start; |
Line 153... | Line 152... | ||
153 | } |
152 | } |
154 | 153 | ||
155 | /** |
154 | /** |
Line 178... | Line 177... | ||
178 | */ |
177 | */ |
179 | #define drm_mm_for_each_node(entry, mm) list_for_each_entry(entry, \ |
178 | #define drm_mm_for_each_node(entry, mm) list_for_each_entry(entry, \ |
180 | &(mm)->head_node.node_list, \ |
179 | &(mm)->head_node.node_list, \ |
181 | node_list) |
180 | node_list) |
Line -... | Line 181... | ||
- | 181 | ||
- | 182 | #define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \ |
|
- | 183 | for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \ |
|
- | 184 | &entry->hole_stack != &(mm)->hole_stack ? \ |
|
- | 185 | hole_start = drm_mm_hole_node_start(entry), \ |
|
- | 186 | hole_end = drm_mm_hole_node_end(entry), \ |
|
- | 187 | 1 : 0; \ |
|
- | 188 | entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack)) |
|
182 | 189 | ||
183 | /** |
190 | /** |
184 | * drm_mm_for_each_hole - iterator to walk over all holes |
191 | * drm_mm_for_each_hole - iterator to walk over all holes |
185 | * @entry: drm_mm_node used internally to track progress |
192 | * @entry: drm_mm_node used internally to track progress |
186 | * @mm: drm_mm allocator to walk |
193 | * @mm: drm_mm allocator to walk |
Line 198... | Line 205... | ||
198 | * |
205 | * |
199 | * The __drm_mm_for_each_hole version is similar, but with added support for |
206 | * The __drm_mm_for_each_hole version is similar, but with added support for |
200 | * going backwards. |
207 | * going backwards. |
201 | */ |
208 | */ |
202 | #define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \ |
209 | #define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \ |
203 | for (entry = list_entry((mm)->hole_stack.next, struct drm_mm_node, hole_stack); \ |
- | |
204 | &entry->hole_stack != &(mm)->hole_stack ? \ |
- | |
205 | hole_start = drm_mm_hole_node_start(entry), \ |
- | |
206 | hole_end = drm_mm_hole_node_end(entry), \ |
- | |
207 | 1 : 0; \ |
- | |
208 | entry = list_entry(entry->hole_stack.next, struct drm_mm_node, hole_stack)) |
- | |
209 | - | ||
210 | #define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \ |
210 | __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, 0) |
211 | for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \ |
- | |
212 | &entry->hole_stack != &(mm)->hole_stack ? \ |
- | |
213 | hole_start = drm_mm_hole_node_start(entry), \ |
- | |
214 | hole_end = drm_mm_hole_node_end(entry), \ |
- | |
215 | 1 : 0; \ |
- | |
216 | entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack)) |
- | |
Line 217... | Line 211... | ||
217 | 211 | ||
218 | /* |
212 | /* |
219 | * Basic range manager support (drm_mm.c) |
213 | * Basic range manager support (drm_mm.c) |
220 | */ |
214 | */ |