MCPcopy Create free account
hub / github.com/async-profiler/async-profiler / getProfilingSignal

Method getProfilingSignal

src/os_macos.cpp:269–289  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

267}
268
269int OS::getProfilingSignal(int mode) {
270 static int preferred_signals[2] = {SIGPROF, SIGVTALRM};
271
272 const u64 allowed_signals =
273 1ULL << SIGPROF | 1ULL << SIGVTALRM | 1ULL << SIGEMT | 1ULL << SIGSYS;
274
275 int& signo = preferred_signals[mode];
276 int initial_signo = signo;
277 int other_signo = preferred_signals[1 - mode];
278
279 do {
280 struct sigaction sa;
281 if ((allowed_signals & (1ULL << signo)) != 0 && signo != other_signo && sigaction(signo, NULL, &sa) == 0) {
282 if (sa.sa_handler == SIG_DFL || sa.sa_handler == SIG_IGN || sa.sa_sigaction == installed_sigaction[signo]) {
283 return signo;
284 }
285 }
286 } while ((signo = (signo + 1) & 31) != initial_signo);
287
288 return signo;
289}
290
291bool OS::sendSignalToThread(int thread_id, int signo) {
292#ifdef __aarch64__

Callers

nothing calls this directly

Calls 1

sigactionClass · 0.70

Tested by

no test coverage detected