#include <stdint.h>
#include <stddef.h>
Go to the source code of this file.
◆ palloc_flags
| Enumerator |
|---|
| PAL_ASSERT | |
| PAL_ZERO | |
| PAL_USER | |
8 {
12};
@ PAL_ZERO
Definition: palloc.h:10
@ PAL_USER
Definition: palloc.h:11
@ PAL_ASSERT
Definition: palloc.h:9
◆ palloc_free_multiple()
| void palloc_free_multiple |
( |
void * |
pages, |
|
|
size_t |
page_cnt |
|
) |
| |
307 {
309 size_t page_idx;
310
312 if (pages ==
NULL || page_cnt == 0)
313 return;
314
319 else
321
323
324#ifndef NDEBUG
326#endif
329}
void bitmap_set_multiple(struct bitmap *, size_t start, size_t cnt, bool)
Definition: bitmap.c:199
bool bitmap_all(const struct bitmap *, size_t start, size_t cnt)
Definition: bitmap.c:260
#define ASSERT(CONDITION)
Definition: debug.h:30
#define NOT_REACHED()
Definition: debug.h:34
static bool page_from_pool(const struct pool *, void *page)
Definition: palloc.c:359
static struct pool kernel_pool user_pool
Definition: palloc.c:37
#define NULL
Definition: stddef.h:4
void * memset(void *, int, size_t)
Definition: string.c:258
struct bitmap * used_map
Definition: palloc.c:32
uint8_t * base
Definition: palloc.c:33
#define PGSIZE
Definition: vaddr.h:20
#define pg_no(va)
Definition: vaddr.h:26
#define pg_ofs(va)
Definition: vaddr.h:24
◆ palloc_free_page()
| void palloc_free_page |
( |
void * |
page | ) |
|
333 {
335}
void palloc_free_multiple(void *pages, size_t page_cnt)
Definition: palloc.c:307
◆ palloc_get_multiple()
| void * palloc_get_multiple |
( |
enum |
palloc_flags, |
|
|
size_t |
page_cnt |
|
) |
| |
263 {
265
269 void *pages;
270
273 else
275
276 if (pages) {
279 } else {
281 PANIC (
"palloc_get: out of pages");
282 }
283
284 return pages;
285}
size_t bitmap_scan_and_flip(struct bitmap *, size_t start, size_t cnt, bool)
Definition: bitmap.c:293
#define BITMAP_ERROR
Definition: bitmap.h:36
#define PANIC(...)
Definition: debug.h:14
struct lock lock
Definition: palloc.c:31
void lock_release(struct lock *)
Definition: synch.c:243
void lock_acquire(struct lock *)
Definition: synch.c:202
◆ palloc_get_page()
| void * palloc_get_page |
( |
enum |
palloc_flags | ) |
|
301 {
303}
void * palloc_get_multiple(enum palloc_flags flags, size_t page_cnt)
Definition: palloc.c:263
◆ palloc_init()
239 {
240
241
242 extern char _end;
243 struct area base_mem = { .
size = 0 };
244 struct area ext_mem = { .
size = 0 };
245
247 printf (
"Pintos booting with: \n");
248 printf (
"\tbase_mem: 0x%llx ~ 0x%llx (Usable: %'llu kB)\n",
250 printf (
"\text_mem: 0x%llx ~ 0x%llx (Usable: %'llu kB)\n",
254}
static void resolve_area_info(struct area *base_mem, struct area *ext_mem)
Definition: palloc.c:80
static void populate_pools(struct area *base_mem, struct area *ext_mem)
Definition: palloc.c:123
int printf(const char *,...) PRINTF_FORMAT(1
uint64_t start
Definition: palloc.c:68
uint64_t size
Definition: palloc.c:70
uint64_t end
Definition: palloc.c:69
◆ user_page_limit