summaryrefslogtreecommitdiff
path: root/ace
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-09-04 02:58:38 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-09-04 02:58:38 +0000
commit9381dc335de041c194d3f9c01d197d915e3b3e06 (patch)
treeceb2633f270ffa4abcb9efb66958d411a027d18d /ace
parent212f5d8199c40b1d3eb5b0767914fc71bf254d29 (diff)
downloadATCD-9381dc335de041c194d3f9c01d197d915e3b3e06.tar.gz
ChangeLogTag:Wed Sep 3 21:38:18 1997 Carlos O'Ryan <coryan@polka.cs.wustl.edu>
Diffstat (limited to 'ace')
-rw-r--r--ace/OS.h2
-rw-r--r--ace/README4
-rw-r--r--ace/Timer_Hash_T.cpp14
-rw-r--r--ace/Timer_Hash_T.h2
-rw-r--r--ace/Timer_Heap_T.cpp10
-rw-r--r--ace/Timer_Heap_T.h2
-rw-r--r--ace/Timer_List.cpp2
-rw-r--r--ace/Timer_List_T.cpp7
-rw-r--r--ace/Timer_List_T.h2
-rw-r--r--ace/Timer_Queue_T.h1
-rw-r--r--ace/Timer_Wheel_T.cpp14
-rw-r--r--ace/Timer_Wheel_T.h2
-rw-r--r--ace/config-irix6.x-sgic++.h7
13 files changed, 44 insertions, 25 deletions
diff --git a/ace/OS.h b/ace/OS.h
index 29ade0d13fe..83623dbadbf 100644
--- a/ace/OS.h
+++ b/ace/OS.h
@@ -4169,7 +4169,7 @@ private:
#else /* ! ACE_HAS_TSS_EMULATION */
# if defined (TLS_MINIMUM_AVAILABLE)
-# // WIN32 platforms define TLS_MINIMUM_AVAILABLE natively.
+ // WIN32 platforms define TLS_MINIMUM_AVAILABLE natively.
# define ACE_DEFAULT_THREAD_KEYS TLS_MINIMUM_AVAILABLE
# endif /* TSL_MINIMUM_AVAILABLE */
#endif /* ACE_HAS_TSS_EMULATION */
diff --git a/ace/README b/ace/README
index e078b71e92d..f52e4ec40a7 100644
--- a/ace/README
+++ b/ace/README
@@ -89,6 +89,7 @@ ACE_HAS_NONCONST_GETBY Platform uses non-const char * in calls to gethostbyadd
ACE_HAS_NONCONST_MSGSND Platform has a non-const parameter to msgsend() (e.g., SCO).
ACE_HAS_NONCONST_SELECT_TIMEVAL Platform's select() uses non-const timeval* (only found on Linux right now)
ACE_HAS_OLD_MALLOC Compiler/platform uses old malloc()/free() prototypes (ugh)
+ACE_HAS_ONLY_TWO_PARAMS_FOR_ASCTIME_R_AND_CTIME_R Uses ctime_r & asctime_r with only two parameters vs. three.
ACE_HAS_ONEARG_SIGWAIT sigwait() takes only one argument.
ACE_HAS_ONLY_SCHED_OTHER Platform, e.g., Solaris 2.5, only supports SCHED_OTHER POSIX scheduling policy.
ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R Uses ctime_r & asctime_r with only two parameters vs. three.
@@ -113,7 +114,8 @@ ACE_HAS_PTHREAD_SIGMASK Platform has pthread_sigmask() defined.
ACE_HAS_PTHREAD_T Platform has pthread_t defined.
ACE_HAS_PTHREAD_YIELD_VOIDPTR pthread_yield() takes a void pointer arg.
ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS Platform will recurse infinitely on thread exits from TSS cleanup routines (e.g., AIX).
-ACE_HAS_REENTRANT_FUNCTIONS Platform supports reentrant functions (i.e., all the POSIX *_r functions).
+ACE_HAS_REENTRANT_FUNCTIONS Platform supports reentrant functions (i.e., all the POSIX *_r functions).
+ACE_LACKS_NETDB_REENTRANT_FUNCTIONS Platform does not support reentrant netdb functions (getprotobyname_r, getprotobynumber_r, gethostbyaddr_r, gethostbyname_r, getservbyname_r).
ACE_HAS_REGEX Platform supports the POSIX regular expression library
ACE_HAS_SELECT_H Platform has special header for select().
ACE_HAS_SEMUN Compiler/platform defines a union semun for SysV shared memory
diff --git a/ace/Timer_Hash_T.cpp b/ace/Timer_Hash_T.cpp
index 326d30bded1..bdd0241fc3d 100644
--- a/ace/Timer_Hash_T.cpp
+++ b/ace/Timer_Hash_T.cpp
@@ -181,7 +181,7 @@ ACE_Timer_Hash_Iterator_T<TYPE, FUNCTOR, LOCK, BUCKET>::item (void)
template <class TYPE, class FUNCTOR, class LOCK, class BUCKET> ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, LOCK> &
ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::iter (void)
{
- return this->iterator_;
+ return *this->iterator_;
}
// Create an empty queue.
@@ -195,8 +195,7 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::ACE_Timer_Hash_T (size_t table_si
table_ (new BUCKET* [table_size]),
table_size_ (table_size),
table_functor_ (this),
- earliest_position_ (0),
- iterator_ (*this)
+ earliest_position_ (0)
{
ACE_TRACE ("ACE_Timer_Hash_T::ACE_Timer_Hash_T");
@@ -207,6 +206,8 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::ACE_Timer_Hash_T (size_t table_si
this->table_[i] = new BUCKET (&this->table_functor_, this->free_list_);
this->table_[i]->gettimeofday (ACE_OS::gettimeofday);
}
+
+ iterator_ = new HASH_ITERATOR(*this);
}
@@ -218,8 +219,7 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::ACE_Timer_Hash_T (FUNCTOR *upcall
table_ (new BUCKET* [ACE_DEFAULT_TIMER_HASH_TABLE_SIZE]),
table_size_ (ACE_DEFAULT_TIMER_HASH_TABLE_SIZE),
table_functor_ (this),
- earliest_position_ (0),
- iterator_ (*this)
+ earliest_position_ (0)
{
ACE_TRACE ("ACE_Timer_Hash_T::ACE_Timer_Hash_T");
@@ -230,6 +230,8 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::ACE_Timer_Hash_T (FUNCTOR *upcall
this->table_[i] = new BUCKET (&this->table_functor_, this->free_list_);
this->table_[i]->gettimeofday (ACE_OS::gettimeofday);
}
+
+ iterator_ = new HASH_ITERATOR(*this);
}
@@ -241,6 +243,8 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::~ACE_Timer_Hash_T (void)
ACE_TRACE ("ACE_Timer_Hash_T::~ACE_Timer_Hash_T");
ACE_MT (ACE_GUARD (LOCK, ace_mon, this->mutex_));
+ delete iterator_;
+
for (size_t i = 0; i < this->table_size_; i++)
delete this->table_[i];
diff --git a/ace/Timer_Hash_T.h b/ace/Timer_Hash_T.h
index 050cafa1fe2..2095bef8a1f 100644
--- a/ace/Timer_Hash_T.h
+++ b/ace/Timer_Hash_T.h
@@ -222,7 +222,7 @@ private:
size_t earliest_position_;
// Index to the position with the earliest entry
- HASH_ITERATOR iterator_;
+ HASH_ITERATOR *iterator_;
// Iterator used to expire timers.
// = Don't allow these operations for now.
diff --git a/ace/Timer_Heap_T.cpp b/ace/Timer_Heap_T.cpp
index fb495f0245b..5ee5ad53388 100644
--- a/ace/Timer_Heap_T.cpp
+++ b/ace/Timer_Heap_T.cpp
@@ -71,7 +71,6 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (size_t size,
: INHERITED (upcall_functor, freelist),
max_size_ (size),
cur_size_ (0),
- iterator_ (*this),
timer_ids_freelist_ (0),
preallocated_nodes_ (0),
preallocated_nodes_freelist_ (0)
@@ -110,6 +109,8 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (size_t size,
this->preallocated_nodes_freelist_ =
&this->preallocated_nodes_[0];
}
+
+ iterator_ = new HEAP_ITERATOR(*this);
}
template <class TYPE, class FUNCTOR, class LOCK>
@@ -118,7 +119,6 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (FUNCTOR *upcall_functor
: INHERITED (upcall_functor, freelist),
max_size_ (ACE_DEFAULT_TIMERS),
cur_size_ (0),
- iterator_ (*this),
timer_ids_freelist_ (0),
preallocated_nodes_ (0),
preallocated_nodes_freelist_ (0)
@@ -136,6 +136,8 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (FUNCTOR *upcall_functor
// array.
for (size_t i = 0; i < this->max_size_; i++)
this->timer_ids_[i] = -((long) (i + 1));
+
+ iterator_ = new HEAP_ITERATOR(*this);
}
@@ -144,6 +146,8 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::~ACE_Timer_Heap_T (void)
{
ACE_TRACE ("ACE_Timer_Heap::~ACE_Timer_Heap");
+ delete iterator_;
+
// Clean up all the nodes still in the queue
for (size_t i = 0; i < this->cur_size_; i++)
{
@@ -220,7 +224,7 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::is_empty (void) const
template <class TYPE, class FUNCTOR, class LOCK> ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, LOCK> &
ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::iter (void)
{
- return this->iterator_;
+ return *this->iterator_;
}
// Returns earliest time in a non-empty queue.
diff --git a/ace/Timer_Heap_T.h b/ace/Timer_Heap_T.h
index 65dca3e5a4e..30af1755bcb 100644
--- a/ace/Timer_Heap_T.h
+++ b/ace/Timer_Heap_T.h
@@ -210,7 +210,7 @@ private:
size_t cur_size_;
// Current size of the heap.
- HEAP_ITERATOR iterator_;
+ HEAP_ITERATOR *iterator_;
// Iterator used to expire timers.
ACE_Timer_Node_T<TYPE> **heap_;
diff --git a/ace/Timer_List.cpp b/ace/Timer_List.cpp
index 8bae22eb456..cbf0635b54c 100644
--- a/ace/Timer_List.cpp
+++ b/ace/Timer_List.cpp
@@ -11,9 +11,11 @@
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
template class ACE_Timer_List_T<ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall<ACE_SYNCH_RECURSIVE_MUTEX>, ACE_SYNCH_RECURSIVE_MUTEX>;
template class ACE_Timer_List_Iterator_T<ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall<ACE_SYNCH_RECURSIVE_MUTEX>, ACE_SYNCH_RECURSIVE_MUTEX>;
+template class ACE_Async_Timer_Queue_Adapter<ACE_Timer_List_T<ACE_Event_Handler*,ACE_Event_Handler_Handle_Timeout_Upcall<ACE_Recursive_Thread_Mutex>,ACE_Recursive_Thread_Mutex> >;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Timer_List_T<ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall<ACE_SYNCH_RECURSIVE_MUTEX>, ACE_SYNCH_RECURSIVE_MUTEX>
#pragma instantiate ACE_Timer_List_Iterator_T<ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall<ACE_SYNCH_RECURSIVE_MUTEX>, ACE_SYNCH_RECURSIVE_MUTEX>
+#pragma instantiate ACE_Async_Timer_Queue_Adapter<ACE_Timer_List_T<ACE_Event_Handler*,ACE_Event_Handler_Handle_Timeout_Upcall<ACE_Recursive_Thread_Mutex>,ACE_Recursive_Thread_Mutex> >
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/ace/Timer_List_T.cpp b/ace/Timer_List_T.cpp
index adfedd402ee..211c617ff35 100644
--- a/ace/Timer_List_T.cpp
+++ b/ace/Timer_List_T.cpp
@@ -58,7 +58,7 @@ ACE_Timer_List_Iterator_T<TYPE, FUNCTOR, LOCK>::item (void)
template <class TYPE, class FUNCTOR, class LOCK> ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, LOCK> &
ACE_Timer_List_T<TYPE, FUNCTOR, LOCK>::iter (void)
{
- return this->iterator_;
+ return *this->iterator_;
}
// Create an empty list.
@@ -68,12 +68,13 @@ ACE_Timer_List_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_List_T (FUNCTOR *upcall_functor
ACE_Free_List<ACE_Timer_Node_T <TYPE> > *freelist)
: ACE_Timer_Queue_T<TYPE, FUNCTOR, LOCK> (upcall_functor, freelist),
head_ (new ACE_Timer_Node_T<TYPE>),
- iterator_ (*this),
timer_id_ (0)
{
ACE_TRACE ("ACE_Timer_List_T::ACE_Timer_List");
this->head_->set_next (this->head_);
this->head_->set_prev (this->head_);
+
+ iterator_ = new LIST_ITERATOR(*this);
}
@@ -105,6 +106,8 @@ ACE_Timer_List_T<TYPE, FUNCTOR, LOCK>::~ACE_Timer_List_T (void)
ACE_TRACE ("ACE_Timer_List_T::~ACE_Timer_List_T");
ACE_MT (ACE_GUARD (LOCK, ace_mon, this->mutex_));
+ delete iterator_;
+
ACE_Timer_Node_T<TYPE> *curr = this->head_->get_next ();
while (curr != this->head_)
diff --git a/ace/Timer_List_T.h b/ace/Timer_List_T.h
index dcbac409d26..f0489458794 100644
--- a/ace/Timer_List_T.h
+++ b/ace/Timer_List_T.h
@@ -161,7 +161,7 @@ private:
ACE_Timer_Node_T<TYPE> *head_;
// Pointer to linked list of <ACE_Timer_Handles>.
- LIST_ITERATOR iterator_;
+ LIST_ITERATOR *iterator_;
// Iterator used to expire timers.
long timer_id_;
diff --git a/ace/Timer_Queue_T.h b/ace/Timer_Queue_T.h
index 3051e4e17b2..4b2b4321cd7 100644
--- a/ace/Timer_Queue_T.h
+++ b/ace/Timer_Queue_T.h
@@ -21,6 +21,7 @@
#include "ace/Time_Value.h"
#include "ace/Signal.h"
#include "ace/Free_List.h"
+#include "ace/Signal.h"
// This should be nested within the ACE_Timer_Queue class but some C++
// compilers still don't like this...
diff --git a/ace/Timer_Wheel_T.cpp b/ace/Timer_Wheel_T.cpp
index 86dee8a4356..c90eeb2fd7e 100644
--- a/ace/Timer_Wheel_T.cpp
+++ b/ace/Timer_Wheel_T.cpp
@@ -106,8 +106,7 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Wheel_T (size_t wheelsize,
: INHERITED (upcall_functor, freelist),
wheel_size_ (wheelsize),
resolution_ (resolution),
- earliest_pos_ (0),
- iterator_ (*this)
+ earliest_pos_ (0)
{
ACE_TRACE ("ACE_Timer_Wheel_T::ACE_Timer_Wheel_T");
size_t i;
@@ -129,6 +128,8 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Wheel_T (size_t wheelsize,
// Do the preallocation
this->free_list_->resize (prealloc);
+
+ iterator_ = new WHEEL_ITERATOR(*this);
}
template <class TYPE, class FUNCTOR, class LOCK>
@@ -137,8 +138,7 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Wheel_T (FUNCTOR *upcall_funct
: INHERITED (upcall_functor, freelist),
wheel_size_ (ACE_DEFAULT_TIMER_WHEEL_SIZE),
resolution_ (ACE_DEFAULT_TIMER_WHEEL_RESOLUTION),
- earliest_pos_ (0),
- iterator_ (*this)
+ earliest_pos_ (0)
{
ACE_TRACE ("ACE_Timer_Wheel_T::ACE_Timer_Wheel_T");
size_t i;
@@ -156,6 +156,8 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Wheel_T (FUNCTOR *upcall_funct
tempnode->set_prev (tempnode);
this->wheel_[i] = tempnode;
}
+
+ iterator_ = new WHEEL_ITERATOR(*this);
}
// Destructor just cleans up its memory
@@ -165,6 +167,8 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::~ACE_Timer_Wheel_T (void)
{
ACE_TRACE ("ACE_Timer_Wheel_T::~ACE_Timer_Wheel_T");
+ delete iterator_;
+
for (size_t i = 0; i < this->wheel_size_; i++)
{
// delete nodes until only the dummy node is left
@@ -482,7 +486,7 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::reschedule (ACE_Timer_Node_T<TYPE> *expi
template <class TYPE, class FUNCTOR, class LOCK> ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, LOCK> &
ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::iter (void)
{
- return this->iterator_;
+ return *this->iterator_;
}
// Dummy version of expire to get rid of warnings in Sun CC 4.2
diff --git a/ace/Timer_Wheel_T.h b/ace/Timer_Wheel_T.h
index 30981de7378..2ab6bc6491e 100644
--- a/ace/Timer_Wheel_T.h
+++ b/ace/Timer_Wheel_T.h
@@ -188,7 +188,7 @@ private:
long size_;
// Keeps track of the size of the queue
- ACE_Timer_Wheel_Iterator_T<TYPE, FUNCTOR, LOCK> iterator_;
+ WHEEL_ITERATOR *iterator_;
// Iterator used to expire timers.
ACE_Timer_Node_T<TYPE> *freelist_;
diff --git a/ace/config-irix6.x-sgic++.h b/ace/config-irix6.x-sgic++.h
index 4e3ebe725eb..687d48fbf6f 100644
--- a/ace/config-irix6.x-sgic++.h
+++ b/ace/config-irix6.x-sgic++.h
@@ -29,13 +29,12 @@
// even though it supports pthreads! (like Irix 6.2)
#define ACE_LACKS_CONDATTR_PSHARED
-// Platform lacks pthread_thr_sigsetmask (e.g., MVS, HP/UX, OSF/1 3.2,
-// Irix 6.2)
-#define ACE_LACKS_PTHREAD_THR_SIGSETMASK
-
// IRIX 6.2 supports a variant of POSIX Pthreads, supposedly POSIX 1c
#define ACE_HAS_PTHREADS
+// Platforms has pthread_thr_sigsetmask
+#define ACE_HAS_PTHREAD_SIGMASK
+
// Platform has pthread_equal().
#define ACE_HAS_PTHREAD_EQUAL