Subversion Repositories Kolibri OS

Rev

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

Rev 3764 Rev 4075
Line 667... Line 667...
667
 
667
 
668
	return (head->next->next == head);
668
	return (head->next->next == head);
669
}
669
}
Line 670... Line 670...
670
EXPORT_SYMBOL(drm_mm_clean);
670
EXPORT_SYMBOL(drm_mm_clean);
671
 
671
 
672
int drm_mm_init(struct drm_mm * mm, unsigned long start, unsigned long size)
672
void drm_mm_init(struct drm_mm * mm, unsigned long start, unsigned long size)
673
{
673
{
674
	INIT_LIST_HEAD(&mm->hole_stack);
674
	INIT_LIST_HEAD(&mm->hole_stack);
675
	INIT_LIST_HEAD(&mm->unused_nodes);
675
	INIT_LIST_HEAD(&mm->unused_nodes);
Line 688... Line 688...
688
	mm->head_node.start = start + size;
688
	mm->head_node.start = start + size;
689
	mm->head_node.size = start - mm->head_node.start;
689
	mm->head_node.size = start - mm->head_node.start;
690
	list_add_tail(&mm->head_node.hole_stack, &mm->hole_stack);
690
	list_add_tail(&mm->head_node.hole_stack, &mm->hole_stack);
Line 691... Line 691...
691
 
691
 
692
	mm->color_adjust = NULL;
-
 
693
 
-
 
694
	return 0;
692
	mm->color_adjust = NULL;
695
}
693
}
Line 696... Line 694...
696
EXPORT_SYMBOL(drm_mm_init);
694
EXPORT_SYMBOL(drm_mm_init);
697
 
695
 
698
void drm_mm_takedown(struct drm_mm * mm)
696
void drm_mm_takedown(struct drm_mm * mm)
Line 699... Line 697...
699
{
697
{
700
	struct drm_mm_node *entry, *next;
698
	struct drm_mm_node *entry, *next;
701
 
699
 
702
	if (!list_empty(&mm->head_node.node_list)) {
700
	if (WARN(!list_empty(&mm->head_node.node_list),
Line 703... Line 701...
703
		DRM_ERROR("Memory manager not clean. Delaying takedown\n");
701
		 "Memory manager not clean. Delaying takedown\n")) {
704
		return;
702
		return;
Line 714... Line 712...
714
 
712
 
715
	BUG_ON(mm->num_unused != 0);
713
	BUG_ON(mm->num_unused != 0);
716
}
714
}
Line 717... Line 715...
717
EXPORT_SYMBOL(drm_mm_takedown);
715
EXPORT_SYMBOL(drm_mm_takedown);
-
 
716
 
718
 
717
static unsigned long drm_mm_debug_hole(struct drm_mm_node *entry,
719
void drm_mm_debug_table(struct drm_mm *mm, const char *prefix)
-
 
720
{
-
 
721
	struct drm_mm_node *entry;
718
				       const char *prefix)
Line -... Line 719...
-
 
719
{
722
	unsigned long total_used = 0, total_free = 0, total = 0;
720
	unsigned long hole_start, hole_end, hole_size;
723
	unsigned long hole_start, hole_end, hole_size;
721
 
724
 
722
	if (entry->hole_follows) {
725
	hole_start = drm_mm_hole_node_start(&mm->head_node);
-
 
726
	hole_end = drm_mm_hole_node_end(&mm->head_node);
723
		hole_start = drm_mm_hole_node_start(entry);
727
	hole_size = hole_end - hole_start;
724
		hole_end = drm_mm_hole_node_end(entry);
728
	if (hole_size)
725
	hole_size = hole_end - hole_start;
729
		printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n",
726
		printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n",
-
 
727
			prefix, hole_start, hole_end,
-
 
728
			hole_size);
-
 
729
		return hole_size;
-
 
730
	}
-
 
731
 
-
 
732
	return 0;
-
 
733
}
-
 
734
 
-
 
735
void drm_mm_debug_table(struct drm_mm *mm, const char *prefix)
-
 
736
{
-
 
737
	struct drm_mm_node *entry;
Line 730... Line 738...
730
			prefix, hole_start, hole_end,
738
	unsigned long total_used = 0, total_free = 0, total = 0;
731
			hole_size);
739
 
732
	total_free += hole_size;
740
	total_free += drm_mm_debug_hole(&mm->head_node, prefix);
733
 
741
 
734
	drm_mm_for_each_node(entry, mm) {
742
	drm_mm_for_each_node(entry, mm) {
735
		printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: used\n",
-
 
736
			prefix, entry->start, entry->start + entry->size,
-
 
737
			entry->size);
-
 
738
		total_used += entry->size;
743
		printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: used\n",
739
 
-
 
740
		if (entry->hole_follows) {
-
 
741
			hole_start = drm_mm_hole_node_start(entry);
-
 
742
			hole_end = drm_mm_hole_node_end(entry);
-
 
743
			hole_size = hole_end - hole_start;
-
 
744
			printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n",
-
 
745
				prefix, hole_start, hole_end,
744
			prefix, entry->start, entry->start + entry->size,
746
				hole_size);
745
			entry->size);
Line 747... Line 746...
747
			total_free += hole_size;
746
		total_used += entry->size;
748
		}
747
		total_free += drm_mm_debug_hole(entry, prefix);