9abf7d879d
Linux release numbers are x.y.z we assumed but never protected against x> 0x7fff and y,z > 0xff before. Linux release in 1991, 1 major release per 6 years so we're fine until 7452, unless they do way too many minor rels (max being 39)
94 lines
3.0 KiB
Groff
94 lines
3.0 KiB
Groff
.\" (C) Copyright 2016 Craig Small <csmall@enc.com.au>
|
|
.\"
|
|
.\" %%%LICENSE_START(LGPL_2.1+)
|
|
.\" This manual is free software; you can redistribute it and/or
|
|
.\" modify it under the terms of the GNU Lesser General Public
|
|
.\" License as published by the Free Software Foundation; either
|
|
.\" version 2.1 of the License, or (at your option) any later version.
|
|
.\"
|
|
.\" This manual is distributed in the hope that it will be useful,
|
|
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
.\" Lesser General Public License for more details.
|
|
.\"
|
|
.\" You should have received a copy of the GNU Lesser General Public
|
|
.\" License along with this library; if not, write to the Free Software
|
|
.\" Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
.\" %%%LICENSE_END
|
|
.\"
|
|
.TH PROCPS_LINUX_VERSION 3 2016-05-01 "libproc-2"
|
|
.\" Please adjust this date whenever revising the manpage.
|
|
.\"
|
|
.SH NAME
|
|
procps_linux_version \-
|
|
provide current version of Linux as an integer
|
|
.SH SYNOPSIS
|
|
.B #include <proc/procps.h>
|
|
.sp
|
|
.B int procps_linux_version(void);
|
|
.sp
|
|
Link with \fI\-lprocps\fP.
|
|
.SH DESCRIPTION
|
|
The function
|
|
.BR procps_linux_version ()
|
|
returns the current Linux version as an integer. On non-Linux systems that
|
|
have an emulated proc filesystem this function returns the version of the
|
|
Linux emulation instead.
|
|
The Linux version consists of a triple of positive integers representing
|
|
the major, minor and patch versions of the kernel.
|
|
.PP
|
|
The library provides 3 macros for separating out the components.
|
|
.RS 4
|
|
.TP 1.2i
|
|
.BR LINUX_VERSION_MAJOR (ver)
|
|
Extract the major component from the given version integer.
|
|
.TP
|
|
.BR LINUX_VERSION_MINOR (ver)
|
|
Extract the minor component from the given version integer.
|
|
.TP
|
|
.BR LINUX_VERSION_PATCH (ver)
|
|
Extract the patch component from the given version integer.
|
|
.RE
|
|
.PP
|
|
To encode a given Linux version, such as using it to compare against the current
|
|
version, use the following macro:
|
|
.TP
|
|
.BI LINUX_VERSION( major , minor , patch )
|
|
|
|
.SH RETURN VALUE
|
|
The
|
|
.BR procps_linux_version ()
|
|
returns a positive integer encoding the Linux version if successful. Otherwise
|
|
returns a negative integer to one of the values defined below.
|
|
.TP
|
|
.B -EIO
|
|
The procps library was unable to read the osrelease file.
|
|
.TP
|
|
.B -ERANGE
|
|
Unable to parse the osrelease file.
|
|
.PP
|
|
.BR procps_linux_version ()
|
|
may also return any (negated) value that \fBfopen\fR() may set errno to.
|
|
|
|
.SH FILES
|
|
.TP
|
|
.I /proc/sys/kernel/osrelease
|
|
Contains the release version of the Linux kernel or proc filesystem.
|
|
|
|
.SH VERSIONS
|
|
.B procps_linux_version()
|
|
first appeared in libproc-2 version 0.0.
|
|
|
|
.SH BUGS
|
|
Due to the way the three numbers are encoded into a single integer,
|
|
.BR procps_linux_version ()
|
|
and the associated macros assume 255 for the maximum value for the
|
|
minor and patch level and 32767 (hex 0x7fff) for the maximum value
|
|
for the major version. In other words, when Linux v 32768.0.0 comes
|
|
out, this function will break.
|
|
.\" Maj/6yr - In 7452 we'll think of something
|
|
|
|
.SH SEE ALSO
|
|
.BR fopen (3),
|
|
.BR proc (5).
|