diff options
Diffstat (limited to 'c/src/librtems++/include/rtems++/rtemsSemaphore.h')
-rw-r--r-- | c/src/librtems++/include/rtems++/rtemsSemaphore.h | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/c/src/librtems++/include/rtems++/rtemsSemaphore.h b/c/src/librtems++/include/rtems++/rtemsSemaphore.h deleted file mode 100644 index 9d4fdbeb58..0000000000 --- a/c/src/librtems++/include/rtems++/rtemsSemaphore.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - ------------------------------------------------------------------------ - $Id$ - ------------------------------------------------------------------------ - - COPYRIGHT (c) 1997 - Objective Design Systems Ltd Pty (ODS) - All rights reserved (R) Objective Design Systems Ltd Pty - - The license and distribution terms for this file may be found in the - file LICENSE in this distribution or at - http://www.OARcorp.com/rtems/license.html. - - ------------------------------------------------------------------------ - - rtemsSemaphore class. - - This class allows the user to create a RTEMS semaphore, or to use an - already existing semaphore. The type of semaphore is decitated by - the constructor used. - - The first constructor with the semaphore parameters creates a RTEMS - semaphore object. The destructor of this object also deletes the - semaphore object. The last status code should be checked after - construction to see if the semaphore create was successfull. - - The second constructor connects to an existing. The last status code - should be checked after construction to see if the semaphore - existed. - - The third constructor is a copy constructor. Connects to an existing - object which is in scope. - - ------------------------------------------------------------------------ */ - -#if !defined(_rtemsSemaphore_h_) -#define _rtemsSemaphore_h_ - -#include <rtems++/rtemsStatusCode.h> - -/* ---- - rtemsSemaphore -*/ - -class rtemsSemaphore - : public rtemsStatusCode -{ -public: - // attribute a semaphore can have - enum WaitMode { wait_by_fifo = RTEMS_FIFO, - wait_by_priority = RTEMS_PRIORITY }; - enum Type { binary = RTEMS_BINARY_SEMAPHORE, - counting = RTEMS_COUNTING_SEMAPHORE }; - enum Priority { no_priority_inherit = RTEMS_NO_INHERIT_PRIORITY, - inherit_priority = RTEMS_INHERIT_PRIORITY }; - enum Ceiling { no_priority_ceiling = RTEMS_NO_PRIORITY_CEILING, - priority_ceiling = RTEMS_PRIORITY_CEILING }; - enum Scope { local = RTEMS_LOCAL, - global = RTEMS_GLOBAL }; - - // only the first 4 characters of the name are taken, - // the counter must be set to 1 for binary semaphores - - // create a semaphore object - rtemsSemaphore(const char* name, - const Scope scope = local, - const rtems_unsigned32 counter = 1, - const WaitMode wait_mode = wait_by_fifo, - const Type type = binary, - const Priority priority = no_priority_inherit, - const Ceiling ceiling = no_priority_ceiling, - const rtems_task_priority priority_ceiling = 0); - - // connect to an existing semaphore object by name - rtemsSemaphore(const char *name, const rtems_unsigned32 node); - - // attach this object to an other objects semaphore - rtemsSemaphore(const rtemsSemaphore& semaphore); - rtemsSemaphore(); - - // only the creator's destructor will delete the actual object - virtual ~rtemsSemaphore(); - - // create or destroy (delete) a semaphore - virtual const rtems_status_code create(const char* name, - const Scope scope = local, - const rtems_unsigned32 counter = 1, - const WaitMode wait_mode = wait_by_fifo, - const Type type = binary, - const Priority priority = no_priority_inherit, - const Ceiling ceiling = no_priority_ceiling, - const rtems_task_priority priority_ceiling = 0); - virtual const rtems_status_code destroy(); - - // connect to an existing semaphore object, will not be the owner - const rtemsSemaphore& operator=(const rtemsSemaphore& semaphore); - virtual const rtems_status_code connect(const char *name, rtems_unsigned32 node); - - // obtain the semaphore, timeout is in micro-seconds - inline const rtems_status_code obtain(bool wait = true, - const rtems_unsigned32 micro_secs = RTEMS_NO_TIMEOUT); - - // release the semaphore, blocks threads eligble - inline const rtems_status_code release(); - - // object id, and name - const rtems_id id_is() const { return id; } - const rtems_name name_is() const { return name; } - const char *name_string() const { return name_str; } - -private: - - // make the object reference no valid RTEMS object - void make_invalid(); - - // semaphore name - rtems_name name; - char name_str[5]; - - // owner, true if this object owns the semaphore - // will delete the semaphore when it destructs - bool owner; - - // the rtems id, object handle - rtems_id id; -}; - -const rtems_status_code rtemsSemaphore::obtain(const bool wait, - const rtems_unsigned32 micro_secs) -{ - rtems_interval usecs = - micro_secs && (micro_secs < _TOD_Microseconds_per_tick) ? - _TOD_Microseconds_per_tick : micro_secs; - return - set_status_code(rtems_semaphore_obtain(id, - wait ? RTEMS_WAIT : RTEMS_NO_WAIT, - TOD_MICROSECONDS_TO_TICKS(usecs))); -} - -const rtems_status_code rtemsSemaphore::release(void) -{ - return set_status_code(rtems_semaphore_release(id)); -} - -#endif // _rtemsSemaphore_h_ |