diff options
Diffstat (limited to 'src/backend/storage/lmgr/spin.c')
-rw-r--r-- | src/backend/storage/lmgr/spin.c | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/src/backend/storage/lmgr/spin.c b/src/backend/storage/lmgr/spin.c deleted file mode 100644 index ae199597a65..00000000000 --- a/src/backend/storage/lmgr/spin.c +++ /dev/null @@ -1,95 +0,0 @@ -/*------------------------------------------------------------------------- - * - * spin.c - * Hardware-independent implementation of spinlocks. - * - * - * For machines that have test-and-set (TAS) instructions, s_lock.h/.c - * define the spinlock implementation. This file contains only a stub - * implementation for spinlocks using PGSemaphores. Unless semaphores - * are implemented in a way that doesn't involve a kernel call, this - * is too slow to be very useful :-( - * - * - * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * - * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/spin.c,v 1.9 2002/06/20 20:29:35 momjian Exp $ - * - *------------------------------------------------------------------------- - */ -#include "postgres.h" - -#include "storage/lwlock.h" -#include "storage/pg_sema.h" -#include "storage/spin.h" - - -#ifdef HAS_TEST_AND_SET - -/* - * Report number of semaphores needed to support spinlocks. - */ -int -SpinlockSemas(void) -{ - return 0; -} - -#else /* !HAS_TEST_AND_SET */ - -/* - * No TAS, so spinlocks are implemented as PGSemaphores. - */ - - -/* - * Report number of semaphores needed to support spinlocks. - */ -int -SpinlockSemas(void) -{ - /* - * It would be cleaner to distribute this logic into the affected modules, - * similar to the way shmem space estimation is handled. - * - * For now, though, we just need a few spinlocks (10 should be - * plenty) plus one for each LWLock. - */ - return NumLWLocks() + 10; -} - -/* - * s_lock.h hardware-spinlock emulation - */ - -void -s_init_lock_sema(volatile slock_t *lock) -{ - PGSemaphoreCreate((PGSemaphore) lock); -} - -void -s_unlock_sema(volatile slock_t *lock) -{ - PGSemaphoreUnlock((PGSemaphore) lock); -} - -bool -s_lock_free_sema(volatile slock_t *lock) -{ - /* We don't currently use S_LOCK_FREE anyway */ - elog(ERROR, "spin.c does not support S_LOCK_FREE()"); - return false; -} - -int -tas_sema(volatile slock_t *lock) -{ - /* Note that TAS macros return 0 if *success* */ - return !PGSemaphoreTryLock((PGSemaphore) lock); -} - -#endif /* !HAS_TEST_AND_SET */ |