提交 963c1fa9 编写于 作者: T Tom Lane

Minor cleanups in S_LOCK_TEST code.

上级 5f6401e2
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/s_lock.c,v 1.13 2003/08/04 02:40:03 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/s_lock.c,v 1.14 2003/08/04 15:28:33 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -29,7 +29,7 @@ s_lock_stuck(volatile slock_t *lock, const char *file, int line) ...@@ -29,7 +29,7 @@ s_lock_stuck(volatile slock_t *lock, const char *file, int line)
{ {
#if defined(S_LOCK_TEST) #if defined(S_LOCK_TEST)
fprintf(stderr, fprintf(stderr,
"\nFATAL: stuck spinlock (%p) detected at %s:%d.\n", "\nStuck spinlock (%p) detected at %s:%d.\n",
lock, file, line); lock, file, line);
abort(); abort();
#else #else
...@@ -209,20 +209,20 @@ tas_dummy() /* really means: extern int tas(slock_t ...@@ -209,20 +209,20 @@ tas_dummy() /* really means: extern int tas(slock_t
#if defined(S_LOCK_TEST) #if defined(S_LOCK_TEST)
/* /*
* test program for verifying a port. * test program for verifying a port's spinlock support.
*/ */
volatile slock_t test_lock; volatile slock_t test_lock;
void int
main() main()
{ {
S_INIT_LOCK(&test_lock); S_INIT_LOCK(&test_lock);
if (!S_LOCK_FREE(&test_lock)) if (!S_LOCK_FREE(&test_lock))
{ {
printf("S_LOCK_TEST: failed, lock not initialized.\n"); printf("S_LOCK_TEST: failed, lock not initialized\n");
exit(1); return 1;
} }
S_LOCK(&test_lock); S_LOCK(&test_lock);
...@@ -230,16 +230,34 @@ main() ...@@ -230,16 +230,34 @@ main()
if (S_LOCK_FREE(&test_lock)) if (S_LOCK_FREE(&test_lock))
{ {
printf("S_LOCK_TEST: failed, lock not locked\n"); printf("S_LOCK_TEST: failed, lock not locked\n");
exit(2); return 1;
} }
printf("S_LOCK_TEST: this will hang for a few minutes and then abort\n"); S_UNLOCK(&test_lock);
if (!S_LOCK_FREE(&test_lock))
{
printf("S_LOCK_TEST: failed, lock not unlocked\n");
return 1;
}
S_LOCK(&test_lock);
if (S_LOCK_FREE(&test_lock))
{
printf("S_LOCK_TEST: failed, lock not re-locked\n");
return 1;
}
printf("S_LOCK_TEST: this will hang for a minute or so and then abort\n");
printf(" with a 'stuck spinlock' message if S_LOCK()\n"); printf(" with a 'stuck spinlock' message if S_LOCK()\n");
printf(" and TAS() are working.\n"); printf(" and TAS() are working.\n");
fflush(stdout);
s_lock(&test_lock, __FILE__, __LINE__); s_lock(&test_lock, __FILE__, __LINE__);
printf("S_LOCK_TEST: failed, lock not locked~\n"); printf("S_LOCK_TEST: failed, lock not locked\n");
exit(3); return 1;
} }
#endif /* S_LOCK_TEST */ #endif /* S_LOCK_TEST */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册