diff options
-rw-r--r-- | bitbake/lib/bb/utils.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index b62985dd7b..91faa494ca 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
@@ -35,6 +35,8 @@ import errno | |||
35 | import signal | 35 | import signal |
36 | from commands import getstatusoutput | 36 | from commands import getstatusoutput |
37 | from contextlib import contextmanager | 37 | from contextlib import contextmanager |
38 | from ctypes import cdll | ||
39 | |||
38 | 40 | ||
39 | logger = logging.getLogger("BitBake.Util") | 41 | logger = logging.getLogger("BitBake.Util") |
40 | 42 | ||
@@ -1291,3 +1293,20 @@ def get_file_layer(filename, d): | |||
1291 | result = path_to_layer(filename) | 1293 | result = path_to_layer(filename) |
1292 | 1294 | ||
1293 | return result | 1295 | return result |
1296 | |||
1297 | |||
1298 | # Constant taken from http://linux.die.net/include/linux/prctl.h | ||
1299 | PR_SET_PDEATHSIG = 1 | ||
1300 | |||
1301 | class PrCtlError(Exception): | ||
1302 | pass | ||
1303 | |||
1304 | def signal_on_parent_exit(signame): | ||
1305 | """ | ||
1306 | Trigger signame to be sent when the parent process dies | ||
1307 | """ | ||
1308 | signum = getattr(signal, signame) | ||
1309 | # http://linux.die.net/man/2/prctl | ||
1310 | result = cdll['libc.so.6'].prctl(PR_SET_PDEATHSIG, signum) | ||
1311 | if result != 0: | ||
1312 | raise PrCtlError('prctl failed with error code %s' % result) | ||