Coverage Report

Created: 2022-12-08 06:09

/src/libgpg-error/src/posix-thread.c
Line
Count
Source (jump to first uncovered line)
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 "gpgrt-int.h"
43
44
#include "thread.h"
45
46
47
48
gpg_err_code_t
49
_gpgrt_yield (void)
50
0
{
51
0
#if USE_POSIX_THREADS
52
0
# ifdef _POSIX_PRIORITY_SCHEDULING
53
0
  _gpgrt_pre_syscall ();
54
0
  sched_yield ();
55
0
  _gpgrt_post_syscall ();
56
# else
57
  return GPG_ERR_NOT_SUPPORTED;
58
# endif
59
#elif USE_SOLARIS_THREADS
60
  _gpgrt_pre_syscall ();
61
  thr_yield ();
62
  _gpgrt_post_syscall ();
63
#else
64
  return GPG_ERR_NOT_SUPPORTED;
65
#endif
66
67
0
  return 0;
68
0
}