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