summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kobel2018-11-15 11:10:53 +0100
committerAlexander Kobel2018-11-15 11:10:53 +0100
commit481b8ad6482bdb50199a3571de40a9b4e08cab9c (patch)
tree5de26891fdd65543aeae40883834d251ee7c52a8
parent5d2a38d5660e20f5c52d7929cf225e2be15c95db (diff)
downloadaur-xscreensaver-oom-protect.tar.gz
adjust priority to realtime
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD4
-rw-r--r--xscreensaver-oom-protect.c13
3 files changed, 15 insertions, 6 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 63d6fd17a0e0..34293e78d88a 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = xscreensaver-oom-protect
pkgdesc = Protect xscreensaver from the out-of-memory killer
- pkgver = 1.0.1
+ pkgver = 1.0.2
pkgrel = 1
arch = x86_64
license = custom:WTFPL
@@ -8,7 +8,7 @@ pkgbase = xscreensaver-oom-protect
source = xscreensaver-oom-protect.c
source = LICENSE
source = xscreensaver.service
- md5sums = a4cc96966ac71a75bc841c0279957a2f
+ md5sums = 39a62edba8e363a511f201ebbfbb67b2
md5sums = 8365d07beeb5f39d87e846dca3ae7b64
md5sums = bb945c067ae57367ddc6f041fd33dfa4
diff --git a/PKGBUILD b/PKGBUILD
index fa47db44a375..ddb22059a0d2 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,7 +1,7 @@
# Maintainer: Alexander Kobel <a-kobel@a-kobel.de>
pkgname=xscreensaver-oom-protect
-pkgver=1.0.1
+pkgver=1.0.2
pkgrel=1
pkgdesc="Protect xscreensaver from the out-of-memory killer"
arch=('x86_64')
@@ -10,7 +10,7 @@ depends=('xscreensaver')
source=(${pkgname}.c
LICENSE
xscreensaver.service)
-md5sums=('a4cc96966ac71a75bc841c0279957a2f'
+md5sums=('39a62edba8e363a511f201ebbfbb67b2'
'8365d07beeb5f39d87e846dca3ae7b64'
'bb945c067ae57367ddc6f041fd33dfa4')
diff --git a/xscreensaver-oom-protect.c b/xscreensaver-oom-protect.c
index 476883502d38..6a4e4b28f715 100644
--- a/xscreensaver-oom-protect.c
+++ b/xscreensaver-oom-protect.c
@@ -24,6 +24,7 @@
#include <errno.h>
#include <limits.h>
+#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -33,10 +34,13 @@
int usage (char **argv) {
fprintf (stderr,
"Protect process <pid> from the OOM killer by setting its "
- "oom_score_adj to %d and its nice value to -20.\n"
+ "oom_score_adj to %d, its\n"
+ "nice value to -20, and its priority to realtime.\n"
"(TL;DR: try to avoid that an attacker types Alt+SysRq+F "
"repeatedly and ends up\n"
- "with your logged-in session without the xscreensaver lock.)\n"
+ "with your logged-in session without the xscreensaver lock, "
+ "and give screen locking\n"
+ "utmost urgency.)\n"
"Will fail with error code %d if the process does not run "
"/usr/bin/xscreensaver.\n"
"For more information and background, see\n"
@@ -86,6 +90,7 @@ int main (int argc, char **argv) {
char xscreensaver_exe[PATH_MAX];
int n;
FILE *f;
+ struct sched_param sparam;
if (argc != 2)
return usage (argv);
@@ -114,5 +119,9 @@ int main (int argc, char **argv) {
if (setpriority (PRIO_PROCESS, pid, INT_MIN) != 0)
return errno;
+ sparam.sched_priority = 99;
+ if (sched_setscheduler (pid, SCHED_FIFO, &sparam) != 0)
+ return errno;
+
return 0;
}