Subversion Repositories Kolibri OS

Rev

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

Rev 1123 Rev 1126
Line 39... Line 39...
39
 *
39
 *
40
 * Authors:
40
 * Authors:
41
 * Thomas Hellström 
41
 * Thomas Hellström 
42
 */
42
 */
Line 43... Line 43...
43
 
43
 
44
//#include "drmP.h"
44
#include "drmP.h"
45
#include "drm_mm.h"
45
#include "drm_mm.h"
Line 46... Line 46...
46
//#include 
46
//#include 
Line 118... Line 118...
118
		list_add_tail(&node->fl_entry, &mm->unused_nodes);
118
		list_add_tail(&node->fl_entry, &mm->unused_nodes);
119
	}
119
	}
120
	spin_unlock(&mm->unused_lock);
120
	spin_unlock(&mm->unused_lock);
121
	return 0;
121
	return 0;
122
}
122
}
123
//EXPORT_SYMBOL(drm_mm_pre_get);
123
EXPORT_SYMBOL(drm_mm_pre_get);
Line 124... Line 124...
124
 
124
 
125
static int drm_mm_create_tail_node(struct drm_mm *mm,
125
static int drm_mm_create_tail_node(struct drm_mm *mm,
126
				   unsigned long start,
126
				   unsigned long start,
127
				   unsigned long size, int atomic)
127
				   unsigned long size, int atomic)
Line 213... Line 213...
213
	if (align_splitoff)
213
	if (align_splitoff)
214
		drm_mm_put_block(align_splitoff);
214
		drm_mm_put_block(align_splitoff);
Line 215... Line 215...
215
 
215
 
216
	return node;
216
	return node;
217
}
217
}
Line 218... Line 218...
218
//EXPORT_SYMBOL(drm_mm_get_block_generic);
218
EXPORT_SYMBOL(drm_mm_get_block_generic);
219
 
219
 
220
/*
220
/*
221
 * Put a block. Merge with the previous and / or next block if they are free.
221
 * Put a block. Merge with the previous and / or next block if they are free.
Line 273... Line 273...
273
		} else
273
		} else
274
			kfree(cur);
274
			kfree(cur);
275
	}
275
	}
276
}
276
}
Line 277... Line 277...
277
 
277
 
Line 278... Line 278...
278
//EXPORT_SYMBOL(drm_mm_put_block);
278
EXPORT_SYMBOL(drm_mm_put_block);
279
 
279
 
280
struct drm_mm_node *drm_mm_search_free(const struct drm_mm *mm,
280
struct drm_mm_node *drm_mm_search_free(const struct drm_mm *mm,
281
				       unsigned long size,
281
				       unsigned long size,
Line 314... Line 314...
314
		}
314
		}
315
	}
315
	}
Line 316... Line 316...
316
 
316
 
317
	return best;
317
	return best;
318
}
318
}
Line 319... Line 319...
319
//EXPORT_SYMBOL(drm_mm_search_free);
319
EXPORT_SYMBOL(drm_mm_search_free);
320
 
320
 
321
int drm_mm_clean(struct drm_mm * mm)
321
int drm_mm_clean(struct drm_mm * mm)
Line 322... Line 322...
322
{
322
{
323
	struct list_head *head = &mm->ml_entry;
323
	struct list_head *head = &mm->ml_entry;
324
 
324
 
Line 325... Line 325...
325
	return (head->next->next == head);
325
	return (head->next->next == head);
326
}
326
}
327
//EXPORT_SYMBOL(drm_mm_clean);
327
EXPORT_SYMBOL(drm_mm_clean);
328
 
328
 
Line 334... Line 334...
334
	mm->num_unused = 0;
334
	mm->num_unused = 0;
335
	spin_lock_init(&mm->unused_lock);
335
	spin_lock_init(&mm->unused_lock);
Line 336... Line 336...
336
 
336
 
337
	return drm_mm_create_tail_node(mm, start, size, 0);
337
	return drm_mm_create_tail_node(mm, start, size, 0);
338
}
338
}
Line 339... Line 339...
339
//EXPORT_SYMBOL(drm_mm_init);
339
EXPORT_SYMBOL(drm_mm_init);
340
 
340
 
341
void drm_mm_takedown(struct drm_mm * mm)
341
void drm_mm_takedown(struct drm_mm * mm)
342
{
342
{
Line 364... Line 364...
364
	}
364
	}
365
	spin_unlock(&mm->unused_lock);
365
	spin_unlock(&mm->unused_lock);
Line 366... Line 366...
366
 
366
 
367
	BUG_ON(mm->num_unused != 0);
367
	BUG_ON(mm->num_unused != 0);
368
}
368
}