diff options
author | Martin Zielinski <martin.zielinski@nokia.com> | 2012-04-10 13:37:04 +0200 |
---|---|---|
committer | Chris Craig <ext-chris.craig@nokia.com> | 2012-04-11 16:21:18 +0200 |
commit | 78d09d5807985ab231b3f1224e2c262c50d9112c (patch) | |
tree | 6ceadb82b4d9111f4b07088b2c93699884db9a3d /src/core/unixprocessbackend.cpp | |
parent | dde384243669a4225258112000f16aa9a87fbac5 (diff) |
Priority changes are applied to childprocesses as well
Changes to the priority of a unixprocess does apply the priority
also to all childprocesses and threads.
Change-Id: Iaff1a5f7ef0742268d527e6b6800bbd47c39146c
Reviewed-by: Lasse Holmstedt <lasse.holmstedt@nokia.com>
Reviewed-by: Chris Craig <ext-chris.craig@nokia.com>
Diffstat (limited to 'src/core/unixprocessbackend.cpp')
-rw-r--r-- | src/core/unixprocessbackend.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/core/unixprocessbackend.cpp b/src/core/unixprocessbackend.cpp index 76bd063..18e8123 100644 --- a/src/core/unixprocessbackend.cpp +++ b/src/core/unixprocessbackend.cpp @@ -44,7 +44,6 @@ #include <errno.h> #include <signal.h> #include <QDebug> -#include <QFile> QT_BEGIN_NAMESPACE_PROCESSMANAGER @@ -101,18 +100,16 @@ qint32 UnixProcessBackend::actualPriority() const } /*! - Set the process priority to \a priority + Set the process priority to \a priority. If the process + is in its own process group, we fix the process priority + of the entire group. */ void UnixProcessBackend::setDesiredPriority(qint32 priority) { ProcessBackend::setDesiredPriority(priority); - if (m_process) { - // ### Is this always correct? Could we have an m_process without a pid? - if (setpriority(PRIO_PROCESS, m_process->pid(), priority)) - qWarning() << "Failed to set process priority from " << actualPriority() << - "to" << priority << " : errno = " << errno; - } + if (m_process) + ProcUtils::setPriority(m_process->pid(), priority); } #if defined(Q_OS_LINUX) @@ -249,10 +246,9 @@ qint64 UnixProcessBackend::write(const char *data, qint64 maxSize) */ void UnixProcessBackend::handleProcessStarted() { - if (m_info.contains(ProcessInfoConstants::Priority) && - setpriority(PRIO_PROCESS, m_process->pid(), m_info.priority())) - qWarning() << "Failed to set process priority at startup from " << actualPriority() << - "to" << m_info.priority() << " : errno = " << errno; + if (m_info.contains(ProcessInfoConstants::Priority)) + ProcUtils::setPriority(m_process->pid(), m_info.priority()); + if (m_info.contains(ProcessInfoConstants::OomAdjustment) && !ProcUtils::setOomAdjustment(m_process->pid(), m_info.oomAdjustment())) qWarning() << "Failed to set process oom score at startup from " << actualOomAdjustment() << |