summaryrefslogtreecommitdiffstats
path: root/src/core/unixprocessbackend.cpp
diff options
context:
space:
mode:
authorMartin Zielinski <martin.zielinski@nokia.com>2012-04-10 13:37:04 +0200
committerChris Craig <ext-chris.craig@nokia.com>2012-04-11 16:21:18 +0200
commit78d09d5807985ab231b3f1224e2c262c50d9112c (patch)
tree6ceadb82b4d9111f4b07088b2c93699884db9a3d /src/core/unixprocessbackend.cpp
parentdde384243669a4225258112000f16aa9a87fbac5 (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.cpp20
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() <<