diff options
author | Luca Tettamanti <kronos.it@gmail.com> | 2010-08-23 14:35:37 +0200 |
---|---|---|
committer | Martin Pitt <martin.pitt@ubuntu.com> | 2010-08-25 16:50:30 +0200 |
commit | c61eea9459045c2c9032a0c98234985a371fac58 (patch) | |
tree | 80651f02b25fe5cd3e13e995ff09ccf96e99a4c2 /udev/udevd.c | |
parent | 13f90be7a33353fdbcd4a389630a05c608bdf2a4 (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>
Diffstat (limited to 'udev/udevd.c')
-rw-r--r-- | udev/udevd.c | 15 |
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); } |