diff --git a/src/system/libroot/posix/signal/Jamfile b/src/system/libroot/posix/signal/Jamfile index ff6916c2a7..562b81dff2 100644 --- a/src/system/libroot/posix/signal/Jamfile +++ b/src/system/libroot/posix/signal/Jamfile @@ -13,6 +13,7 @@ MergeObject posix_signal.o : sigaltstack.c sighold.cpp sigignore.cpp + siginterrupt.cpp signal.c sigpause.cpp sigpending.c diff --git a/src/system/libroot/posix/signal/siginterrupt.cpp b/src/system/libroot/posix/signal/siginterrupt.cpp new file mode 100644 index 0000000000..139208502f --- /dev/null +++ b/src/system/libroot/posix/signal/siginterrupt.cpp @@ -0,0 +1,25 @@ +/* + * Copyright 2009, Axel Dörfler, axeld@pinc-software.de. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ + + +#include + +#include + + +extern "C" int +siginterrupt(int sig, int flag) +{ + struct sigaction action; + + sigaction(sig, NULL, &action); + if (flag) + action.sa_flags &= ~SA_RESTART; + else + action.sa_flags |= SA_RESTART; + + return sigaction(sig, &action, NULL); +} +