Changes to attempt to silence bcc64x
[ACE_TAO.git] / ACE / ace / Token.inl
blob340ed7cecc9188ba03f8c1251e498c4a466c44a1
1 // -*- C++ -*-
2 #include "ace/config-macros.h"
4 #if defined (ACE_HAS_THREADS)
6 #include "ace/Guard_T.h"
7 #include "ace/Time_Value.h"
9 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
11 ACE_INLINE int
12 ACE_Token::queueing_strategy ()
14   return this->queueing_strategy_;
17 ACE_INLINE void
18 ACE_Token::queueing_strategy (int queueing_strategy)
20   this->queueing_strategy_ = queueing_strategy == -1 ? -1 : 0;
23 ACE_INLINE int
24 ACE_Token::remove ()
26   ACE_TRACE ("ACE_Token::remove");
27   // Don't have an implementation for this yet...
28   ACE_NOTSUP_RETURN (-1);
31 ACE_INLINE int
32 ACE_Token::tryacquire ()
34   ACE_TRACE ("ACE_Token::tryacquire");
35   return this->shared_acquire
36     (0, 0, (ACE_Time_Value *) &ACE_Time_Value::zero, ACE_Token::WRITE_TOKEN);
39 ACE_INLINE int
40 ACE_Token::waiters ()
42   ACE_TRACE ("ACE_Token::waiters");
43   ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1);
45   int const ret = this->waiters_;
46   return ret;
49 ACE_INLINE ACE_thread_t
50 ACE_Token::current_owner ()
52   ACE_TRACE ("ACE_Token::current_owner");
53   ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, this->owner_);
55   return this->owner_;
58 ACE_INLINE int
59 ACE_Token::acquire_read ()
61   ACE_TRACE ("ACE_Token::acquire_read");
62   return this->shared_acquire
63     (0, 0, 0, ACE_Token::READ_TOKEN);
66 ACE_INLINE int
67 ACE_Token::acquire_write ()
69   ACE_TRACE ("ACE_Token::acquire_write");
70   return this->shared_acquire
71     (0, 0, 0, ACE_Token::WRITE_TOKEN);
74 ACE_INLINE int
75 ACE_Token::tryacquire_read ()
77   ACE_TRACE ("ACE_Token::tryacquire_read");
78   return this->shared_acquire
79     (0, 0, (ACE_Time_Value *) &ACE_Time_Value::zero, ACE_Token::READ_TOKEN);
82 ACE_INLINE int
83 ACE_Token::acquire_read (void (*sleep_hook_func)(void *),
84                          void *arg,
85                          ACE_Time_Value *timeout)
87   ACE_TRACE ("ACE_Token::acquire_read");
88   return this->shared_acquire (sleep_hook_func, arg, timeout, ACE_Token::READ_TOKEN);
91 ACE_INLINE int
92 ACE_Token::tryacquire_write ()
94   ACE_TRACE ("ACE_Token::tryacquire_write");
95   return this->shared_acquire
96     (0, 0, (ACE_Time_Value *) &ACE_Time_Value::zero, ACE_Token::WRITE_TOKEN);
99 ACE_INLINE int
100 ACE_Token::tryacquire_write_upgrade ()
102   ACE_TRACE ("ACE_Token::tryacquire_write_upgrade");
103   return 0;
106 ACE_INLINE int
107 ACE_Token::acquire_write (void (*sleep_hook_func)(void *),
108                           void *arg,
109                           ACE_Time_Value *timeout)
111   ACE_TRACE ("ACE_Token::acquire_write");
112   return this->shared_acquire (sleep_hook_func, arg, timeout, ACE_Token::WRITE_TOKEN);
115 ACE_INLINE int
116 ACE_Token::ACE_Token_Queue_Entry::wait (ACE_Time_Value *timeout, ACE_Thread_Mutex &lock)
118 #if defined (ACE_TOKEN_USES_SEMAPHORE)
119   lock.release ();
120   int const retv = (timeout == 0 ?
121                     this->cv_.acquire () :
122                     this->cv_.acquire (*timeout));
123   lock.acquire ();
124   return retv;
125 #else
126   ACE_UNUSED_ARG (lock);
127   return this->cv_.wait (timeout);
128 #endif /* ACE_TOKEN_USES_SEMAPHORE */
131 ACE_INLINE int
132 ACE_Token::ACE_Token_Queue_Entry::signal ()
134   return
135 #if defined (ACE_TOKEN_USES_SEMAPHORE)
136     this->cv_.release ();
137 #else
138     this->cv_.signal ();
139 #endif /* ACE_TOKEN_USES_SEMAPHORE */
142 ACE_END_VERSIONED_NAMESPACE_DECL
144 #endif /* ACE_HAS_THREADS */
146 /*****************************************************************************/
148 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
150 ACE_INLINE int
151 ACE_Noop_Token::queueing_strategy ()
153   return -1;
156 ACE_INLINE void
157 ACE_Noop_Token::queueing_strategy (int /* queueing_strategy */)
161 ACE_INLINE int
162 ACE_Noop_Token::renew (int, ACE_Time_Value *)
164   return 0;
167 ACE_INLINE void
168 ACE_Noop_Token::dump () const
172 ACE_END_VERSIONED_NAMESPACE_DECL