procfs: add check_kernel_release
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 31 Jan 2020 09:22:21 +0000 (10:22 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 31 Jan 2020 12:45:56 +0000 (13:45 +0100)
adapted from Wolfgan's patch[0] for a pve-container feature check, as
this is a general check let's move it here.

[0]: https://pve.proxmox.com/pipermail/pve-devel/2020-January/041477.html

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
src/PVE/ProcFSTools.pm

index d170ef5..7f905f4 100644 (file)
@@ -97,6 +97,23 @@ sub kernel_version {
     return (0, 0, 0, '', '');
 }
 
+# Check if the kernel is at least $major.$minor. Return either just a boolean,
+# or a boolean and the kernel version's major.minor string from /proc/version
+sub check_kernel_release {
+    my ($major, $minor) = @_;
+
+    my ($k_major, $k_minor) = kernel_version();
+
+    my $ok;
+    if (defined($minor)) {
+       $ok = $k_major > $major || ($k_major == $major && $k_minor >= $minor);
+    } else {
+       $ok = $k_major >= $major;
+    }
+
+    return wantarray ? ($ok, "$k_major.$k_minor") : $ok;
+}
+
 sub read_loadavg {
 
     my $line = PVE::Tools::file_read_firstline('/proc/loadavg');