Line data Source code
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 <https://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 2437 : _gpgrt_yield (void)
49 : {
50 : #if USE_POSIX_THREADS
51 : # ifdef _POSIX_PRIORITY_SCHEDULING
52 2437 : 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 2433 : return 0;
63 : }
|