SemaphoreImplLxrt38.cpp
Go to the documentation of this file.
00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
00002 
00003 // -- BEGIN LICENSE BLOCK ----------------------------------------------
00004 // This file is part of FZIs ic_workspace.
00005 //
00006 // This program is free software licensed under the LGPL
00007 // (GNU LESSER GENERAL PUBLIC LICENSE Version 3).
00008 // You can find a copy of this license in LICENSE folder in the top
00009 // directory of the source code.
00010 //
00011 // © Copyright 2016 FZI Forschungszentrum Informatik, Karlsruhe, Germany
00012 //
00013 // -- END LICENSE BLOCK ------------------------------------------------
00014 
00015 //----------------------------------------------------------------------
00021 //----------------------------------------------------------------------
00022 #include "SemaphoreImplLxrt38.h"
00023 
00024 namespace icl_core {
00025 namespace logging {
00026 
00027 SemaphoreImplLxrt38::SemaphoreImplLxrt38(size_t initial_value)
00028   : m_semaphore(NULL)
00029 {
00030   m_semaphore = rt_typed_sem_init(size_t(this), initial_value, CNT_SEM | PRIO_Q);
00031 }
00032 
00033 SemaphoreImplLxrt38::~SemaphoreImplLxrt38()
00034 {
00035   if (m_semaphore == NULL)
00036   {
00037     // Nothing to be done here!
00038   }
00039   else
00040   {
00041     rt_sem_delete(m_semaphore);
00042     m_semaphore = NULL;
00043   }
00044 }
00045 
00046 void SemaphoreImplLxrt38::post()
00047 {
00048   rt_sem_signal(m_semaphore);
00049 }
00050 
00051 bool SemaphoreImplLxrt38::wait()
00052 {
00053   int res = rt_sem_wait(m_semaphore);
00054   return (res < SEM_TIMOUT);
00055 }
00056 
00057 }
00058 }


fzi_icl_core
Author(s):
autogenerated on Tue Aug 8 2017 02:28:03