summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Tettamanti <kronos.it@gmail.com>2010-08-23 14:35:37 +0200
committerMartin Pitt <martin.pitt@ubuntu.com>2010-08-25 16:50:30 +0200
commitc61eea9459045c2c9032a0c98234985a371fac58 (patch)
tree80651f02b25fe5cd3e13e995ff09ccf96e99a4c2
parent13f90be7a33353fdbcd4a389630a05c608bdf2a4 (diff)
Add support for oom_score_adj
/proc/<pid>/oom_adj has been deprecated (kernel v2.6.36) due to the rework of the badness heuristic; oom_score_adj is the replacement. Keep a fallback to the old interface for compatibility with older kernels. See http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a63d83f427fbce97a6cea0db2e64b0eb8435cd10 Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
-rw-r--r--udev/udevd.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/udev/udevd.c b/udev/udevd.c
index 374a4e0bc8..0ec3c3d4ec 100644
--- a/udev/udevd.c
+++ b/udev/udevd.c
@@ -1285,12 +1285,19 @@ int main(int argc, char *argv[])
fclose(f);
}
- /* OOM_DISABLE == -17 */
- fd = open("/proc/self/oom_adj", O_RDWR);
+ fd = open("/proc/self/oom_score_adj", O_RDWR);
if (fd < 0) {
- err(udev, "error disabling OOM: %m\n");
+ /* Fallback to old interface */
+ fd = open("/proc/self/oom_adj", O_RDWR);
+ if (fd < 0) {
+ err(udev, "error disabling OOM: %m\n");
+ } else {
+ /* OOM_DISABLE == -17 */
+ write(fd, "-17", 3);
+ close(fd);
+ }
} else {
- write(fd, "-17", 3);
+ write(fd, "-1000", 5);
close(fd);
}