]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/ProcFSTools.pm
ProcFSTools: add kernel_version
[pve-common.git] / src / PVE / ProcFSTools.pm
index 14c1d6ed8a37700e07cea3e26f9fa5338e24e3db..94a2d549ece5d410d02be23a2761787038bddcef 100644 (file)
@@ -80,6 +80,23 @@ sub read_proc_uptime {
     return (0, 0);
 }
 
+sub kernel_version {
+    my $line = PVE::Tools::file_read_firstline("/proc/version");
+
+    if ($line && $line =~ m|^Linux\sversion\s((\d+(?:\.\d+)+)-?(\S+)?)|) {
+        my ($fullversion, $version_numbers, $extra) = ($1, $2, $3);
+
+       # variable names are the one from the Linux kernel Makefile
+       my ($version, $patchlevel, $sublevel) = split(/\./, $version_numbers);
+
+       return wantarray
+           ? (int($version), int($patchlevel), int($sublevel), $extra, $fullversion)
+           : $fullversion;
+    }
+
+    return (0, 0, 0, '', '');
+}
+
 sub read_loadavg {
 
     my $line = PVE::Tools::file_read_firstline('/proc/loadavg');