Subversion Repositories Kolibri OS

Rev

Rev 3192 | Rev 4065 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3192 Rev 3391
Line 87... Line 87...
87
 
87
 
88
static inline bool drm_mm_initialized(struct drm_mm *mm)
88
static inline bool drm_mm_initialized(struct drm_mm *mm)
89
{
89
{
90
	return mm->hole_stack.next;
90
	return mm->hole_stack.next;
-
 
91
}
-
 
92
 
-
 
93
static inline unsigned long __drm_mm_hole_node_start(struct drm_mm_node *hole_node)
-
 
94
{
-
 
95
	return hole_node->start + hole_node->size;
-
 
96
}
-
 
97
 
-
 
98
static inline unsigned long drm_mm_hole_node_start(struct drm_mm_node *hole_node)
-
 
99
{
-
 
100
	BUG_ON(!hole_node->hole_follows);
-
 
101
	return __drm_mm_hole_node_start(hole_node);
-
 
102
}
-
 
103
 
-
 
104
static inline unsigned long __drm_mm_hole_node_end(struct drm_mm_node *hole_node)
-
 
105
{
-
 
106
	return list_entry(hole_node->node_list.next,
-
 
107
			  struct drm_mm_node, node_list)->start;
-
 
108
}
-
 
109
 
-
 
110
static inline unsigned long drm_mm_hole_node_end(struct drm_mm_node *hole_node)
-
 
111
{
-
 
112
	return __drm_mm_hole_node_end(hole_node);
-
 
113
}
91
}
114
 
92
#define drm_mm_for_each_node(entry, mm) list_for_each_entry(entry, \
115
#define drm_mm_for_each_node(entry, mm) list_for_each_entry(entry, \
93
						&(mm)->head_node.node_list, \
116
						&(mm)->head_node.node_list, \
94
						node_list)
117
						node_list)
95
#define drm_mm_for_each_scanned_node_reverse(entry, n, mm) \
118
#define drm_mm_for_each_scanned_node_reverse(entry, n, mm) \
96
	for (entry = (mm)->prev_scanned_node, \
119
	for (entry = (mm)->prev_scanned_node, \
97
		next = entry ? list_entry(entry->node_list.next, \
120
		next = entry ? list_entry(entry->node_list.next, \
98
			struct drm_mm_node, node_list) : NULL; \
121
			struct drm_mm_node, node_list) : NULL; \
99
	     entry != NULL; entry = next, \
122
	     entry != NULL; entry = next, \
100
		next = entry ? list_entry(entry->node_list.next, \
123
		next = entry ? list_entry(entry->node_list.next, \
-
 
124
			struct drm_mm_node, node_list) : NULL) \
-
 
125
 
-
 
126
/* Note that we need to unroll list_for_each_entry in order to inline
-
 
127
 * setting hole_start and hole_end on each iteration and keep the
-
 
128
 * macro sane.
-
 
129
 */
-
 
130
#define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \
-
 
131
	for (entry = list_entry((mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
-
 
132
	     &entry->hole_stack != &(mm)->hole_stack ? \
-
 
133
	     hole_start = drm_mm_hole_node_start(entry), \
-
 
134
	     hole_end = drm_mm_hole_node_end(entry), \
-
 
135
	     1 : 0; \
-
 
136
	     entry = list_entry(entry->hole_stack.next, struct drm_mm_node, hole_stack))
101
			struct drm_mm_node, node_list) : NULL) \
137
 
102
/*
138
/*
103
 * Basic range manager support (drm_mm.c)
139
 * Basic range manager support (drm_mm.c)
-
 
140
 */
-
 
141
extern struct drm_mm_node *drm_mm_create_block(struct drm_mm *mm,
-
 
142
					       unsigned long start,
-
 
143
					       unsigned long size,
104
 */
144
					       bool atomic);
105
extern struct drm_mm_node *drm_mm_get_block_generic(struct drm_mm_node *node,
145
extern struct drm_mm_node *drm_mm_get_block_generic(struct drm_mm_node *node,
106
						    unsigned long size,
146
						    unsigned long size,
107
						    unsigned alignment,
147
						    unsigned alignment,
108
						    unsigned long color,
148
						    unsigned long color,