summaryrefslogtreecommitdiff
path: root/src/ath.h
diff options
context:
space:
mode:
authorMoritz Schulte <mo@g10code.com>2005-01-23 18:53:26 +0000
committerMoritz Schulte <mo@g10code.com>2005-01-23 18:53:26 +0000
commitac5a46b1e07b43f934daa964457aebee28f5f744 (patch)
tree17c14d843477a9a58ec4006acd80064d11761f4a /src/ath.h
parent254c52e2578bb334565e3d7e27174678c879df14 (diff)
downloadlibgcrypt-mo.tar.gz
Updated from HEADmo
Diffstat (limited to 'src/ath.h')
-rw-r--r--src/ath.h92
1 files changed, 53 insertions, 39 deletions
diff --git a/src/ath.h b/src/ath.h
index 9514af86..d492c2a3 100644
--- a/src/ath.h
+++ b/src/ath.h
@@ -1,28 +1,38 @@
-/* ath.h - Interfaces for thread-safeness library.
- Copyright (C) 2002, 2003 g10 Code GmbH
+/* ath.h - Thread-safeness library.
+ Copyright (C) 2002, 2003, 2004 g10 Code GmbH
This file is part of Libgcrypt.
Libgcrypt is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2 of the License,
- or (at your option) any later version.
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
Libgcrypt is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with Libgcrypt; if not, write to the Free Software
+ You should have received a copy of the GNU Lesser General Public
+ License along with Libgcrypt; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#ifndef ATH_H
#define ATH_H
+#ifdef _WIN32
+#warning We need to replace these hacks by cleaner code.
+typedef int ssize_t;
+typedef int pid_t;
+#include <windows.h>
+#else
#include <sys/types.h>
#include <sys/socket.h>
+#endif
+#include <gpg-error.h>
+
+#include <config.h>
/* Define _ATH_EXT_SYM_PREFIX if you want to give all external symbols
@@ -33,6 +43,8 @@
#define _ATH_PREFIX1(x,y) x ## y
#define _ATH_PREFIX2(x,y) _ATH_PREFIX1(x,y)
#define _ATH_PREFIX(x) _ATH_PREFIX2(_ATH_EXT_SYM_PREFIX,x)
+#define ath_install _ATH_PREFIX(ath_install)
+#define ath_init _ATH_PREFIX(ath_init)
#define ath_mutex_init _ATH_PREFIX(ath_mutex_init)
#define ath_mutex_destroy _ATH_PREFIX(ath_mutex_destroy)
#define ath_mutex_lock _ATH_PREFIX(ath_mutex_lock)
@@ -48,32 +60,19 @@
#endif
-typedef void *ath_mutex_t;
-#define ATH_MUTEX_INITIALIZER 0;
-
-/* Functions for mutual exclusion. */
-int ath_mutex_init (ath_mutex_t *mutex);
-int ath_mutex_destroy (ath_mutex_t *mutex);
-int ath_mutex_lock (ath_mutex_t *mutex);
-int ath_mutex_unlock (ath_mutex_t *mutex);
+enum ath_thread_option
+ {
+ ATH_THREAD_OPTION_DEFAULT = 0,
+ ATH_THREAD_OPTION_USER = 1,
+ ATH_THREAD_OPTION_PTH = 2,
+ ATH_THREAD_OPTION_PTHREAD = 3
+ };
-/* Replacement for the POSIX functions, which can be used to allow
- other (user-level) threads to run. */
-ssize_t ath_read (int fd, void *buf, size_t nbytes);
-ssize_t ath_write (int fd, const void *buf, size_t nbytes);
-ssize_t ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
- struct timeval *timeout);
-ssize_t ath_waitpid (pid_t pid, int *status, int options);
-int ath_accept (int s, struct sockaddr *addr, socklen_t *length_ptr);
-int ath_connect (int s, struct sockaddr *addr, socklen_t length);
-int ath_sendmsg (int s, const struct msghdr *msg, int flags);
-int ath_recvmsg (int s, struct msghdr *msg, int flags);
-
-#define _ATH_COMPAT
-#ifdef _ATH_COMPAT
struct ath_ops
{
- int (*mutex_init) (void **priv, int just_check);
+ enum ath_thread_option option;
+ int (*init) (void);
+ int (*mutex_init) (void **priv);
int (*mutex_destroy) (void *priv);
int (*mutex_lock) (void *priv);
int (*mutex_unlock) (void *priv);
@@ -88,15 +87,30 @@ struct ath_ops
int (*recvmsg) (int s, struct msghdr *msg, int flags);
};
-/* Initialize the any-thread package. */
-#define ath_init _ATH_PREFIX(ath_init)
-void ath_init (void);
+gpg_err_code_t ath_install (struct ath_ops *ath_ops, int check_only);
+int ath_init (void);
-/* Used by ath_pkg_init. */
-#define ath_pthread_available _ATH_PREFIX(ath_pthread_available)
-struct ath_ops *ath_pthread_available (void);
-#define ath_pth_available _ATH_PREFIX(ath_pth_available)
-struct ath_ops *ath_pth_available (void);
-#endif
+
+/* Functions for mutual exclusion. */
+typedef void *ath_mutex_t;
+#define ATH_MUTEX_INITIALIZER 0
+
+int ath_mutex_init (ath_mutex_t *mutex);
+int ath_mutex_destroy (ath_mutex_t *mutex);
+int ath_mutex_lock (ath_mutex_t *mutex);
+int ath_mutex_unlock (ath_mutex_t *mutex);
+
+
+/* Replacement for the POSIX functions, which can be used to allow
+ other (user-level) threads to run. */
+ssize_t ath_read (int fd, void *buf, size_t nbytes);
+ssize_t ath_write (int fd, const void *buf, size_t nbytes);
+ssize_t ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
+ struct timeval *timeout);
+ssize_t ath_waitpid (pid_t pid, int *status, int options);
+int ath_accept (int s, struct sockaddr *addr, socklen_t *length_ptr);
+int ath_connect (int s, struct sockaddr *addr, socklen_t length);
+int ath_sendmsg (int s, const struct msghdr *msg, int flags);
+int ath_recvmsg (int s, struct msghdr *msg, int flags);
#endif /* ATH_H */