* configure.ac: Set LT to C11/A0/R0.
[libgcrypt.git] / src / ath.c
1 /* ath.c - Thread-safeness library.
2    Copyright (C) 2002, 2003 g10 Code GmbH
3
4    This file is part of Libgcrypt.
5  
6    Libgcrypt is free software; you can redistribute it and/or modify
7    it under the terms of the GNU Lesser General Public License as
8    published by the Free Software Foundation; either version 2.1 of
9    the License, or (at your option) any later version.
10  
11    Libgcrypt is distributed in the hope that it will be useful, but
12    WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    General Public License for more details.
15  
16    You should have received a copy of the GNU Lesser General Public
17    License along with Libgcrypt; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19    02111-1307, USA.  */
20
21 #ifdef HAVE_CONFIG_H
22 #include <config.h>
23 #endif
24
25 #include <assert.h>
26 #include <unistd.h>
27 #ifdef HAVE_SYS_SELECT_H
28 # include <sys/select.h>
29 #else
30 # include <sys/time.h>
31 #endif
32 #include <sys/types.h>
33 #include <sys/wait.h>
34
35 #include "ath.h"
36
37
38 #define MUTEX_UNLOCKED  ((ath_mutex_t) 0)
39 #define MUTEX_LOCKED    ((ath_mutex_t) 1)
40 #define MUTEX_DESTROYED ((ath_mutex_t) 2)
41
42
43 int
44 ath_mutex_init (ath_mutex_t *lock)
45 {
46 #ifndef NDEBUG
47   *lock = MUTEX_UNLOCKED;
48 #endif
49   return 0;
50 }
51
52
53 int
54 ath_mutex_destroy (ath_mutex_t *lock)
55 {
56 #ifndef NDEBUG
57   assert (*lock == MUTEX_UNLOCKED);
58
59   *lock = MUTEX_DESTROYED;
60 #endif
61   return 0;
62 }
63
64
65 int
66 ath_mutex_lock (ath_mutex_t *lock)
67 {
68 #ifndef NDEBUG
69   assert (*lock == MUTEX_UNLOCKED);
70
71   *lock = MUTEX_LOCKED;
72 #endif
73   return 0;
74 }
75
76
77 int
78 ath_mutex_unlock (ath_mutex_t *lock)
79 {
80 #ifndef NDEBUG
81   assert (*lock == MUTEX_LOCKED);
82
83   *lock = MUTEX_UNLOCKED;
84 #endif
85   return 0;
86 }
87
88
89 ssize_t
90 ath_read (int fd, void *buf, size_t nbytes)
91 {
92   return read (fd, buf, nbytes);
93 }
94
95
96 ssize_t
97 ath_write (int fd, const void *buf, size_t nbytes)
98 {
99   return write (fd, buf, nbytes);
100 }
101
102
103 ssize_t
104 ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
105             struct timeval *timeout)
106 {
107   return select (nfd, rset, wset, eset, timeout);
108 }
109
110  
111 ssize_t
112 ath_waitpid (pid_t pid, int *status, int options)
113 {
114   return waitpid (pid, status, options);
115 }
116
117
118 int
119 ath_accept (int s, struct sockaddr *addr, socklen_t *length_ptr)
120 {
121   return accept (s, addr, length_ptr);
122 }
123
124
125 int
126 ath_connect (int s, struct sockaddr *addr, socklen_t length)
127 {
128   return connect (s, addr, length);
129 }
130
131
132 int
133 ath_sendmsg (int s, const struct msghdr *msg, int flags)
134 {
135   return sendmsg (s, msg, flags);
136 }
137
138
139 int
140 ath_recvmsg (int s, struct msghdr *msg, int flags)
141 {
142   return recvmsg (s, msg, flags);
143 }