File indexing completed on 2024-04-28 05:31:37
0001 /* 0002 SPDX-FileCopyrightText: 2007 John Tapsell <tapsell@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "process.h" 0008 #include <KLocalizedString> 0009 0010 namespace KSysGuard 0011 { 0012 class ProcessPrivate 0013 { 0014 public: 0015 long pid; 0016 long parent_pid; 0017 Process *parent; 0018 QString login; 0019 qlonglong uid; 0020 qlonglong euid; 0021 qlonglong suid; 0022 qlonglong fsuid; 0023 qlonglong gid; 0024 qlonglong egid; 0025 qlonglong sgid; 0026 qlonglong fsgid; 0027 qlonglong tracerpid; 0028 QByteArray tty; 0029 qlonglong userTime; 0030 qlonglong sysTime; 0031 qlonglong startTime; 0032 int userUsage; 0033 int sysUsage; 0034 int totalUserUsage; 0035 int totalSysUsage; 0036 unsigned long numChildren; 0037 int niceLevel; 0038 Process::Scheduler scheduler; 0039 Process::IoPriorityClass ioPriorityClass; 0040 int ioniceLevel; 0041 qlonglong vmSize; 0042 qlonglong vmRSS; 0043 qlonglong vmURSS; 0044 qlonglong vmPSS; 0045 qlonglong vmSizeChange; 0046 qlonglong vmRSSChange; 0047 qlonglong vmURSSChange; 0048 qlonglong vmPSSChange; 0049 unsigned long pixmapBytes; 0050 bool hasManagedGuiWindow; 0051 QString name; 0052 QString command; 0053 Process::ProcessStatus status; 0054 qlonglong ioCharactersRead; 0055 qlonglong ioCharactersWritten; 0056 qlonglong ioReadSyscalls; 0057 qlonglong ioWriteSyscalls; 0058 qlonglong ioCharactersActuallyRead; 0059 qlonglong ioCharactersActuallyWritten; 0060 long ioCharactersReadRate; 0061 long ioCharactersWrittenRate; 0062 long ioReadSyscallsRate; 0063 long ioWriteSyscallsRate; 0064 long ioCharactersActuallyReadRate; 0065 long ioCharactersActuallyWrittenRate; 0066 int numThreads; 0067 QList<Process *> children; 0068 QElapsedTimer timeKillWasSent; 0069 int index; 0070 Process::Changes changes; 0071 int elapsedTimeMilliSeconds; 0072 int noNewPrivileges; 0073 QString cGroup; 0074 QString macContext; 0075 }; 0076 0077 Process::Process() 0078 : d(new ProcessPrivate()) 0079 { 0080 clear(); 0081 } 0082 0083 Process::Process(qlonglong _pid, qlonglong _ppid, Process *_parent) 0084 : d(new ProcessPrivate()) 0085 { 0086 clear(); 0087 d->pid = _pid; 0088 d->parent_pid = _ppid; 0089 d->parent = _parent; 0090 } 0091 0092 Process::~Process() 0093 { 0094 delete d; 0095 } 0096 0097 QString Process::niceLevelAsString() const 0098 { 0099 // Just some rough heuristic to map a number to how nice it is 0100 if (d->niceLevel == 0) { 0101 return i18nc("Process Niceness", "Normal"); 0102 } 0103 if (d->niceLevel >= 10) { 0104 return i18nc("Process Niceness", "Very low priority"); 0105 } 0106 if (d->niceLevel > 0) { 0107 return i18nc("Process Niceness", "Low priority"); 0108 } 0109 if (d->niceLevel <= -10) { 0110 return i18nc("Process Niceness", "Very high priority"); 0111 } 0112 if (d->niceLevel < 0) { 0113 return i18nc("Process Niceness", "High priority"); 0114 } 0115 return QString(); // impossible; 0116 } 0117 0118 QString Process::ioniceLevelAsString() const 0119 { 0120 // Just some rough heuristic to map a number to how nice it is 0121 if (d->ioniceLevel == 4) { 0122 return i18nc("Process Niceness", "Normal"); 0123 } 0124 if (d->ioniceLevel >= 6) { 0125 return i18nc("Process Niceness", "Very low priority"); 0126 } 0127 if (d->ioniceLevel > 4) { 0128 return i18nc("Process Niceness", "Low priority"); 0129 } 0130 if (d->ioniceLevel <= 2) { 0131 return i18nc("Process Niceness", "Very high priority"); 0132 } 0133 if (d->ioniceLevel < 4) { 0134 return i18nc("Process Niceness", "High priority"); 0135 } 0136 return QString(); // impossible; 0137 } 0138 0139 QString Process::ioPriorityClassAsString() const 0140 { 0141 switch (d->ioPriorityClass) { 0142 case None: 0143 return i18nc("Priority Class", "None"); 0144 case RealTime: 0145 return i18nc("Priority Class", "Real Time"); 0146 case BestEffort: 0147 return i18nc("Priority Class", "Best Effort"); 0148 case Idle: 0149 return i18nc("Priority Class", "Idle"); 0150 default: 0151 return i18nc("Priority Class", "Unknown"); 0152 } 0153 } 0154 0155 QString Process::translatedStatus() const 0156 { 0157 switch (d->status) { 0158 case Running: 0159 return i18nc("process status", "running"); 0160 case Sleeping: 0161 return i18nc("process status", "sleeping"); 0162 case DiskSleep: 0163 return i18nc("process status", "disk sleep"); 0164 case Zombie: 0165 return i18nc("process status", "zombie"); 0166 case Stopped: 0167 return i18nc("process status", "stopped"); 0168 case Paging: 0169 return i18nc("process status", "paging"); 0170 case Ended: 0171 return i18nc("process status", "finished"); 0172 default: 0173 return i18nc("process status", "unknown"); 0174 } 0175 } 0176 0177 QString Process::schedulerAsString() const 0178 { 0179 switch (d->scheduler) { 0180 case Fifo: 0181 return i18nc("Scheduler", "FIFO"); 0182 case RoundRobin: 0183 return i18nc("Scheduler", "Round Robin"); 0184 case Interactive: 0185 return i18nc("Scheduler", "Interactive"); 0186 case Batch: 0187 return i18nc("Scheduler", "Batch"); 0188 case SchedulerIdle: 0189 return i18nc("Scheduler", "Idle"); 0190 default: 0191 return QString(); 0192 } 0193 } 0194 0195 void Process::clear() 0196 { 0197 d->pid = -1; 0198 d->parent_pid = -1; 0199 d->parent = nullptr; 0200 d->uid = 0; 0201 d->gid = -1; 0202 d->suid = d->euid = d->fsuid = -1; 0203 d->sgid = d->egid = d->fsgid = -1; 0204 d->tracerpid = -1; 0205 d->userTime = 0; 0206 d->sysTime = 0; 0207 d->startTime = 0; 0208 d->userUsage = 0; 0209 d->sysUsage = 0; 0210 d->totalUserUsage = 0; 0211 d->totalSysUsage = 0; 0212 d->numChildren = 0; 0213 d->niceLevel = 0; 0214 d->vmSize = 0; 0215 d->vmRSS = 0; 0216 d->vmURSS = 0; 0217 d->vmPSS = 0; 0218 d->vmSizeChange = 0; 0219 d->vmRSSChange = 0; 0220 d->vmURSSChange = 0; 0221 d->vmPSSChange = 0; 0222 d->pixmapBytes = 0; 0223 d->hasManagedGuiWindow = false; 0224 d->status = OtherStatus; 0225 d->ioPriorityClass = None; 0226 d->ioniceLevel = -1; 0227 d->scheduler = Other; 0228 d->ioCharactersRead = 0; 0229 d->ioCharactersWritten = 0; 0230 d->ioReadSyscalls = 0; 0231 d->ioWriteSyscalls = 0; 0232 d->ioCharactersActuallyRead = 0; 0233 d->ioCharactersActuallyWritten = 0; 0234 d->ioCharactersReadRate = 0; 0235 d->ioCharactersWrittenRate = 0; 0236 d->ioReadSyscallsRate = 0; 0237 d->ioWriteSyscallsRate = 0; 0238 d->ioCharactersActuallyReadRate = 0; 0239 d->ioCharactersActuallyWrittenRate = 0; 0240 0241 d->elapsedTimeMilliSeconds = 0; 0242 d->numThreads = 0; 0243 d->changes = Process::Nothing; 0244 } 0245 0246 long int Process::pid() const 0247 { 0248 return d->pid; 0249 } 0250 0251 long int Process::parentPid() const 0252 { 0253 return d->parent_pid; 0254 } 0255 0256 Process *Process::parent() const 0257 { 0258 return d->parent; 0259 } 0260 0261 QString Process::login() const 0262 { 0263 return d->login; 0264 } 0265 0266 qlonglong Process::uid() const 0267 { 0268 return d->uid; 0269 } 0270 0271 qlonglong Process::euid() const 0272 { 0273 return d->euid; 0274 } 0275 0276 qlonglong Process::suid() const 0277 { 0278 return d->suid; 0279 } 0280 0281 qlonglong Process::fsuid() const 0282 { 0283 return d->fsuid; 0284 } 0285 0286 qlonglong Process::gid() const 0287 { 0288 return d->gid; 0289 } 0290 0291 qlonglong Process::egid() const 0292 { 0293 return d->egid; 0294 } 0295 0296 qlonglong Process::sgid() const 0297 { 0298 return d->sgid; 0299 } 0300 0301 qlonglong Process::fsgid() const 0302 { 0303 return d->fsgid; 0304 } 0305 0306 qlonglong Process::tracerpid() const 0307 { 0308 return d->tracerpid; 0309 } 0310 0311 QByteArray Process::tty() const 0312 { 0313 return d->tty; 0314 } 0315 0316 qlonglong Process::userTime() const 0317 { 0318 return d->userTime; 0319 } 0320 0321 qlonglong Process::sysTime() const 0322 { 0323 return d->sysTime; 0324 } 0325 0326 qlonglong Process::startTime() const 0327 { 0328 return d->startTime; 0329 } 0330 0331 int Process::noNewPrivileges() const 0332 { 0333 return d->noNewPrivileges; 0334 } 0335 0336 int Process::userUsage() const 0337 { 0338 return d->userUsage; 0339 } 0340 0341 int Process::sysUsage() const 0342 { 0343 return d->sysUsage; 0344 } 0345 0346 int &Process::totalUserUsage() const 0347 { 0348 return d->totalUserUsage; 0349 } 0350 0351 int &Process::totalSysUsage() const 0352 { 0353 return d->totalSysUsage; 0354 } 0355 0356 long unsigned &Process::numChildren() const 0357 { 0358 return d->numChildren; 0359 } 0360 0361 int Process::niceLevel() const 0362 { 0363 return d->niceLevel; 0364 } 0365 0366 Process::Scheduler Process::scheduler() const 0367 { 0368 return d->scheduler; 0369 } 0370 0371 Process::IoPriorityClass Process::ioPriorityClass() const 0372 { 0373 return d->ioPriorityClass; 0374 } 0375 0376 int Process::ioniceLevel() const 0377 { 0378 return d->ioniceLevel; 0379 } 0380 0381 qlonglong Process::vmSize() const 0382 { 0383 return d->vmSize; 0384 } 0385 0386 qlonglong Process::vmRSS() const 0387 { 0388 return d->vmRSS; 0389 } 0390 0391 qlonglong Process::vmURSS() const 0392 { 0393 return d->vmURSS; 0394 } 0395 0396 qlonglong Process::vmPSS() const 0397 { 0398 return d->vmPSS; 0399 } 0400 0401 qlonglong &Process::vmSizeChange() const 0402 { 0403 return d->vmSizeChange; 0404 } 0405 0406 qlonglong &Process::vmRSSChange() const 0407 { 0408 return d->vmRSSChange; 0409 } 0410 0411 qlonglong &Process::vmURSSChange() const 0412 { 0413 return d->vmURSSChange; 0414 } 0415 0416 qlonglong Process::vmPSSChange() const 0417 { 0418 return d->vmPSSChange; 0419 } 0420 0421 unsigned long &Process::pixmapBytes() const 0422 { 0423 return d->pixmapBytes; 0424 } 0425 0426 bool &Process::hasManagedGuiWindow() const 0427 { 0428 return d->hasManagedGuiWindow; 0429 } 0430 0431 QString Process::name() const 0432 { 0433 return d->name; 0434 } 0435 0436 QString &Process::command() const 0437 { 0438 return d->command; 0439 } 0440 0441 Process::ProcessStatus Process::status() const 0442 { 0443 return d->status; 0444 } 0445 0446 qlonglong Process::ioCharactersRead() const 0447 { 0448 return d->ioCharactersRead; 0449 } 0450 0451 qlonglong Process::ioCharactersWritten() const 0452 { 0453 return d->ioCharactersWritten; 0454 } 0455 0456 qlonglong Process::ioReadSyscalls() const 0457 { 0458 return d->ioReadSyscalls; 0459 } 0460 0461 qlonglong Process::ioWriteSyscalls() const 0462 { 0463 return d->ioWriteSyscalls; 0464 } 0465 0466 qlonglong Process::ioCharactersActuallyRead() const 0467 { 0468 return d->ioCharactersActuallyRead; 0469 } 0470 0471 qlonglong Process::ioCharactersActuallyWritten() const 0472 { 0473 return d->ioCharactersActuallyWritten; 0474 } 0475 0476 long int Process::ioCharactersReadRate() const 0477 { 0478 return d->ioCharactersReadRate; 0479 } 0480 0481 long int Process::ioCharactersWrittenRate() const 0482 { 0483 return d->ioCharactersWrittenRate; 0484 } 0485 0486 long int Process::ioReadSyscallsRate() const 0487 { 0488 return d->ioReadSyscallsRate; 0489 } 0490 0491 long int Process::ioWriteSyscallsRate() const 0492 { 0493 return d->ioWriteSyscallsRate; 0494 } 0495 0496 long int Process::ioCharactersActuallyReadRate() const 0497 { 0498 return d->ioCharactersActuallyReadRate; 0499 } 0500 0501 long int Process::ioCharactersActuallyWrittenRate() const 0502 { 0503 return d->ioCharactersActuallyWrittenRate; 0504 } 0505 0506 int Process::numThreads() const 0507 { 0508 return d->numThreads; 0509 } 0510 0511 QList<Process *> &Process::children() const 0512 { 0513 return d->children; 0514 } 0515 0516 QElapsedTimer Process::timeKillWasSent() const 0517 { 0518 return d->timeKillWasSent; 0519 } 0520 0521 int Process::index() const 0522 { 0523 return d->index; 0524 } 0525 0526 Process::Changes Process::changes() const 0527 { 0528 return d->changes; 0529 } 0530 0531 int Process::elapsedTimeMilliSeconds() const 0532 { 0533 return d->elapsedTimeMilliSeconds; 0534 } 0535 0536 QString Process::cGroup() const 0537 { 0538 return d->cGroup; 0539 } 0540 0541 QString Process::macContext() const 0542 { 0543 return d->macContext; 0544 } 0545 0546 void Process::setParentPid(long int parent_pid) 0547 { 0548 d->parent_pid = parent_pid; 0549 } 0550 0551 void Process::setParent(Process *parent) 0552 { 0553 d->parent = parent; 0554 } 0555 0556 void Process::setLogin(const QString &login) 0557 { 0558 if (d->login == login) { 0559 return; 0560 } 0561 d->login = login; 0562 d->changes |= Process::Login; 0563 } 0564 0565 void Process::setUid(qlonglong uid) 0566 { 0567 if (d->uid == uid) { 0568 return; 0569 } 0570 d->uid = uid; 0571 d->changes |= Process::Uids; 0572 } 0573 0574 void Process::setEuid(qlonglong euid) 0575 { 0576 if (d->euid == euid) { 0577 return; 0578 } 0579 d->euid = euid; 0580 d->changes |= Process::Uids; 0581 } 0582 0583 void Process::setSuid(qlonglong suid) 0584 { 0585 if (d->suid == suid) { 0586 return; 0587 } 0588 d->suid = suid; 0589 d->changes |= Process::Uids; 0590 } 0591 0592 void Process::setFsuid(qlonglong fsuid) 0593 { 0594 if (d->fsuid == fsuid) { 0595 return; 0596 } 0597 d->fsuid = fsuid; 0598 d->changes |= Process::Uids; 0599 } 0600 0601 void Process::setGid(qlonglong gid) 0602 { 0603 if (d->gid == gid) { 0604 return; 0605 } 0606 d->gid = gid; 0607 d->changes |= Process::Gids; 0608 } 0609 0610 void Process::setEgid(qlonglong egid) 0611 { 0612 if (d->egid == egid) { 0613 return; 0614 } 0615 d->egid = egid; 0616 d->changes |= Process::Gids; 0617 } 0618 0619 void Process::setSgid(qlonglong sgid) 0620 { 0621 if (d->sgid == sgid) { 0622 return; 0623 } 0624 d->sgid = sgid; 0625 d->changes |= Process::Gids; 0626 } 0627 0628 void Process::setFsgid(qlonglong fsgid) 0629 { 0630 if (d->fsgid == fsgid) { 0631 return; 0632 } 0633 d->fsgid = fsgid; 0634 d->changes |= Process::Gids; 0635 } 0636 0637 void Process::setTracerpid(qlonglong tracerpid) 0638 { 0639 if (d->tracerpid == tracerpid) { 0640 return; 0641 } 0642 d->tracerpid = tracerpid; 0643 d->changes |= Process::Tracerpid; 0644 } 0645 0646 void Process::setTty(const QByteArray &tty) 0647 { 0648 if (d->tty == tty) { 0649 return; 0650 } 0651 d->tty = tty; 0652 d->changes |= Process::Tty; 0653 } 0654 0655 void Process::setUserTime(qlonglong userTime) 0656 { 0657 d->userTime = userTime; 0658 } 0659 0660 void Process::setSysTime(qlonglong sysTime) 0661 { 0662 d->sysTime = sysTime; 0663 } 0664 0665 void Process::setStartTime(qlonglong startTime) 0666 { 0667 d->startTime = startTime; 0668 } 0669 0670 void Process::setNoNewPrivileges(int number) 0671 { 0672 if (d->noNewPrivileges == number) { 0673 return; 0674 } 0675 d->noNewPrivileges = number; 0676 d->changes |= Process::Status; 0677 } 0678 0679 void Process::setUserUsage(int _userUsage) 0680 { 0681 if (d->userUsage == _userUsage) { 0682 return; 0683 } 0684 d->userUsage = _userUsage; 0685 d->changes |= Process::Usage; 0686 } 0687 0688 void Process::setSysUsage(int _sysUsage) 0689 { 0690 if (d->sysUsage == _sysUsage) { 0691 return; 0692 } 0693 d->sysUsage = _sysUsage; 0694 d->changes |= Process::Usage; 0695 } 0696 0697 void Process::setTotalUserUsage(int _totalUserUsage) 0698 { 0699 if (d->totalUserUsage == _totalUserUsage) { 0700 return; 0701 } 0702 d->totalUserUsage = _totalUserUsage; 0703 d->changes |= Process::TotalUsage; 0704 } 0705 0706 void Process::setTotalSysUsage(int _totalSysUsage) 0707 { 0708 if (d->totalSysUsage == _totalSysUsage) { 0709 return; 0710 } 0711 d->totalSysUsage = _totalSysUsage; 0712 d->changes |= Process::TotalUsage; 0713 } 0714 0715 void Process::setNiceLevel(int _niceLevel) 0716 { 0717 if (d->niceLevel == _niceLevel) { 0718 return; 0719 } 0720 d->niceLevel = _niceLevel; 0721 d->changes |= Process::NiceLevels; 0722 } 0723 0724 void Process::setScheduler(Scheduler _scheduler) 0725 { 0726 if (d->scheduler == _scheduler) { 0727 return; 0728 } 0729 d->scheduler = _scheduler; 0730 d->changes |= Process::NiceLevels; 0731 } 0732 0733 void Process::setIoPriorityClass(IoPriorityClass _ioPriorityClass) 0734 { 0735 if (d->ioPriorityClass == _ioPriorityClass) { 0736 return; 0737 } 0738 d->ioPriorityClass = _ioPriorityClass; 0739 d->changes |= Process::NiceLevels; 0740 } 0741 0742 void Process::setIoniceLevel(int _ioniceLevel) 0743 { 0744 if (d->ioniceLevel == _ioniceLevel) { 0745 return; 0746 } 0747 d->ioniceLevel = _ioniceLevel; 0748 d->changes |= Process::NiceLevels; 0749 } 0750 0751 void Process::setVmSize(qlonglong _vmSize) 0752 { 0753 if (d->vmSizeChange != 0 || d->vmSize != 0) { 0754 d->vmSizeChange = _vmSize - d->vmSize; 0755 } 0756 if (d->vmSize == _vmSize) { 0757 return; 0758 } 0759 d->vmSize = _vmSize; 0760 d->changes |= Process::VmSize; 0761 } 0762 0763 void Process::setVmRSS(qlonglong _vmRSS) 0764 { 0765 if (d->vmRSSChange != 0 || d->vmRSS != 0) { 0766 d->vmRSSChange = _vmRSS - d->vmRSS; 0767 } 0768 if (d->vmRSS == _vmRSS) { 0769 return; 0770 } 0771 d->vmRSS = _vmRSS; 0772 d->changes |= Process::VmRSS; 0773 } 0774 0775 void Process::setVmURSS(qlonglong _vmURSS) 0776 { 0777 if (d->vmURSSChange != 0 || d->vmURSS != 0) { 0778 d->vmURSSChange = _vmURSS - d->vmURSS; 0779 } 0780 if (d->vmURSS == _vmURSS) { 0781 return; 0782 } 0783 d->vmURSS = _vmURSS; 0784 d->changes |= Process::VmURSS; 0785 } 0786 0787 void Process::setVmPSS(qlonglong pss) 0788 { 0789 if (d->vmPSSChange != 0 || d->vmPSS != 0) { 0790 d->vmPSSChange = pss - d->vmPSS; 0791 } 0792 0793 if (d->vmPSS == pss) { 0794 return; 0795 } 0796 0797 d->vmPSS = pss; 0798 d->changes |= Process::VmPSS; 0799 } 0800 0801 void Process::setName(const QString &_name) 0802 { 0803 if (d->name == _name) { 0804 return; 0805 } 0806 d->name = _name; 0807 d->changes |= Process::Name; 0808 } 0809 0810 void Process::setCommand(const QString &_command) 0811 { 0812 if (d->command == _command) { 0813 return; 0814 } 0815 d->command = _command; 0816 d->changes |= Process::Command; 0817 } 0818 0819 void Process::setStatus(ProcessStatus _status) 0820 { 0821 if (d->status == _status) { 0822 return; 0823 } 0824 d->status = _status; 0825 d->changes |= Process::Status; 0826 } 0827 0828 void Process::setIoCharactersRead(qlonglong number) 0829 { 0830 if (d->ioCharactersRead == number) { 0831 return; 0832 } 0833 d->ioCharactersRead = number; 0834 d->changes |= Process::IO; 0835 } 0836 0837 void Process::setIoCharactersWritten(qlonglong number) 0838 { 0839 if (d->ioCharactersWritten == number) { 0840 return; 0841 } 0842 d->ioCharactersWritten = number; 0843 d->changes |= Process::IO; 0844 } 0845 0846 void Process::setIoReadSyscalls(qlonglong number) 0847 { 0848 if (d->ioReadSyscalls == number) { 0849 return; 0850 } 0851 d->ioReadSyscalls = number; 0852 d->changes |= Process::IO; 0853 } 0854 0855 void Process::setIoWriteSyscalls(qlonglong number) 0856 { 0857 if (d->ioWriteSyscalls == number) { 0858 return; 0859 } 0860 d->ioWriteSyscalls = number; 0861 d->changes |= Process::IO; 0862 } 0863 0864 void Process::setIoCharactersActuallyRead(qlonglong number) 0865 { 0866 if (d->ioCharactersActuallyRead == number) { 0867 return; 0868 } 0869 d->ioCharactersActuallyRead = number; 0870 d->changes |= Process::IO; 0871 } 0872 0873 void Process::setIoCharactersActuallyWritten(qlonglong number) 0874 { 0875 if (d->ioCharactersActuallyWritten == number) { 0876 return; 0877 } 0878 d->ioCharactersActuallyWritten = number; 0879 d->changes |= Process::IO; 0880 } 0881 0882 void Process::setIoCharactersReadRate(long number) 0883 { 0884 if (d->ioCharactersReadRate == number) { 0885 return; 0886 } 0887 d->ioCharactersReadRate = number; 0888 d->changes |= Process::IO; 0889 } 0890 0891 void Process::setIoCharactersWrittenRate(long number) 0892 { 0893 if (d->ioCharactersWrittenRate == number) { 0894 return; 0895 } 0896 d->ioCharactersWrittenRate = number; 0897 d->changes |= Process::IO; 0898 } 0899 0900 void Process::setIoReadSyscallsRate(long number) 0901 { 0902 if (d->ioReadSyscallsRate == number) { 0903 return; 0904 } 0905 d->ioReadSyscallsRate = number; 0906 d->changes |= Process::IO; 0907 } 0908 0909 void Process::setIoWriteSyscallsRate(long number) 0910 { 0911 if (d->ioWriteSyscallsRate == number) { 0912 return; 0913 } 0914 d->ioWriteSyscallsRate = number; 0915 d->changes |= Process::IO; 0916 } 0917 0918 void Process::setIoCharactersActuallyReadRate(long number) 0919 { 0920 if (d->ioCharactersActuallyReadRate == number) { 0921 return; 0922 } 0923 d->ioCharactersActuallyReadRate = number; 0924 d->changes |= Process::IO; 0925 } 0926 0927 void Process::setIoCharactersActuallyWrittenRate(long number) 0928 { 0929 if (d->ioCharactersActuallyWrittenRate == number) { 0930 return; 0931 } 0932 d->ioCharactersActuallyWrittenRate = number; 0933 d->changes |= Process::IO; 0934 } 0935 0936 void Process::setNumThreads(int number) 0937 { 0938 if (d->numThreads == number) { 0939 return; 0940 } 0941 d->numThreads = number; 0942 d->changes |= Process::NumThreads; 0943 } 0944 0945 void Process::setIndex(int index) 0946 { 0947 d->index = index; 0948 } 0949 0950 void Process::setElapsedTimeMilliSeconds(int value) 0951 { 0952 d->elapsedTimeMilliSeconds = value; 0953 } 0954 0955 void Process::setChanges(KSysGuard::Process::Change changes) 0956 { 0957 d->changes = changes; 0958 } 0959 0960 void Process::setCGroup(const QString &_cGroup) 0961 { 0962 if (d->cGroup == _cGroup) { 0963 return; 0964 } 0965 d->cGroup = _cGroup; 0966 d->changes |= Process::Status; 0967 } 0968 0969 void Process::setMACContext(const QString &_macContext) 0970 { 0971 if (d->macContext == _macContext) { 0972 return; 0973 } 0974 d->macContext = _macContext; 0975 d->changes |= Process::Status; 0976 } 0977 0978 }