#include "threads/palloc.h"
#include <bitmap.h>
#include <debug.h>
#include <inttypes.h>
#include <round.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include "threads/loader.h"
#include "threads/synch.h"
#include "threads/vaddr.h"
Go to the source code of this file.
Data Structures | |
struct | pool |
Functions | |
static void | init_pool (struct pool *, void *base, size_t page_cnt, const char *name) |
static bool | page_from_pool (const struct pool *, void *page) |
void | palloc_init (void) |
void * | palloc_get_multiple (enum palloc_flags flags, size_t page_cnt) |
void * | palloc_get_page (enum palloc_flags flags) |
void | palloc_free_multiple (void *pages, size_t page_cnt) |
void | palloc_free_page (void *page) |
Variables | |
struct pool kernel_pool | user_pool |
size_t | user_page_limit = SIZE_MAX |
Definition at line 157 of file palloc.c.
References pool::base, bitmap_buf_size(), bitmap_create_in_buf(), DIV_ROUND_UP, pool::lock, lock_init(), PANIC, PGSIZE, printf(), and pool::used_map.
Referenced by palloc_init().
static bool page_from_pool | ( | const struct pool * | pool, | |
void * | page | |||
) | [static] |
Definition at line 178 of file palloc.c.
References pool::base, bitmap_size(), pg_no(), and pool::used_map.
Referenced by palloc_free_multiple().
void palloc_free_multiple | ( | void * | pages, | |
size_t | page_cnt | |||
) |
Definition at line 121 of file palloc.c.
References ASSERT, pool::base, bitmap_all(), bitmap_set_multiple(), memset(), NOT_REACHED, NULL, page_from_pool(), pg_no(), pg_ofs(), PGSIZE, pool::used_map, and user_pool.
Referenced by free(), and palloc_free_page().
void palloc_free_page | ( | void * | page | ) |
Definition at line 149 of file palloc.c.
References palloc_free_multiple().
Referenced by free(), fsutil_cat(), load_segment(), pagedir_destroy(), process_execute(), schedule_tail(), setup_stack(), start_process(), and uhci_destroy_info().
void* palloc_get_multiple | ( | enum palloc_flags | flags, | |
size_t | page_cnt | |||
) |
Definition at line 74 of file palloc.c.
References pool::base, BITMAP_ERROR, bitmap_scan_and_flip(), pool::lock, lock_acquire(), lock_release(), memset(), NULL, PAL_ASSERT, PAL_USER, PAL_ZERO, PANIC, PGSIZE, pool::used_map, and user_pool.
Referenced by malloc(), msc_attached(), and palloc_get_page().
void* palloc_get_page | ( | enum palloc_flags | flags | ) |
Definition at line 114 of file palloc.c.
References palloc_get_multiple().
Referenced by fsutil_cat(), load_segment(), lookup_page(), malloc(), pagedir_create(), paging_init(), pci_zone_init(), process_execute(), setup_stack(), thread_create(), tss_init(), and uhci_create_info().
void palloc_init | ( | void | ) |
Definition at line 49 of file palloc.c.
References init_pool(), PGSIZE, ptov(), ram_pages, user_page_limit, and user_pool.
Referenced by main().
size_t user_page_limit = SIZE_MAX |
Definition at line 38 of file palloc.c.
Referenced by palloc_free_multiple(), palloc_get_multiple(), and palloc_init().