Subversion Repositories Kolibri OS

Rev

Rev 864 | Rev 889 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
854 serge 1
 
2
{
3
  link_t buddy_link;        /**< link to the next free block inside one  order */
4
  count_t refcount;         /**< tracking of shared frames  */
5
  u32_t buddy_order;        /**< buddy system block order */
6
  void *parent;             /**< If allocated by slab, this points there */
7
} frame_t;
8
9
 
10
  SPINLOCK_DECLARE(lock);   /**< this lock protects everything below */
11
  pfn_t base;               /**< frame_no of the first frame in the frames array */
12
  count_t count;            /**< Size of zone */
13
14
 
15
  count_t free_count;       /**< number of free frame_t structures */
16
  count_t busy_count;       /**< number of busy frame_t structures */
17
18
 
19
  link_t order[21];
20
21
 
22
} zone_t;
23
24
 
859 serge 25
{
26
   count_t count;
27
   addr_t  frames[18];
28
}phismem_t;
29
854 serge 30
 
31
 
864 serge 32
859 serge 33
 
864 serge 34
 
854 serge 35
#define FRAME_WIDTH  12
36
37
 
38
39
 
864 serge 40
 
41
# define KA2PA(x) (((addr_t) (x)) - OS_BASE)
42
43
 
854 serge 44
{
45
	if (!size)
46
		return 0;
47
  return (count_t) ((size - 1) >> FRAME_WIDTH) + 1;
48
}
49
50
 
51
{
52
  return (addr_t) (frame << FRAME_WIDTH);
53
}
54
55
 
56
{
57
	return (pfn_t) (addr >> FRAME_WIDTH);
58
};
59
60
 
61
62
 
859 serge 63
void __fastcall core_free(addr_t frame);
64
854 serge 65
 
66
pfn_t __stdcall alloc_pages(count_t count) __asm__ ("_alloc_pages") __attribute__ ((deprecated));
67
68
 
69
859 serge 70
 
71
void* __fastcall frame_get_parent(pfn_t pfn);
72
864 serge 73
 
888 serge 74