Rev 1066 | 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 */ |
||
2971 | 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 */ |
||
2971 | Serge | 17 | } frame_t; |
854 | serge | 18 | |
19 | |||
2971 | Serge | 20 | |
1066 | serge | 21 | { |
22 | SPINLOCK_DECLARE(lock); /**< this lock protects everything below */ |
||
2971 | Serge | 23 | pfn_t base; /**< frame_no of the first frame in the frames array */ |
24 | count_t count; /**< Size of zone */ |
||
25 | |||
854 | serge | 26 | |
2971 | Serge | 27 | count_t free_count; /**< number of free frame_t structures */ |
28 | count_t busy_count; /**< number of busy frame_t structures */ |
||
29 | |||
854 | serge | 30 | |
2971 | Serge | 31 | link_t order[21]; |
32 | |||
854 | serge | 33 | |
2971 | Serge | 34 | } zone_t; |
854 | serge | 35 | |
36 | |||
889 | serge | 37 | |
859 | serge | 38 | { |
39 | link_t link; |
||
889 | serge | 40 | link_t adj; |
41 | addr_t base; |
||
42 | size_t size; |
||
43 | void *parent; |
||
44 | u32_t state; |
||
45 | }md_t; |
||
46 | |||
854 | serge | 47 | |
48 | |||
2971 | Serge | 49 | #define PG_WRITE 2 |
50 | #define PG_USER 4 |
||
51 | |||
859 | serge | 52 | |
2971 | Serge | 53 | #define PG_UW 7 |
54 | |||
864 | serge | 55 | |
889 | serge | 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) |
||
2971 | Serge | 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 |