Coverage Report

Created: 2025-07-01 06:18

/src/WasmEdge/lib/host/wasi/environ-linux.cpp
Line
Count
Source (jump to first uncovered line)
1
// SPDX-License-Identifier: Apache-2.0
2
// SPDX-FileCopyrightText: 2019-2024 Second State INC
3
4
#include "common/defines.h"
5
#if WASMEDGE_OS_LINUX
6
7
#include "common/errcode.h"
8
#include "host/wasi/environ.h"
9
#include "linux.h"
10
11
namespace WasmEdge {
12
namespace Host {
13
namespace WASI {
14
15
0
WasiExpect<void> Environ::procRaise(__wasi_signal_t Signal) const noexcept {
16
0
  int SysSignal;
17
0
  switch (Signal) {
18
0
  case __WASI_SIGNAL_NONE:
19
0
    SysSignal = 0;
20
0
    break;
21
0
  case __WASI_SIGNAL_HUP:
22
0
    SysSignal = SIGHUP;
23
0
    break;
24
0
  case __WASI_SIGNAL_INT:
25
0
    SysSignal = SIGINT;
26
0
    break;
27
0
  case __WASI_SIGNAL_QUIT:
28
0
    SysSignal = SIGQUIT;
29
0
    break;
30
0
  case __WASI_SIGNAL_ILL:
31
0
    SysSignal = SIGILL;
32
0
    break;
33
0
  case __WASI_SIGNAL_TRAP:
34
0
    SysSignal = SIGTRAP;
35
0
    break;
36
0
  case __WASI_SIGNAL_ABRT:
37
0
    SysSignal = SIGABRT;
38
0
    break;
39
0
  case __WASI_SIGNAL_BUS:
40
0
    SysSignal = SIGBUS;
41
0
    break;
42
0
  case __WASI_SIGNAL_FPE:
43
0
    SysSignal = SIGFPE;
44
0
    break;
45
0
  case __WASI_SIGNAL_KILL:
46
0
    SysSignal = SIGKILL;
47
0
    break;
48
0
  case __WASI_SIGNAL_USR1:
49
0
    SysSignal = SIGUSR1;
50
0
    break;
51
0
  case __WASI_SIGNAL_SEGV:
52
0
    SysSignal = SIGSEGV;
53
0
    break;
54
0
  case __WASI_SIGNAL_USR2:
55
0
    SysSignal = SIGUSR2;
56
0
    break;
57
0
  case __WASI_SIGNAL_PIPE:
58
0
    SysSignal = SIGPIPE;
59
0
    break;
60
0
  case __WASI_SIGNAL_ALRM:
61
0
    SysSignal = SIGALRM;
62
0
    break;
63
0
  case __WASI_SIGNAL_TERM:
64
0
    SysSignal = SIGTERM;
65
0
    break;
66
0
  case __WASI_SIGNAL_CHLD:
67
0
    SysSignal = SIGCHLD;
68
0
    break;
69
0
  case __WASI_SIGNAL_CONT:
70
0
    SysSignal = SIGCONT;
71
0
    break;
72
0
  case __WASI_SIGNAL_STOP:
73
0
    SysSignal = SIGSTOP;
74
0
    break;
75
0
  case __WASI_SIGNAL_TSTP:
76
0
    SysSignal = SIGTSTP;
77
0
    break;
78
0
  case __WASI_SIGNAL_TTIN:
79
0
    SysSignal = SIGTTIN;
80
0
    break;
81
0
  case __WASI_SIGNAL_TTOU:
82
0
    SysSignal = SIGTTOU;
83
0
    break;
84
0
  case __WASI_SIGNAL_URG:
85
0
    SysSignal = SIGURG;
86
0
    break;
87
0
  case __WASI_SIGNAL_XCPU:
88
0
    SysSignal = SIGXCPU;
89
0
    break;
90
0
  case __WASI_SIGNAL_XFSZ:
91
0
    SysSignal = SIGXFSZ;
92
0
    break;
93
0
  case __WASI_SIGNAL_VTALRM:
94
0
    SysSignal = SIGVTALRM;
95
0
    break;
96
0
  case __WASI_SIGNAL_PROF:
97
0
    SysSignal = SIGPROF;
98
0
    break;
99
0
  case __WASI_SIGNAL_WINCH:
100
0
    SysSignal = SIGWINCH;
101
0
    break;
102
0
  case __WASI_SIGNAL_POLL:
103
0
    SysSignal = SIGPOLL;
104
0
    break;
105
0
  case __WASI_SIGNAL_PWR:
106
0
    SysSignal = SIGPWR;
107
0
    break;
108
0
  case __WASI_SIGNAL_SYS:
109
0
    SysSignal = SIGSYS;
110
0
    break;
111
0
  default:
112
0
    return WasiUnexpect(__WASI_ERRNO_NOTSUP);
113
0
  }
114
0
  if (auto Res = std::raise(SysSignal); Res != 0) {
115
0
    return WasiUnexpect(fromErrNo(errno));
116
0
  }
117
0
  return {};
118
0
}
119
120
0
WasiExpect<void> Environ::schedYield() const noexcept {
121
0
  ::sched_yield();
122
0
  return {};
123
0
}
124
125
} // namespace WASI
126
} // namespace Host
127
} // namespace WasmEdge
128
129
#endif