#include <debug.h>
#include <stddef.h>
Go to the source code of this file.
◆ calloc()
149 {
150 void *p;
152
153
157
158
162
163 return p;
164}
void * malloc(size_t size)
Definition: malloc.c:85
uint16_t size
Definition: mmu.h:0
#define NULL
Definition: stddef.h:4
void * memset(void *, int, size_t)
Definition: string.c:258
◆ free()
202 {
207
209
210
211#ifndef NDEBUG
212
214#endif
215
217
218
220
221
223 size_t i;
224
229 }
231 }
232
234 } else {
235
237 return;
238 }
239 }
240}
#define ASSERT(CONDITION)
Definition: debug.h:30
void list_push_front(struct list *, struct list_elem *)
Definition: list.c:195
struct list_elem * list_remove(struct list_elem *)
Definition: list.c:241
static struct arena * block_to_arena(struct block *)
Definition: malloc.c:244
static struct block * arena_to_block(struct arena *, size_t idx)
Definition: malloc.c:261
void palloc_free_multiple(void *, size_t page_cnt)
Definition: palloc.c:307
void palloc_free_page(void *)
Definition: palloc.c:333
size_t free_cnt
Definition: malloc.c:52
struct desc * desc
Definition: malloc.c:51
struct list_elem free_elem
Definition: malloc.c:57
size_t block_size
Definition: malloc.c:39
struct list free_list
Definition: malloc.c:41
struct lock lock
Definition: malloc.c:42
size_t blocks_per_arena
Definition: malloc.c:40
void lock_release(struct lock *)
Definition: synch.c:243
void lock_acquire(struct lock *)
Definition: synch.c:202
◆ malloc()
85 {
89
90
93
94
95
98 break;
100
101
106
107
108
112 return a + 1;
113 }
114
116
117
119 size_t i;
120
121
126 }
127
128
135 }
136 }
137
138
143 return b;
144}
struct list_elem * list_pop_front(struct list *)
Definition: list.c:251
void list_push_back(struct list *, struct list_elem *)
Definition: list.c:202
bool list_empty(struct list *)
Definition: list.c:296
#define list_entry(LIST_ELEM, STRUCT, MEMBER)
Definition: list.h:103
static size_t desc_cnt
Definition: malloc.c:62
#define ARENA_MAGIC
Definition: malloc.c:46
static struct desc descs[10]
Definition: malloc.c:61
void * palloc_get_page(enum palloc_flags)
Definition: palloc.c:301
void * palloc_get_multiple(enum palloc_flags, size_t page_cnt)
Definition: palloc.c:263
#define DIV_ROUND_UP(X, STEP)
Definition: round.h:10
unsigned magic
Definition: malloc.c:50
#define PGSIZE
Definition: vaddr.h:20
◆ malloc_init()
| void malloc_init |
( |
void |
| ) |
|
69 {
71
79 }
80}
void list_init(struct list *)
Definition: list.c:58
static size_t block_size(void *block)
Definition: malloc.c:168
void lock_init(struct lock *)
Definition: synch.c:186
◆ realloc()
| void * realloc |
( |
void * |
old_block, |
|
|
size_t |
new_size |
|
) |
| |
183 {
184 if (new_size == 0) {
187 } else {
188 void *new_block =
malloc (new_size);
189 if (old_block !=
NULL && new_block !=
NULL) {
191 size_t min_size = new_size < old_size ? new_size : old_size;
192 memcpy (new_block, old_block, min_size);
194 }
195 return new_block;
196 }
197}
void free(void *p)
Definition: malloc.c:202
void * memcpy(void *, const void *, size_t)
Definition: string.c:7