Rev 892 | 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 link; |
||
1066 | serge | 4 | addr_t base; |
5 | size_t size; |
||
6 | addr_t pte[0]; |
||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 | { |
||
13 | link_t buddy_link; /**< link to the next free block inside one order */ |
||
854 | serge | 14 | u16_t refcount; /**< tracking of shared frames */ |
1066 | serge | 15 | u16_t buddy_order; /**< buddy system block order */ |
16 | void *parent; /**< If allocated by slab, this points there */ |
||
854 | serge | 17 | } frame_t; |
18 | |||
19 | |||
1066 | serge | 20 | { |
21 | SPINLOCK_DECLARE(lock); /**< this lock protects everything below */ |
||
854 | serge | 22 | pfn_t base; /**< frame_no of the first frame in the frames array */ |
23 | count_t count; /**< Size of zone */ |
||
24 | |||
25 | |||
26 | count_t free_count; /**< number of free frame_t structures */ |
||
27 | count_t busy_count; /**< number of busy frame_t structures */ |
||
28 | |||
29 | |||
30 | link_t order[21]; |
||
31 | |||
32 | |||
33 | } zone_t; |
||
34 | |||
35 | |||
889 | serge | 36 | |
859 | serge | 37 | { |
38 | link_t link; |
||
889 | serge | 39 | link_t adj; |
40 | addr_t base; |
||
41 | size_t size; |
||
42 | void *parent; |
||
43 | u32_t state; |
||
44 | }md_t; |
||
45 | |||
854 | serge | 46 | |
47 | |||
864 | serge | 48 | #define PG_WRITE 2 |
889 | serge | 49 | #define PG_USER 4 |
50 | |||
859 | serge | 51 | |
889 | serge | 52 | #define PG_UW 7 |
53 | |||
864 | serge | 54 | |
889 | serge | 55 | |
56 | |||
854 | serge | 57 | #define PAGE_WIDTH 12 |
1066 | serge | 58 | |
854 | serge | 59 | |
60 | |||
864 | serge | 61 | # define KA2PA(x) (((addr_t) (x)) - OS_BASE) |
62 | |||
63 | |||
854 | serge | 64 | { |
65 | if (!size) |
||
66 | return 0; |
||
67 | return (count_t) ((size - 1) >> PAGE_WIDTH) + 1; |
||
1066 | serge | 68 | } |
854 | serge | 69 | |
70 | |||
71 | { |
||
72 | return (addr_t) (frame << PAGE_WIDTH); |
||
1066 | serge | 73 | } |
854 | serge | 74 | |
75 | |||
76 | { |
||
77 | return (pfn_t) (addr >> PAGE_WIDTH); |
||
1066 | serge | 78 | }; |
854 | serge | 79 | |
80 | |||
81 | void init_pg_slab(); |
||
1066 | serge | 82 | |
854 | serge | 83 | |
889 | serge | 84 | void __fastcall frame_set_parent(pfn_t pfn, void *data); |
85 | |||
86 | |||
87 | |||
859 | serge | 88 | void __fastcall core_free(addr_t frame); |
889 | serge | 89 | |
854 | serge | 90 | |
91 | |||
1066 | serge | 92 | |
859 | serge | 93 | |
864 | serge | 94 | |
890 | serge | 95 | void __fastcall md_free(md_t *md); |
892 | serge | 96 | |
890 | serge | 97 | |
1066 | serge | 98 | void __fastcall __export mem_free(addr_t mem) asm ("MemFree"); |
99 | |||
890 | serge | 100 | |
1066 | serge | 101 | size_t __fastcall frame_free(addr_t addr);><>>>>>>>>>>> |
102 |