PostgreSQL Source Code git master
Macros | Functions
atomics.h File Reference
#include <limits.h>
#include "port/atomics/fallback.h"
#include "port/atomics/generic.h"
Include dependency graph for atomics.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define  INSIDE_ATOMICS_H
 
 
 
 
 
#define  pg_spin_delay()   pg_spin_delay_impl()
 

Functions

static void  pg_atomic_init_flag (volatile pg_atomic_flag *ptr)
 
static bool  pg_atomic_test_set_flag (volatile pg_atomic_flag *ptr)
 
static bool  pg_atomic_unlocked_test_flag (volatile pg_atomic_flag *ptr)
 
static void  pg_atomic_clear_flag (volatile pg_atomic_flag *ptr)
 
static void  pg_atomic_init_u32 (volatile pg_atomic_uint32 *ptr, uint32 val)
 
static uint32  pg_atomic_read_u32 (volatile pg_atomic_uint32 *ptr)
 
 
static void  pg_atomic_write_u32 (volatile pg_atomic_uint32 *ptr, uint32 val)
 
 
 
 
static bool  pg_atomic_compare_exchange_u32 (volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval)
 
static uint32  pg_atomic_fetch_add_u32 (volatile pg_atomic_uint32 *ptr, int32 add_)
 
static uint32  pg_atomic_fetch_sub_u32 (volatile pg_atomic_uint32 *ptr, int32 sub_)
 
static uint32  pg_atomic_fetch_and_u32 (volatile pg_atomic_uint32 *ptr, uint32 and_)
 
static uint32  pg_atomic_fetch_or_u32 (volatile pg_atomic_uint32 *ptr, uint32 or_)
 
static uint32  pg_atomic_add_fetch_u32 (volatile pg_atomic_uint32 *ptr, int32 add_)
 
static uint32  pg_atomic_sub_fetch_u32 (volatile pg_atomic_uint32 *ptr, int32 sub_)
 
static void  pg_atomic_init_u64 (volatile pg_atomic_uint64 *ptr, uint64 val)
 
static uint64  pg_atomic_read_u64 (volatile pg_atomic_uint64 *ptr)
 
 
static void  pg_atomic_write_u64 (volatile pg_atomic_uint64 *ptr, uint64 val)
 
 
 
static bool  pg_atomic_compare_exchange_u64 (volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval)
 
static uint64  pg_atomic_fetch_add_u64 (volatile pg_atomic_uint64 *ptr, int64 add_)
 
static uint64  pg_atomic_fetch_sub_u64 (volatile pg_atomic_uint64 *ptr, int64 sub_)
 
static uint64  pg_atomic_fetch_and_u64 (volatile pg_atomic_uint64 *ptr, uint64 and_)
 
static uint64  pg_atomic_fetch_or_u64 (volatile pg_atomic_uint64 *ptr, uint64 or_)
 
static uint64  pg_atomic_add_fetch_u64 (volatile pg_atomic_uint64 *ptr, int64 add_)
 
static uint64  pg_atomic_sub_fetch_u64 (volatile pg_atomic_uint64 *ptr, int64 sub_)
 
 

Macro Definition Documentation

INSIDE_ATOMICS_H

#define INSIDE_ATOMICS_H

Definition at line 45 of file atomics.h.

pg_compiler_barrier

#define pg_compiler_barrier ( )    pg_compiler_barrier_impl()

Definition at line 129 of file atomics.h.

pg_memory_barrier

#define pg_memory_barrier ( )    pg_memory_barrier_impl()

Definition at line 141 of file atomics.h.

pg_read_barrier

#define pg_read_barrier ( )    pg_read_barrier_impl()

Definition at line 154 of file atomics.h.

pg_spin_delay

#define pg_spin_delay ( )    pg_spin_delay_impl()

Definition at line 160 of file atomics.h.

pg_write_barrier

#define pg_write_barrier ( )    pg_write_barrier_impl()

Definition at line 155 of file atomics.h.

Function Documentation

pg_atomic_add_fetch_u32()

static uint32 pg_atomic_add_fetch_u32 ( volatile pg_atomic_uint32ptr,
int32  add_ 
)
inlinestatic

Definition at line 422 of file atomics.h.

423{
425 return pg_atomic_add_fetch_u32_impl(ptr, add_);
426}
#define AssertPointerAlignment(ptr, bndr)
Definition: c.h:893

References AssertPointerAlignment.

Referenced by apply_handle_stream_abort(), apply_handle_stream_start(), compute_parallel_delay(), parallel_vacuum_process_safe_indexes(), parallel_vacuum_process_unsafe_indexes(), tbm_prepare_shared_iterate(), and test_atomic_uint32().

pg_atomic_add_fetch_u64()

static uint64 pg_atomic_add_fetch_u64 ( volatile pg_atomic_uint64ptr,
int64  add_ 
)
inlinestatic

Definition at line 557 of file atomics.h.

558{
559#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
561#endif
562 return pg_atomic_add_fetch_u64_impl(ptr, add_);
563}

References AssertPointerAlignment.

Referenced by EmitProcSignalBarrier(), and test_atomic_uint64().

pg_atomic_clear_flag()

static void pg_atomic_clear_flag ( volatile pg_atomic_flag *  ptr )
inlinestatic

Definition at line 205 of file atomics.h.

206{
207 pg_atomic_clear_flag_impl(ptr);
208}

Referenced by do_autovacuum(), FreeWorkerInfo(), and test_atomic_flag().

pg_atomic_compare_exchange_u32()

static bool pg_atomic_compare_exchange_u32 ( volatile pg_atomic_uint32ptr,
uint32expected,
uint32  newval 
)
inlinestatic

Definition at line 347 of file atomics.h.

349{
351 AssertPointerAlignment(expected, 4);
352
353 return pg_atomic_compare_exchange_u32_impl(ptr, expected, newval);
354}
static bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval)
Definition: arch-ppc.h:80
#define newval

References AssertPointerAlignment, newval, and pg_atomic_compare_exchange_u32_impl().

Referenced by ClockSweepTick(), LWLockAttemptLock(), LWLockWakeup(), MarkBufferDirty(), PinBuffer(), ProcArrayGroupClearXid(), test_atomic_uint32(), TransactionGroupUpdateXidStatus(), and UnpinBufferNoOwner().

pg_atomic_compare_exchange_u64()

static bool pg_atomic_compare_exchange_u64 ( volatile pg_atomic_uint64ptr,
uint64expected,
uint64  newval 
)
inlinestatic

Definition at line 510 of file atomics.h.

512{
513#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
515#endif
516 return pg_atomic_compare_exchange_u64_impl(ptr, expected, newval);
517}
bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval)
Definition: atomics.c:34

References AssertPointerAlignment, newval, and pg_atomic_compare_exchange_u64_impl().

Referenced by pg_atomic_monotonic_advance_u64(), and test_atomic_uint64().

pg_atomic_exchange_u32()

static uint32 pg_atomic_exchange_u32 ( volatile pg_atomic_uint32ptr,
uint32  newval 
)
inlinestatic

Definition at line 328 of file atomics.h.

329{
331
333}
static uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 newval)
Definition: generic-msvc.h:61

References AssertPointerAlignment, newval, and pg_atomic_exchange_u32_impl().

Referenced by pgarch_readyXlog(), ProcArrayGroupClearXid(), ProcessProcSignalBarrier(), StrategySyncStart(), test_atomic_uint32(), and TransactionGroupUpdateXidStatus().

pg_atomic_exchange_u64()

static uint64 pg_atomic_exchange_u64 ( volatile pg_atomic_uint64ptr,
uint64  newval 
)
inlinestatic

Definition at line 501 of file atomics.h.

502{
503#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
505#endif
506 return pg_atomic_exchange_u64_impl(ptr, newval);
507}

References AssertPointerAlignment, and newval.

Referenced by LWLockReleaseClearVar(), LWLockUpdateVar(), and test_atomic_uint64().

pg_atomic_fetch_add_u32()

static uint32 pg_atomic_fetch_add_u32 ( volatile pg_atomic_uint32ptr,
int32  add_ 
)
inlinestatic

Definition at line 364 of file atomics.h.

365{
367 return pg_atomic_fetch_add_u32_impl(ptr, add_);
368}
static uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_)
Definition: arch-ppc.h:131

References AssertPointerAlignment, and pg_atomic_fetch_add_u32_impl().

Referenced by ClockSweepTick(), ExecParallelHashJoinNewBatch(), find_or_make_matching_shared_tupledesc(), LWLockQueueSelf(), parallel_vacuum_process_safe_indexes(), pgstat_acquire_entry_ref(), pgstat_reinit_entry(), StrategyGetBuffer(), and test_atomic_uint32().

pg_atomic_fetch_add_u64()

static uint64 pg_atomic_fetch_add_u64 ( volatile pg_atomic_uint64ptr,
int64  add_ 
)
inlinestatic

Definition at line 520 of file atomics.h.

521{
522#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
524#endif
525 return pg_atomic_fetch_add_u64_impl(ptr, add_);
526}
uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_)
Definition: atomics.c:62

References AssertPointerAlignment, and pg_atomic_fetch_add_u64_impl().

Referenced by GetFakeLSNForUnloggedRel(), pgstat_init_entry(), pgstat_request_entry_refs_gc(), table_block_parallelscan_nextpage(), and test_atomic_uint64().

pg_atomic_fetch_and_u32()

static uint32 pg_atomic_fetch_and_u32 ( volatile pg_atomic_uint32ptr,
uint32  and_ 
)
inlinestatic

Definition at line 394 of file atomics.h.

395{
397 return pg_atomic_fetch_and_u32_impl(ptr, and_);
398}

References AssertPointerAlignment.

Referenced by LWLockDequeueSelf(), LWLockWaitListUnlock(), and test_atomic_uint32().

pg_atomic_fetch_and_u64()

static uint64 pg_atomic_fetch_and_u64 ( volatile pg_atomic_uint64ptr,
uint64  and_ 
)
inlinestatic

Definition at line 539 of file atomics.h.

540{
541#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
543#endif
544 return pg_atomic_fetch_and_u64_impl(ptr, and_);
545}

References AssertPointerAlignment.

Referenced by test_atomic_uint64().

pg_atomic_fetch_or_u32()

static uint32 pg_atomic_fetch_or_u32 ( volatile pg_atomic_uint32ptr,
uint32  or_ 
)
inlinestatic

Definition at line 408 of file atomics.h.

409{
411 return pg_atomic_fetch_or_u32_impl(ptr, or_);
412}

References AssertPointerAlignment.

Referenced by EmitProcSignalBarrier(), LockBufHdr(), LWLockAcquire(), LWLockDequeueSelf(), LWLockQueueSelf(), LWLockWaitForVar(), LWLockWaitListLock(), ResetProcSignalBarrierBits(), and test_atomic_uint32().

pg_atomic_fetch_or_u64()

static uint64 pg_atomic_fetch_or_u64 ( volatile pg_atomic_uint64ptr,
uint64  or_ 
)
inlinestatic

Definition at line 548 of file atomics.h.

549{
550#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
552#endif
553 return pg_atomic_fetch_or_u64_impl(ptr, or_);
554}

References AssertPointerAlignment.

Referenced by test_atomic_uint64().

pg_atomic_fetch_sub_u32()

static uint32 pg_atomic_fetch_sub_u32 ( volatile pg_atomic_uint32ptr,
int32  sub_ 
)
inlinestatic

Definition at line 379 of file atomics.h.

380{
382 Assert(sub_ != INT_MIN);
383 return pg_atomic_fetch_sub_u32_impl(ptr, sub_);
384}
Assert(PointerIsAligned(start, uint64))

References Assert(), and AssertPointerAlignment.

Referenced by LWLockAcquire(), LWLockAcquireOrWait(), LWLockDequeueSelf(), LWLockWaitForVar(), pgstat_release_entry_ref(), and test_atomic_uint32().

pg_atomic_fetch_sub_u64()

static uint64 pg_atomic_fetch_sub_u64 ( volatile pg_atomic_uint64ptr,
int64  sub_ 
)
inlinestatic

Definition at line 529 of file atomics.h.

530{
531#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
533#endif
534 Assert(sub_ != PG_INT64_MIN);
535 return pg_atomic_fetch_sub_u64_impl(ptr, sub_);
536}
#define PG_INT64_MIN
Definition: c.h:596

References Assert(), AssertPointerAlignment, and PG_INT64_MIN.

Referenced by test_atomic_uint64().

pg_atomic_init_flag()

static void pg_atomic_init_flag ( volatile pg_atomic_flag *  ptr )
inlinestatic

Definition at line 168 of file atomics.h.

169{
170 pg_atomic_init_flag_impl(ptr);
171}

Referenced by AutoVacuumShmemInit(), and test_atomic_flag().

pg_atomic_init_u32()

static void pg_atomic_init_u32 ( volatile pg_atomic_uint32ptr,
uint32  val 
)
inlinestatic

Definition at line 219 of file atomics.h.

220{
222
224}
static void pg_atomic_init_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val_)
Definition: generic.h:151
long val
Definition: informix.c:689

References AssertPointerAlignment, pg_atomic_init_u32_impl(), and val.

Referenced by AutoVacuumShmemInit(), BufferManagerShmemInit(), ExecHashJoinInitializeDSM(), InitProcGlobal(), InjectionPointShmemInit(), LWLockInitialize(), pa_setup_dsm(), parallel_vacuum_init(), PgArchShmemInit(), pgstat_init_entry(), ProcSignalShmemInit(), SharedRecordTypmodRegistryInit(), StrategyInitialize(), tbm_prepare_shared_iterate(), and test_atomic_uint32().

pg_atomic_init_u64()

static void pg_atomic_init_u64 ( volatile pg_atomic_uint64ptr,
uint64  val 
)
inlinestatic

Definition at line 451 of file atomics.h.

452{
453 /*
454 * Can't necessarily enforce alignment - and don't need it - when using
455 * the spinlock based fallback implementation. Therefore only assert when
456 * not using it.
457 */
458#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
460#endif
462}
void pg_atomic_init_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val_)
Definition: atomics.c:24

References AssertPointerAlignment, pg_atomic_init_u64_impl(), and val.

Referenced by InitProcGlobal(), InjectionPointShmemInit(), MarkAsPreparingGuts(), ProcSignalShmemInit(), shm_mq_create(), SimpleLruInit(), StatsShmemInit(), table_block_parallelscan_initialize(), test_atomic_uint64(), WalRcvShmemInit(), XLogPrefetchShmemInit(), and XLOGShmemInit().

pg_atomic_monotonic_advance_u64()

static uint64 pg_atomic_monotonic_advance_u64 ( volatile pg_atomic_uint64ptr,
uint64  target 
)
inlinestatic

Definition at line 583 of file atomics.h.

584{
585 uint64 currval;
586
587#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
589#endif
590
591 currval = pg_atomic_read_u64_impl(ptr);
592 if (currval >= target)
593 {
595 return currval;
596 }
597
598 while (currval < target)
599 {
600 if (pg_atomic_compare_exchange_u64(ptr, &currval, target))
601 return target;
602 }
603
604 return currval;
605}
#define pg_memory_barrier()
Definition: atomics.h:141
static bool pg_atomic_compare_exchange_u64(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval)
Definition: atomics.h:510
uint64_t uint64
Definition: c.h:539
static uint64 pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr)
Definition: generic.h:319

References AssertPointerAlignment, pg_atomic_compare_exchange_u64(), pg_atomic_read_u64_impl(), and pg_memory_barrier.

Referenced by WaitXLogInsertionsToFinish().

pg_atomic_read_membarrier_u32()

static uint32 pg_atomic_read_membarrier_u32 ( volatile pg_atomic_uint32ptr )
inlinestatic

Definition at line 256 of file atomics.h.

257{
259
260 return pg_atomic_read_membarrier_u32_impl(ptr);
261}

References AssertPointerAlignment.

pg_atomic_read_membarrier_u64()

static uint64 pg_atomic_read_membarrier_u64 ( volatile pg_atomic_uint64ptr )
inlinestatic

Definition at line 474 of file atomics.h.

475{
476#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
478#endif
479 return pg_atomic_read_membarrier_u64_impl(ptr);
480}

References AssertPointerAlignment.

Referenced by CreateCheckPoint(), and WaitXLogInsertionsToFinish().

pg_atomic_read_u32()

static uint32 pg_atomic_read_u32 ( volatile pg_atomic_uint32ptr )
inlinestatic

Definition at line 237 of file atomics.h.

238{
240 return pg_atomic_read_u32_impl(ptr);
241}
static uint32 pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr)
Definition: generic.h:46

References AssertPointerAlignment, and pg_atomic_read_u32_impl().

Referenced by autovac_recalculate_workers_for_balance(), AutoVacuumUpdateCostLimit(), buffer_readv_complete_one(), buffer_stage_common(), BufferIsDirty(), BufferIsPermanent(), BufferSync(), CheckReadBuffersOperation(), CleanupProcSignalState(), compute_parallel_delay(), create_toy_buffer(), DebugPrintBufferRefcount(), DropRelationAllLocalBuffers(), DropRelationLocalBuffers(), EmitProcSignalBarrier(), EvictAllUnpinnedBuffers(), EvictRelUnpinnedBuffers(), EvictUnpinnedBufferInternal(), ExtendBufferedRelLocal(), FlushRelationBuffers(), GetLocalVictimBuffer(), GetVictimBuffer(), InitProcess(), InjectionPointAttach(), InjectionPointDetach(), InjectionPointList(), invalidate_rel_block(), InvalidateBuffer(), InvalidateLocalBuffer(), InvalidateVictimBuffer(), LocalBufferAlloc(), LWLockAttemptLock(), LWLockConflictsWithVar(), LWLockDequeueSelf(), LWLockUpdateVar(), LWLockWaitListLock(), LWLockWakeup(), MarkBufferDirty(), MarkBufferDirtyHint(), MarkLocalBufferDirty(), pa_decr_and_wait_stream_block(), parallel_vacuum_process_all_indexes(), pg_buffercache_summary(), pgstat_acquire_entry_ref(), pgstat_build_snapshot(), pgstat_drop_entry_internal(), pgstat_gc_entry_refs(), pgstat_get_entry_ref_cached(), pgstat_release_entry_ref(), pgstat_write_statsfile(), PinBuffer(), PinBuffer_Locked(), PinLocalBuffer(), ProcArrayGroupClearXid(), ProcSignalInit(), ReadRecentBuffer(), SendCancelRequest(), SendProcSignal(), StartLocalBufferIO(), StartReadBuffersImpl(), StrategySyncStart(), TerminateLocalBufferIO(), test_atomic_uint32(), TransactionGroupUpdateXidStatus(), UnpinBufferNoOwner(), UnpinLocalBufferNoOwner(), WaitBufHdrUnlocked(), and WaitForProcSignalBarrier().

pg_atomic_read_u64()

static uint64 pg_atomic_read_u64 ( volatile pg_atomic_uint64ptr )
inlinestatic

Definition at line 465 of file atomics.h.

466{
467#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
469#endif
470 return pg_atomic_read_u64_impl(ptr);
471}

References AssertPointerAlignment, and pg_atomic_read_u64_impl().

Referenced by AdvanceXLInsertBuffer(), GetLockStatusData(), GetWalRcvWriteRecPtr(), GetXLogBuffer(), InjectionPointAttach(), InjectionPointDetach(), InjectionPointList(), LWLockConflictsWithVar(), pg_stat_get_recovery_prefetch(), pg_stat_get_wal_receiver(), pgstat_gc_entry_refs(), pgstat_get_entry_count(), pgstat_need_entry_refs_gc(), pgstat_setup_shared_refs(), ProcessProcSignalBarrier(), ProcSignalInit(), ResolveRecoveryConflictWithLock(), shm_mq_inc_bytes_read(), shm_mq_inc_bytes_written(), shm_mq_receive_bytes(), shm_mq_send_bytes(), SimpleLruTruncate(), SlruSelectLRUPage(), test_atomic_uint64(), WaitForProcSignalBarrier(), WALReadFromBuffers(), XLogPrefetchIncrement(), and XLogWrite().

pg_atomic_sub_fetch_u32()

static uint32 pg_atomic_sub_fetch_u32 ( volatile pg_atomic_uint32ptr,
int32  sub_ 
)
inlinestatic

Definition at line 437 of file atomics.h.

438{
440 Assert(sub_ != INT_MIN);
441 return pg_atomic_sub_fetch_u32_impl(ptr, sub_);
442}

References Assert(), and AssertPointerAlignment.

Referenced by compute_parallel_delay(), LWLockReleaseInternal(), pa_decr_and_wait_stream_block(), parallel_vacuum_process_safe_indexes(), parallel_vacuum_process_unsafe_indexes(), pgstat_drop_entry_internal(), tbm_free_shared_area(), and test_atomic_uint32().

pg_atomic_sub_fetch_u64()

static uint64 pg_atomic_sub_fetch_u64 ( volatile pg_atomic_uint64ptr,
int64  sub_ 
)
inlinestatic

Definition at line 566 of file atomics.h.

567{
568#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
570#endif
571 Assert(sub_ != PG_INT64_MIN);
572 return pg_atomic_sub_fetch_u64_impl(ptr, sub_);
573}

References Assert(), AssertPointerAlignment, and PG_INT64_MIN.

Referenced by pgstat_free_entry(), and test_atomic_uint64().

pg_atomic_test_set_flag()

static bool pg_atomic_test_set_flag ( volatile pg_atomic_flag *  ptr )
inlinestatic

Definition at line 181 of file atomics.h.

182{
183 return pg_atomic_test_set_flag_impl(ptr);
184}

Referenced by do_autovacuum(), and test_atomic_flag().

pg_atomic_unlocked_test_flag()

static bool pg_atomic_unlocked_test_flag ( volatile pg_atomic_flag *  ptr )
inlinestatic

Definition at line 194 of file atomics.h.

195{
196 return pg_atomic_unlocked_test_flag_impl(ptr);
197}

Referenced by autovac_recalculate_workers_for_balance(), AutoVacuumUpdateCostLimit(), test_atomic_flag(), and VacuumUpdateCosts().

pg_atomic_unlocked_write_u32()

static void pg_atomic_unlocked_write_u32 ( volatile pg_atomic_uint32ptr,
uint32  val 
)
inlinestatic

Definition at line 293 of file atomics.h.

294{
296
298}
static void pg_atomic_unlocked_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val)
Definition: generic.h:64

References AssertPointerAlignment, pg_atomic_unlocked_write_u32_impl(), and val.

Referenced by buffer_stage_common(), create_toy_buffer(), ExtendBufferedRelLocal(), GetLocalVictimBuffer(), InvalidateLocalBuffer(), LocalBufferAlloc(), MarkLocalBufferDirty(), PinLocalBuffer(), TerminateLocalBufferIO(), and UnpinLocalBufferNoOwner().

pg_atomic_write_membarrier_u32()

static void pg_atomic_write_membarrier_u32 ( volatile pg_atomic_uint32ptr,
uint32  val 
)
inlinestatic

Definition at line 313 of file atomics.h.

314{
316
317 pg_atomic_write_membarrier_u32_impl(ptr, val);
318}

References AssertPointerAlignment, and val.

Referenced by PgArchForceDirScan().

pg_atomic_write_membarrier_u64()

static void pg_atomic_write_membarrier_u64 ( volatile pg_atomic_uint64ptr,
uint64  val 
)
inlinestatic

Definition at line 492 of file atomics.h.

493{
494#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
496#endif
497 pg_atomic_write_membarrier_u64_impl(ptr, val);
498}

References AssertPointerAlignment, and val.

Referenced by StartupXLOG().

pg_atomic_write_u32()

static void pg_atomic_write_u32 ( volatile pg_atomic_uint32ptr,
uint32  val 
)
inlinestatic

Definition at line 274 of file atomics.h.

275{
277
279}
static void pg_atomic_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val)
Definition: generic.h:55

References AssertPointerAlignment, pg_atomic_write_u32_impl(), and val.

Referenced by autovac_recalculate_workers_for_balance(), CleanupProcSignalState(), InjectionPointAttach(), InjectionPointDetach(), parallel_vacuum_process_all_indexes(), ProcArrayGroupClearXid(), ProcSignalInit(), test_atomic_uint32(), TransactionGroupUpdateXidStatus(), and UnlockBufHdr().

pg_atomic_write_u64()

static void pg_atomic_write_u64 ( volatile pg_atomic_uint64ptr,
uint64  val 
)
inlinestatic

Definition at line 483 of file atomics.h.

484{
485#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
487#endif
489}
static void pg_atomic_write_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val)
Definition: generic.h:288

References AssertPointerAlignment, pg_atomic_write_u64_impl(), and val.

Referenced by ActivateCommitTs(), AdvanceXLInsertBuffer(), CleanupProcSignalState(), commit_ts_redo(), InitAuxiliaryProcess(), InitProcess(), InjectionPointAttach(), InjectionPointDetach(), multixact_redo(), ProcessProcSignalBarrier(), ProcSignalInit(), ProcSleep(), ProcWakeup(), ResolveRecoveryConflictWithLock(), shm_mq_inc_bytes_read(), shm_mq_inc_bytes_written(), SimpleLruZeroPage(), StartupCLOG(), StartupMultiXact(), StartupXLOG(), table_block_parallelscan_reinitialize(), test_atomic_uint64(), TrimMultiXact(), WalReceiverMain(), XLogPrefetchIncrement(), XLogPrefetchResetStats(), XLogWalRcvWrite(), and XLogWrite().

AltStyle によって変換されたページ (->オリジナル) /