You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by tr...@apache.org on 2001/07/18 20:41:37 UTC
cvs commit: apr/memory/unix apr_sms_threads.c
trawick 01/07/18 11:41:37
Modified: memory/unix apr_sms_threads.c
Log:
use a macro for obtaining the thread hash value so that
the gory details aren't spread all over
make an attempt to compute the thread hash value using
a mechanism which will work when apr_os_thread_t is a
scalar (e.g., glibc), pointer (e.g., Tru64), or even a
structure (e.g., OS/390); previously, it only compiled
on systems where apr_os_thread_t was a scalar
Revision Changes Path
1.2 +6 -4 apr/memory/unix/apr_sms_threads.c
Index: apr_sms_threads.c
===================================================================
RCS file: /home/cvs/apr/memory/unix/apr_sms_threads.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- apr_sms_threads.c 2001/07/12 16:50:19 1.1
+++ apr_sms_threads.c 2001/07/18 18:41:37 1.2
@@ -104,6 +104,8 @@
#define HASH_SIZE 1021
#define SIZEOF_HASHTABLE APR_ALIGN_DEFAULT(HASH_SIZE)
+#define THREAD_HASH(tid) \
+(*(int *)&(tid) % HASH_SIZE)
typedef struct apr_sms_threads_t
{
@@ -159,7 +161,7 @@
size = APR_ALIGN_DEFAULT(size) + SIZEOF_BLOCK_T;
thread = apr_os_thread_current();
- hash = thread % HASH_SIZE;
+ hash = THREAD_HASH(thread);
/* If the thread wasn't registered before, we will segfault */
thread_node = SMS_THREADS_T(sms)->hashtable[hash];
@@ -304,7 +306,7 @@
return APR_SUCCESS;
thread = apr_os_thread_current();
- hash = thread % HASH_SIZE;
+ hash = THREAD_HASH(thread);
thread_node = SMS_THREADS_T(sms)->hashtable[hash];
while (thread_node->thread != thread)
@@ -562,7 +564,7 @@
node_t *node, *sentinel;
apr_uint16_t hash;
- hash = thread % HASH_SIZE;
+ hash = THREAD_HASH(thread);
if (sms->threads > 1 && !SMS_THREADS_T(sms)->lock) {
apr_lock_create(&SMS_THREADS_T(sms)->lock,
@@ -630,7 +632,7 @@
apr_uint16_t hash;
apr_size_t min_alloc, max_free;
- hash = thread % HASH_SIZE;
+ hash = THREAD_HASH(thread);
free_list = NULL;
if (SMS_THREADS_T(sms)->lock)