Merged revisions 162413 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r162413 | russell | 2008-12-09 16:17:39 -0600 (Tue, 09 Dec 2008) | 8 lines

Remove the test_for_thread_safety() function completely.

The test is not valid.  Besides, if we actually suspected that recursive
mutexes were not working, we would get a ton of LOG_ERROR messages when
DEBUG_THREADS is turned on.

(inspired by a discussion on the asterisk-dev list)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@162414 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.2
Russell Bryant 17 years ago
parent 73b6cbf66c
commit 179667088b

@ -307,8 +307,6 @@ static force_inline void ast_slinear_saturated_divide(short *input, short *value
*input /= *value;
}
int test_for_thread_safety(void);
#ifdef localtime_r
#undef localtime_r
#endif

@ -3297,10 +3297,6 @@ int main(int argc, char *argv[])
}
#endif
/* Test recursive mutex locking. */
if (test_for_thread_safety())
ast_verbose("Warning! Asterisk is not thread safe.\n");
ast_event_init();
ast_makesocket();

@ -226,68 +226,6 @@ struct hostent *ast_gethostbyname(const char *host, struct ast_hostent *hp)
return &hp->hp;
}
AST_MUTEX_DEFINE_STATIC(test_lock);
AST_MUTEX_DEFINE_STATIC(test_lock2);
static pthread_t test_thread;
static int lock_count = 0;
static int test_errors = 0;
/*! \brief This is a regression test for recursive mutexes.
test_for_thread_safety() will return 0 if recursive mutex locks are
working properly, and non-zero if they are not working properly. */
static void *test_thread_body(void *data)
{
ast_mutex_lock(&test_lock);
lock_count += 10;
if (lock_count != 10)
test_errors++;
ast_mutex_lock(&test_lock);
lock_count += 10;
if (lock_count != 20)
test_errors++;
ast_mutex_lock(&test_lock2);
ast_mutex_unlock(&test_lock);
lock_count -= 10;
if (lock_count != 10)
test_errors++;
ast_mutex_unlock(&test_lock);
lock_count -= 10;
ast_mutex_unlock(&test_lock2);
if (lock_count != 0)
test_errors++;
return NULL;
}
int test_for_thread_safety(void)
{
ast_mutex_lock(&test_lock2);
ast_mutex_lock(&test_lock);
lock_count += 1;
ast_mutex_lock(&test_lock);
lock_count += 1;
ast_pthread_create(&test_thread, NULL, test_thread_body, NULL);
usleep(100);
if (lock_count != 2)
test_errors++;
ast_mutex_unlock(&test_lock);
lock_count -= 1;
usleep(100);
if (lock_count != 1)
test_errors++;
ast_mutex_unlock(&test_lock);
lock_count -= 1;
if (lock_count != 0)
test_errors++;
ast_mutex_unlock(&test_lock2);
usleep(100);
if (lock_count != 0)
test_errors++;
pthread_join(test_thread, NULL);
return(test_errors); /* return 0 on success. */
}
/*! \brief Produce 32 char MD5 hash of value. */
void ast_md5_hash(char *output, char *input)
{

Loading…
Cancel
Save