From b81c37125bd70a4f086b073e821a5ea79b31e394 Mon Sep 17 00:00:00 2001 From: Bryce Kahle Date: Tue, 15 Feb 2022 17:20:34 -0800 Subject: [PATCH] features: add LinuxVersionCode function to obtain LINUX_VERSION_CODE In order to allow userspace to determine the value used for LINUX_VERSION_CODE at compile time, expose the constant here. This is useful when building eBPF objects at runtime. --- features/version.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 features/version.go diff --git a/features/version.go b/features/version.go new file mode 100644 index 000000000..69e1c39c1 --- /dev/null +++ b/features/version.go @@ -0,0 +1,18 @@ +package features + +import "github.com/cilium/ebpf/internal" + +// LinuxVersionCode returns the version of the currently running kernel +// as defined in the LINUX_VERSION_CODE compile-time macro. It is represented +// in the format described by the KERNEL_VERSION macro from linux/version.h. +// +// Do not use the version to make assumptions about the presence of certain +// kernel features, always prefer feature probes in this package. Some +// distributions backport or disable eBPF features. +func LinuxVersionCode() (uint32, error) { + v, err := internal.KernelVersion() + if err != nil { + return 0, err + } + return v.Kernel(), nil +}