1 /***************************************************************************
2     begin       : Tue Jul 29 2008
3     copyright   : (C) 2008 by Martin Preuss
4     email       : martin@libchipcard.de
5 
6 
7  ***************************************************************************
8  *                                                                         *
9  *   This library is free software; you can redistribute it and/or         *
10  *   modify it under the terms of the GNU Lesser General Public            *
11  *   License as published by the Free Software Foundation; either          *
12  *   version 2.1 of the License, or (at your option) any later version.    *
13  *                                                                         *
14  *   This library is distributed in the hope that it will be useful,       *
15  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
16  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
17  *   Lesser General Public License for more details.                       *
18  *                                                                         *
19  *   You should have received a copy of the GNU Lesser General Public      *
20  *   License along with this library; if not, write to the Free Software   *
21  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
22  *   MA  02111-1307  USA                                                   *
23  *                                                                         *
24  ***************************************************************************/
25 
26 #ifdef HAVE_CONFIG_H
27 # include <config.h>
28 #endif
29 
30 #include "semaphore_p.h"
31 #include <gwenhywfar/misc.h>
32 #include <gwenhywfar/debug.h>
33 
34 
35 
36 
GWEN_Semaphore_new(void)37 GWEN_SEMAPHORE *GWEN_Semaphore_new(void)
38 {
39   GWEN_SEMAPHORE *sm;
40 
41   GWEN_NEW_OBJECT(GWEN_SEMAPHORE, sm);
42   sem_init(&(sm->sem), 0, 0);
43 
44   return sm;
45 }
46 
47 
48 
GWEN_Semaphore_free(GWEN_SEMAPHORE * sm)49 void GWEN_Semaphore_free(GWEN_SEMAPHORE *sm)
50 {
51   if (sm) {
52     sem_destroy(&(sm->sem));
53     GWEN_FREE_OBJECT(sm);
54   }
55 }
56 
57 
58 
GWEN_Semaphore_Wait(GWEN_SEMAPHORE * sm)59 void GWEN_Semaphore_Wait(GWEN_SEMAPHORE *sm)
60 {
61   assert(sm);
62   sem_wait(&(sm->sem));
63 }
64 
65 
66 
GWEN_Semaphore_Post(GWEN_SEMAPHORE * sm)67 void GWEN_Semaphore_Post(GWEN_SEMAPHORE *sm)
68 {
69   assert(sm);
70   sem_post(&(sm->sem));
71 }
72 
73 
74 
75 
76 
77