PostgreSQL Source Code git master
|
Go to the source code of this file.
Data Structures | |
struct | FreePageManager |
Macros | |
#define | FPM_PAGE_SIZE 4096 |
#define | FPM_NUM_FREELISTS 129 |
#define | fpm_page_to_pointer(base, page) |
#define | fpm_pointer_to_page(base, ptr) (((Size) (((char *) (ptr)) - (base))) / FPM_PAGE_SIZE) |
#define | fpm_size_to_pages(sz) (((sz) + FPM_PAGE_SIZE - 1) / FPM_PAGE_SIZE) |
#define | fpm_pointer_is_page_aligned(base, ptr) (((Size) (((char *) (ptr)) - (base))) % FPM_PAGE_SIZE == 0) |
#define | fpm_relptr_is_page_aligned(base, relptr) (relptr_offset(relptr) % FPM_PAGE_SIZE == 0) |
#define | fpm_segment_base(fpm) (((char *) fpm) - relptr_offset(fpm->self)) |
#define | fpm_largest(fpm) (fpm->contiguous_pages) |
Typedefs | |
typedef struct FreePageSpanLeader | FreePageSpanLeader |
typedef struct FreePageBtree | FreePageBtree |
typedef struct FreePageManager | FreePageManager |
Functions | |
relptr_declare (FreePageBtree, RelptrFreePageBtree) | |
relptr_declare (FreePageManager, RelptrFreePageManager) | |
relptr_declare (FreePageSpanLeader, RelptrFreePageSpanLeader) | |
void | FreePageManagerInitialize (FreePageManager *fpm, char *base) |
bool | FreePageManagerGet (FreePageManager *fpm, Size npages, Size *first_page) |
void | FreePageManagerPut (FreePageManager *fpm, Size first_page, Size npages) |
char * | FreePageManagerDump (FreePageManager *fpm) |
#define fpm_largest | ( | fpm | ) | (fpm->contiguous_pages) |
Definition at line 88 of file freepage.h.
#define FPM_NUM_FREELISTS 129 |
Definition at line 40 of file freepage.h.
#define FPM_PAGE_SIZE 4096 |
Definition at line 30 of file freepage.h.
#define fpm_page_to_pointer | ( | base, | |
page | |||
) |
Definition at line 67 of file freepage.h.
#define fpm_pointer_is_page_aligned | ( | base, | |
ptr | |||
) | (((Size) (((char *) (ptr)) - (base))) % FPM_PAGE_SIZE == 0) |
Definition at line 78 of file freepage.h.
#define fpm_pointer_to_page | ( | base, | |
ptr | |||
) | (((Size) (((char *) (ptr)) - (base))) / FPM_PAGE_SIZE) |
Definition at line 70 of file freepage.h.
#define fpm_relptr_is_page_aligned | ( | base, | |
relptr | |||
) | (relptr_offset(relptr) % FPM_PAGE_SIZE == 0) |
Definition at line 80 of file freepage.h.
#define fpm_segment_base | ( | fpm | ) | (((char *) fpm) - relptr_offset(fpm->self)) |
Definition at line 84 of file freepage.h.
#define fpm_size_to_pages | ( | sz | ) | (((sz) + FPM_PAGE_SIZE - 1) / FPM_PAGE_SIZE) |
Definition at line 74 of file freepage.h.
typedef struct FreePageBtree FreePageBtree |
Definition at line 22 of file freepage.h.
typedef struct FreePageManager FreePageManager |
Definition at line 23 of file freepage.h.
typedef struct FreePageSpanLeader FreePageSpanLeader |
Definition at line 21 of file freepage.h.
char * FreePageManagerDump | ( | FreePageManager * | fpm | ) |
Definition at line 424 of file freepage.c.
References appendStringInfo(), appendStringInfoString(), FreePageManager::btree_depth, FreePageManager::btree_recycle, FreePageManager::btree_root, buf, FreePageManager::contiguous_pages, FPM_NUM_FREELISTS, fpm_segment_base, FreePageManager::freelist, FreePageManagerDumpBtree(), FreePageManagerDumpSpans(), initStringInfo(), relptr_access, relptr_is_null, relptr_offset, root, FreePageManager::self, FreePageManager::singleton_first_page, and FreePageManager::singleton_npages.
bool FreePageManagerGet | ( | FreePageManager * | fpm, |
Size | npages, | ||
Size * | first_page | ||
) |
Definition at line 210 of file freepage.c.
References Assert, FreePageManager::contiguous_pages, FreePageBtreeCleanup(), FreePageManagerGetInternal(), FreePageManagerLargestContiguous(), and FreePageManagerUpdateLargest().
Referenced by dsa_allocate_extended(), dsm_create(), and ensure_active_superblock().
void FreePageManagerInitialize | ( | FreePageManager * | fpm, |
char * | base | ||
) |
Definition at line 183 of file freepage.c.
References FreePageManager::btree_depth, FreePageManager::btree_recycle, FreePageManager::btree_recycle_count, FreePageManager::btree_root, FreePageManager::contiguous_pages, FreePageManager::contiguous_pages_dirty, FPM_NUM_FREELISTS, FreePageManager::freelist, relptr_store, FreePageManager::self, FreePageManager::singleton_first_page, and FreePageManager::singleton_npages.
Referenced by create_internal(), dsm_shmem_init(), and make_new_segment().
void FreePageManagerPut | ( | FreePageManager * | fpm, |
Size | first_page, | ||
Size | npages | ||
) |
Definition at line 379 of file freepage.c.
References Assert, FreePageManager::contiguous_pages, FreePageBtreeCleanup(), FreePageManagerLargestContiguous(), FreePageManagerPutInternal(), and FreePageManagerUpdateLargest().
Referenced by create_internal(), destroy_superblock(), dsa_free(), dsm_create(), dsm_detach(), dsm_shmem_init(), dsm_unpin_segment(), and make_new_segment().
relptr_declare | ( | FreePageBtree | , |
RelptrFreePageBtree | |||
) |
relptr_declare | ( | FreePageManager | , |
RelptrFreePageManager | |||
) |
relptr_declare | ( | FreePageSpanLeader | , |
RelptrFreePageSpanLeader | |||
) |