SemaphoreImplDarwin.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 <mach/mach_init.h>
00023 #include <mach/task.h>
00024 
00025 #include "SemaphoreImplDarwin.h"
00026 
00027 namespace icl_core {
00028 namespace logging {
00029 
00030 SemaphoreImplDarwin::SemaphoreImplDarwin(size_t initial_value)
00031   : m_semaphore(0)
00032 {
00033   semaphore_create(mach_task_self(), &m_semaphore, SYNC_POLICY_FIFO, initial_value);
00034 }
00035 
00036 SemaphoreImplDarwin::~SemaphoreImplDarwin()
00037 {
00038   semaphore_destroy(mach_task_self(), m_semaphore);
00039   m_semaphore = 0;
00040 }
00041 
00042 void SemaphoreImplDarwin::post()
00043 {
00044   semaphore_signal(m_semaphore);
00045 }
00046 
00047 bool SemaphoreImplDarwin::wait()
00048 {
00049   kern_return_t res = semaphore_wait(m_semaphore);
00050   return (res == KERN_SUCCESS);
00051 }
00052 
00053 }
00054 }


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