X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=lttng-kernel-version.h;h=e7fffe606a288bdf1dd4203abd01162ef94fbbc9;hb=82151df0af0a93508975b15fc26f1fe151d8c6c3;hp=9e02cc6dd4deec73b6ca4f31db2bcd561f786b0f;hpb=360d3efee55154a55c18be32175bee608dcb21df;p=lttng-modules.git diff --git a/lttng-kernel-version.h b/lttng-kernel-version.h index 9e02cc6d..e7fffe60 100644 --- a/lttng-kernel-version.h +++ b/lttng-kernel-version.h @@ -25,9 +25,49 @@ #include +/* + * The following defines are extracted from the toplevel Linux Makefile and + * passed on the command line -with '-D'. + */ + +#ifndef LTTNG_LINUX_MAJOR +#define LTTNG_LINUX_MAJOR 0 +#endif + +#ifndef LTTNG_LINUX_MINOR +#define LTTNG_LINUX_MINOR 0 +#endif + +#ifndef LTTNG_LINUX_PATCH +#define LTTNG_LINUX_PATCH 0 +#endif + +/* + * Some stable releases have overflowed the 8bits allocated to the sublevel in + * the version code. To determine if the current kernel is affected, use the + * sublevel version from the Makefile. This is currently true for the 4.4.256 + * and 4.9.256 stable releases. + * + * When the sublevel has overflowed, use the values from the Makefile instead + * of LINUX_VERSION_CODE from the kernel headers and allocate 16bits. + * Otherwise, keep using the version code from the headers to minimise the + * behavior change and avoid regressions. + */ +#if (LTTNG_LINUX_PATCH >= 256) + +#define LTTNG_KERNEL_VERSION(a, b, c) \ + (((a) << 24) + ((b) << 16) + (c)) + +#define LTTNG_LINUX_VERSION_CODE \ + LTTNG_KERNEL_VERSION(LTTNG_LINUX_MAJOR, LTTNG_LINUX_MINOR, LTTNG_LINUX_PATCH) + +#else + #define LTTNG_KERNEL_VERSION(a, b, c) KERNEL_VERSION(a, b, c) #define LTTNG_LINUX_VERSION_CODE LINUX_VERSION_CODE +#endif + #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,33)) #include #else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,33)) */