Subversion Repositories Kolibri OS

Rev

Rev 854 | Rev 864 | 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
 
859 serge 32
# define KA2PA(x) (((addr_t) (x)) - OS_BASE)
33
34
 
854 serge 35
#define FRAME_WIDTH  12
36
37
 
38
39
 
40
{
41
	if (!size)
42
		return 0;
43
  return (count_t) ((size - 1) >> FRAME_WIDTH) + 1;
44
}
45
46
 
47
{
48
  return (addr_t) (frame << FRAME_WIDTH);
49
}
50
51
 
52
{
53
	return (pfn_t) (addr >> FRAME_WIDTH);
54
};
55
56
 
57
58
 
859 serge 59
void __fastcall core_free(addr_t frame);
60
854 serge 61
 
62
pfn_t __stdcall alloc_pages(count_t count) __asm__ ("_alloc_pages") __attribute__ ((deprecated));
63
64
 
65
859 serge 66
 
67
void* __fastcall frame_get_parent(pfn_t pfn);
68