diff options
Diffstat (limited to 'bitbake/lib/bb/utils.py')
-rw-r--r-- | bitbake/lib/bb/utils.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index 9b550ef3f1..7f82687ae4 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
@@ -1311,3 +1311,27 @@ def signal_on_parent_exit(signame): | |||
1311 | result = cdll['libc.so.6'].prctl(PR_SET_PDEATHSIG, signum) | 1311 | result = cdll['libc.so.6'].prctl(PR_SET_PDEATHSIG, signum) |
1312 | if result != 0: | 1312 | if result != 0: |
1313 | raise PrCtlError('prctl failed with error code %s' % result) | 1313 | raise PrCtlError('prctl failed with error code %s' % result) |
1314 | |||
1315 | # | ||
1316 | # Manually call the ioprio syscall. We could depend on other libs like psutil | ||
1317 | # however this gets us enough of what we need to bitbake for now without the | ||
1318 | # dependency | ||
1319 | # | ||
1320 | _unamearch = os.uname()[4] | ||
1321 | IOPRIO_WHO_PROCESS = 1 | ||
1322 | IOPRIO_CLASS_SHIFT = 13 | ||
1323 | |||
1324 | def ioprio_set(who, cls, value): | ||
1325 | NR_ioprio_set = None | ||
1326 | if _unamearch == "x86_64": | ||
1327 | NR_ioprio_set = 251 | ||
1328 | elif _unamearch[0] == "i" and _unamearch[2:3] == "86": | ||
1329 | NR_ioprio_set = 289 | ||
1330 | |||
1331 | if NR_ioprio_set: | ||
1332 | ioprio = value | (cls << IOPRIO_CLASS_SHIFT) | ||
1333 | rc = cdll['libc.so.6'].syscall(NR_ioprio_set, IOPRIO_WHO_PROCESS, who, ioprio) | ||
1334 | if rc != 0: | ||
1335 | raise ValueError("Unable to set ioprio, syscall returned %s" % rc) | ||
1336 | else: | ||
1337 | bb.warn("Unable to set IO Prio for arch %s" % _unamearch) | ||