|
PostgreSQL Source Code git master
|


Go to the source code of this file.
Typedefs | |
| typedef struct dsa_area | dsa_area |
| typedef uint64 | dsa_pointer |
| typedef pg_atomic_uint64 | dsa_pointer_atomic |
| typedef dsm_handle | dsa_handle |
| #define DSA_ALLOC_HUGE 0x01 /* allow huge allocation (> 1 GB) */ |
| #define dsa_allocate | ( | area, | |
| size | |||
| ) | dsa_allocate_extended(area, size, 0) |
| #define dsa_allocate0 | ( | area, | |
| size | |||
| ) | dsa_allocate_extended(area, size, DSA_ALLOC_ZERO) |
| #define dsa_create | ( | tranche_id | ) |
| #define DSA_HANDLE_INVALID ((dsa_handle) DSM_HANDLE_INVALID) |
| #define DSA_MAX_SEGMENT_SIZE ((size_t) 1 << DSA_OFFSET_WIDTH) |
| #define dsa_pointer_atomic_compare_exchange pg_atomic_compare_exchange_u64 |
| #define dsa_pointer_atomic_fetch_add pg_atomic_fetch_add_u64 |
| #define dsa_pointer_atomic_init pg_atomic_init_u64 |
| #define dsa_pointer_atomic_read pg_atomic_read_u64 |
| #define dsa_pointer_atomic_write pg_atomic_write_u64 |
| #define InvalidDsaPointer ((dsa_pointer) 0) |
|
extern |
Definition at line 686 of file dsa.c.
References alloc_object(), AllocHugeSizeIsValid, AllocSizeIsValid, Assert, dsa_area::control, DSA_ALLOC_HUGE, DSA_ALLOC_NO_OOM, DSA_ALLOC_ZERO, DSA_AREA_LOCK, dsa_free(), dsa_get_address(), DSA_MAKE_POINTER, DSA_SCLASS_BLOCK_OF_SPANS, DSA_SCLASS_LOCK, DSA_SCLASS_SPAN_LARGE, dsa_size_class_map, DSA_SIZE_CLASS_MAP_QUANTUM, dsa_size_classes, DsaPointerIsValid, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, FATAL, fb(), FPM_PAGE_SIZE, fpm_size_to_pages, FreePageManagerGet(), get_best_segment(), get_segment_index, init_span(), InvalidDsaPointer, lengthof, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), make_new_segment(), and dsa_area_control::pools.
Referenced by dshash_create(), pagetable_allocate(), pgstat_init_entry(), and resize().
|
extern |
Definition at line 510 of file dsa.c.
References attach_internal(), dsa_on_dsm_detach_release_in_place(), dsm_attach(), dsm_segment_address(), ereport, errcode(), errmsg(), ERROR, fb(), on_dsm_detach(), and PointerGetDatum().
Referenced by GetNamedDSA(), GetNamedDSHash(), init_dsm_registry(), initGlobalChannelTable(), logicalrep_launcher_attach_dshmem(), and TidStoreAttach().
|
extern |
Definition at line 560 of file dsa.c.
References attach_internal(), DSA_HANDLE_INVALID, dsa_on_dsm_detach_release_in_place(), fb(), on_dsm_detach(), and PointerGetDatum().
Referenced by AttachSession(), ParallelQueryMain(), and pgstat_attach_shmem().
|
extern |
Definition at line 421 of file dsa.c.
References create_internal(), dsa_on_dsm_detach_release_in_place(), dsm_create(), dsm_pin_segment(), dsm_segment_address(), dsm_segment_handle(), on_dsm_detach(), and PointerGetDatum().
Referenced by TidStoreCreateShared().
|
extern |
Definition at line 471 of file dsa.c.
References create_internal(), dsa_on_dsm_detach_release_in_place(), DSM_HANDLE_INVALID, fb(), on_dsm_detach(), and PointerGetDatum().
Definition at line 2002 of file dsa.c.
References dsm_detach(), fb(), dsa_area::high_segment_index, i, pfree(), dsa_segment_map::segment, and dsa_area::segment_maps.
Referenced by DetachSession(), ExecParallelCleanup(), ParallelQueryMain(), pgstat_detach_shmem(), StatsShmemInit(), test_basic(), test_dsa_basic(), test_dsa_resowners(), test_empty(), test_random(), TidStoreDestroy(), and TidStoreDetach().
Definition at line 1138 of file dsa.c.
References check_for_freed_segments_locked(), dsa_area::control, DSA_AREA_LOCK, DSA_FULLNESS_CLASSES, dsa_get_address(), DSA_NUM_SEGMENT_BINS, DSA_NUM_SIZE_CLASSES, DSA_POINTER_FORMAT, DSA_SCLASS_BLOCK_OF_SPANS, DSA_SCLASS_LOCK, DSA_SCLASS_SPAN_LARGE, DSA_SEGMENT_INDEX_NONE, dsa_size_classes, DsaPointerIsValid, fb(), fpm_largest, fprintf, get_segment_by_index(), dsa_area_control::handle, i, j, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), dsa_area_control::max_total_segment_size, dsa_area_control::pinned, dsa_area_control::pools, dsa_area_control::refcnt, dsa_area_control::segment_bins, dsa_area_pool::spans, and dsa_area_control::total_segment_size.
|
extern |
Definition at line 841 of file dsa.c.
References add_span_to_fullness_class(), Assert, check_for_freed_segments(), destroy_superblock(), DSA_AREA_LOCK, DSA_EXTRACT_OFFSET, DSA_EXTRACT_SEGMENT_NUMBER, dsa_free(), DSA_FULLNESS_CLASSES, dsa_get_address(), DSA_SCLASS_LOCK, DSA_SCLASS_SPAN_LARGE, dsa_size_classes, DSA_SUPERBLOCK_SIZE, fb(), FPM_PAGE_SIZE, FreePageManagerPut(), get_segment_by_index(), InvalidDsaPointer, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), NextFreeObjectIndex, rebin_segment(), and unlink_span().
Referenced by CleanupListenersOnExit(), delete_item_from_bucket(), delete_key_from_bucket(), destroy_superblock(), dsa_allocate_extended(), dsa_free(), dshash_create(), dshash_destroy(), ExecHashTableDetach(), ExecHashTableDetachBatch(), ExecParallelCleanup(), ExecParallelHashIncreaseNumBatches(), ExecParallelHashIncreaseNumBuckets(), ExecParallelHashRepartitionFirst(), ExecParallelReinitialize(), find_or_make_matching_shared_tupledesc(), pagetable_free(), pgstat_free_entry(), PrepareTableEntriesForListen(), RemoveListenerFromChannel(), resize(), RT_FREE(), RT_FREE_LEAF(), RT_FREE_NODE(), set_val_in_hash(), tbm_free_shared_area(), test_dsa_basic(), and test_dsa_resowners().
|
extern |
Definition at line 957 of file dsa.c.
References Assert, check_for_freed_segments(), DSA_EXTRACT_OFFSET, DSA_EXTRACT_SEGMENT_NUMBER, DSA_MAX_SEGMENTS, DsaPointerIsValid, fb(), get_segment_by_index(), dsa_segment_map::mapped_address, dsa_area::segment_maps, and unlikely.
Referenced by add_span_to_fullness_class(), alloc_object(), ApplyPendingListenActions(), CleanupListenersOnExit(), delete_item_from_bucket(), delete_key_from_bucket(), destroy_superblock(), dsa_allocate_extended(), dsa_dump(), dsa_free(), dsa_trim(), dshash_attach(), dshash_create(), dshash_destroy(), dshash_dump(), dshash_seq_next(), ensure_active_superblock(), ensure_valid_bucket_pointers(), ExecHashTableDetachBatch(), ExecParallelHashEnsureBatchAccessors(), ExecParallelHashFirstTuple(), ExecParallelHashIncreaseNumBatches(), ExecParallelHashIncreaseNumBuckets(), ExecParallelHashJoinSetUpBatches(), ExecParallelHashNextTuple(), ExecParallelHashPopChunkQueue(), ExecParallelHashRepartitionRest(), ExecParallelHashTableAlloc(), ExecParallelHashTableSetCurrentBatch(), ExecParallelHashTupleAlloc(), find_in_bucket(), find_or_make_matching_shared_tupledesc(), get_val_in_hash(), init_span(), insert_into_bucket(), insert_item_into_bucket(), lookup_rowtype_tupdesc_internal(), pagetable_allocate(), ParallelQueryMain(), pgstat_build_snapshot(), pgstat_get_entry_ref(), pgstat_init_entry(), pgstat_reinit_entry(), pgstat_reset_matching_entries(), pgstat_write_statsfile(), PrepareTableEntriesForListen(), resize(), RT_PTR_SET_LOCAL(), SerializeParamExecParams(), set_val_in_hash(), share_tupledesc(), shared_record_table_compare(), shared_record_table_hash(), SignalBackends(), tbm_attach_shared_iterate(), tbm_free_shared_area(), tbm_prepare_shared_iterate(), test_custom_stats_var_create(), test_custom_stats_var_from_serialized_data(), test_custom_stats_var_report(), test_custom_stats_var_to_serialized_data(), test_dsa_basic(), test_dsa_resowners(), transfer_first_span(), and unlink_span().
|
extern |
Definition at line 498 of file dsa.c.
References Assert, dsa_area::control, DSA_HANDLE_INVALID, and dsa_area_control::handle.
Referenced by GetNamedDSA(), GetNamedDSHash(), init_dsm_registry(), initGlobalChannelTable(), logicalrep_launcher_attach_dshmem(), parallel_vacuum_init(), and parallel_vacuum_reset_dead_items().
Definition at line 1042 of file dsa.c.
References dsa_area::control, DSA_AREA_LOCK, LW_SHARED, LWLockAcquire(), LWLockRelease(), and dsa_area_control::total_segment_size.
Referenced by RT_MEMORY_USAGE().
|
extern |
Definition at line 1058 of file dsa.c.
References dsa_is_attached(), dsm_attach(), dsm_detach(), dsm_find_mapping(), dsm_segment_address(), ereport, errcode(), errmsg(), ERROR, fb(), dsa_area_control::lock, LW_SHARED, LWLockAcquire(), LWLockRelease(), and dsa_area_control::total_segment_size.
Referenced by pg_get_dsm_registry_allocations().
|
extern |
Definition at line 540 of file dsa.c.
References dsm_find_mapping(), and fb().
Referenced by dsa_get_total_size_from_handle(), GetNamedDSA(), and GetNamedDSHash().
Definition at line 1246 of file dsa.c.
References FPM_PAGE_SIZE, and MAXALIGN.
Referenced by create_internal(), ExecInitParallelPlan(), and pgstat_dsa_init_size().
|
extern |
Definition at line 591 of file dsa.c.
References DatumGetPointer(), dsa_release_in_place(), and fb().
Referenced by dsa_attach(), dsa_attach_in_place(), dsa_create_ext(), and dsa_create_in_place_ext().
Definition at line 605 of file dsa.c.
References DatumGetPointer(), dsa_release_in_place(), and fb().
Definition at line 990 of file dsa.c.
References dsa_area::control, DSA_AREA_LOCK, elog, ERROR, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), dsa_area_control::pinned, and dsa_area_control::refcnt.
Referenced by GetNamedDSA(), GetNamedDSHash(), init_dsm_registry(), initGlobalChannelTable(), logicalrep_launcher_attach_dshmem(), and StatsShmemInit().
Definition at line 650 of file dsa.c.
References dsm_pin_mapping(), fb(), dsa_area::high_segment_index, i, dsa_area::resowner, dsa_segment_map::segment, and dsa_area::segment_maps.
Referenced by AttachSession(), GetNamedDSA(), GetNamedDSHash(), GetSessionDsmHandle(), init_dsm_registry(), initGlobalChannelTable(), logicalrep_launcher_attach_dshmem(), pgstat_attach_shmem(), and test_create().
Definition at line 620 of file dsa.c.
References Assert, DSA_SEGMENT_HEADER_MAGIC, DSM_HANDLE_INVALID, dsm_unpin_segment(), fb(), dsa_area_control::handle, dsa_area_control::high_segment_index, i, dsa_area_control::lock, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), dsa_segment_header::magic, dsa_area_control::refcnt, dsa_area_control::segment_handles, and dsa_area_control::segment_header.
Referenced by dsa_on_dsm_detach_release_in_place(), dsa_on_shmem_exit_release_in_place(), and pgstat_detach_shmem().
Definition at line 1033 of file dsa.c.
References dsa_area::control, DSA_AREA_LOCK, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), and dsa_area_control::max_total_segment_size.
Referenced by StatsShmemInit().
Definition at line 1093 of file dsa.c.
References dsa_area::control, destroy_superblock(), dsa_get_address(), DSA_NUM_SIZE_CLASSES, DSA_SCLASS_LOCK, DSA_SCLASS_SPAN_LARGE, DsaPointerIsValid, fb(), LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), next, dsa_area_control::pools, and dsa_area_pool::spans.
Definition at line 1009 of file dsa.c.
References Assert, dsa_area::control, DSA_AREA_LOCK, elog, ERROR, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), dsa_area_control::pinned, and dsa_area_control::refcnt.