#include <OS_NS_Thread.h>
Public Member Functions | |
ACE_TSS_Keys (void) | |
Default constructor, to initialize all bits to zero (unused). | |
int | test_and_set (const ACE_thread_key_t key) |
int | test_and_clear (const ACE_thread_key_t key) |
int | is_set (const ACE_thread_key_t key) const |
Private Types | |
enum | { ACE_WORDS = (ACE_DEFAULT_THREAD_KEYS - 1) / ACE_BITS_PER_WORD + 1 } |
Static Private Member Functions | |
void | find (const u_int key, u_int &word, u_int &bit) |
For a given key, find the word and bit number that represent it. | |
Private Attributes | |
u_long | key_bit_words_ [ACE_WORDS] |
Wrapper around array of whether each key is in use. A simple typedef doesn't work with Sun C++ 4.2.
Definition at line 979 of file OS_NS_Thread.h.
|
Definition at line 1001 of file OS_NS_Thread.h.
01002 { 01003 # if ACE_SIZEOF_LONG == 8 01004 ACE_BITS_PER_WORD = 64, 01005 # elif ACE_SIZEOF_LONG == 4 01006 ACE_BITS_PER_WORD = 32, 01007 # else 01008 # error ACE_TSS_Keys only supports 32 or 64 bit longs. 01009 # endif /* ACE_SIZEOF_LONG == 8 */ 01010 ACE_WORDS = (ACE_DEFAULT_THREAD_KEYS - 1) / ACE_BITS_PER_WORD + 1 01011 }; |
|
Default constructor, to initialize all bits to zero (unused).
Definition at line 466 of file OS_NS_Thread.cpp. References ACE_WORDS, and key_bit_words_.
00467 { 00468 for (u_int i = 0; i < ACE_WORDS; ++i) 00469 { 00470 key_bit_words_[i] = 0; 00471 } 00472 } |
|
For a given key, find the word and bit number that represent it.
Definition at line 476 of file OS_NS_Thread.cpp. Referenced by is_set(), test_and_clear(), and test_and_set().
00477 { 00478 word = key / ACE_BITS_PER_WORD; 00479 bit = key % ACE_BITS_PER_WORD; 00480 } |
|
Return whether the specific key is marked as in use. Returns 1 if the key is been marked, 0 if not. Definition at line 519 of file OS_NS_Thread.cpp. References ACE_BIT_ENABLED, ACE_KEY_INDEX, ACE_thread_key_t, ACE_WORDS, find(), and key_bit_words_.
00520 { 00521 ACE_KEY_INDEX (key_index, key); 00522 u_int word, bit; 00523 find (key_index, word, bit); 00524 00525 return word < ACE_WORDS ? ACE_BIT_ENABLED (key_bit_words_[word], 1 << bit) : 0; 00526 } |
|
Mark the specified key as not being in use, if it was not already so cleared. Returns 1 if the key had already been cleared, 0 if not. Definition at line 501 of file OS_NS_Thread.cpp. References ACE_BIT_ENABLED, ACE_CLR_BITS, ACE_KEY_INDEX, ACE_thread_key_t, ACE_WORDS, find(), and key_bit_words_. Referenced by ACE_TSS_Cleanup::thread_release().
00502 { 00503 ACE_KEY_INDEX (key_index, key); 00504 u_int word, bit; 00505 find (key_index, word, bit); 00506 00507 if (word < ACE_WORDS && ACE_BIT_ENABLED (key_bit_words_[word], 1 << bit)) 00508 { 00509 ACE_CLR_BITS (key_bit_words_[word], 1 << bit); 00510 return 0; 00511 } 00512 else 00513 { 00514 return 1; 00515 } 00516 } |
|
Mark the specified key as being in use, if it was not already so marked. Returns 1 if the had already been marked, 0 if not. Definition at line 483 of file OS_NS_Thread.cpp. References ACE_BIT_ENABLED, ACE_KEY_INDEX, ACE_SET_BITS, ACE_thread_key_t, find(), and key_bit_words_. Referenced by ACE_TSS_Cleanup::thread_use_key().
00484 { 00485 ACE_KEY_INDEX (key_index, key); 00486 u_int word, bit; 00487 find (key_index, word, bit); 00488 00489 if (ACE_BIT_ENABLED (key_bit_words_[word], 1 << bit)) 00490 { 00491 return 1; 00492 } 00493 else 00494 { 00495 ACE_SET_BITS (key_bit_words_[word], 1 << bit); 00496 return 0; 00497 } 00498 } |
|
Bit flag collection. A bit value of 1 indicates that the key is in use by this thread. Definition at line 1015 of file OS_NS_Thread.h. Referenced by ACE_TSS_Keys(), is_set(), test_and_clear(), and test_and_set(). |