Updating to version 1.13. Libgcrypt depends on libgpg-error
[platform/upstream/libgpg-error.git] / src / posix-thread.c
1 /* posix-thread.c - GPGRT thread functions for POSIX systems
2    Copyright (C) 2014 g10 Code GmbH
3
4    This file is part of libgpg-error.
5
6    libgpg-error is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public License
8    as published by the Free Software Foundation; either version 2.1 of
9    the License, or (at your option) any later version.
10
11    libgpg-error 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    Lesser General Public License for more details.
15
16    You should have received a copy of the GNU Lesser General Public
17    License along with this program; if not, see <http://www.gnu.org/licenses/>.
18  */
19
20 #if HAVE_CONFIG_H
21 #include <config.h>
22 #endif
23
24 #ifdef HAVE_W32_SYSTEM
25 # error This module may not be build for Windows.
26 #endif
27
28 #include <stdlib.h>
29 #include <stdio.h>
30 #include <string.h>
31 #include <errno.h>
32 #include <unistd.h>  /* Get posix option macros.  */
33
34 #if USE_POSIX_THREADS
35 # ifdef _POSIX_PRIORITY_SCHEDULING
36 #  include <sched.h>
37 # endif
38 #elif USE_SOLARIS_THREADS
39 # include <thread.h>
40 #endif
41
42 #include "gpg-error.h"
43
44 #include "thread.h"
45
46
47 gpg_err_code_t
48 gpgrt_yield (void)
49 {
50 #if USE_POSIX_THREADS
51 # ifdef _POSIX_PRIORITY_SCHEDULING
52    sched_yield ();
53 # else
54    return GPG_ERR_NOT_SUPPORTED;
55 # endif
56 #elif USE_SOLARIS_THREADS
57   thr_yield ();
58 #else
59   return GPG_ERR_NOT_SUPPORTED;
60 #endif
61
62   return 0;
63 }