kernel_unix.go 617 B

123456789101112131415161718192021222324252627282930
  1. // +build linux freebsd solaris
  2. // Package kernel provides helper function to get, parse and compare kernel
  3. // versions for different platforms.
  4. package kernel
  5. import (
  6. "bytes"
  7. )
  8. // GetKernelVersion gets the current kernel version.
  9. func GetKernelVersion() (*VersionInfo, error) {
  10. uts, err := uname()
  11. if err != nil {
  12. return nil, err
  13. }
  14. release := make([]byte, len(uts.Release))
  15. i := 0
  16. for _, c := range uts.Release {
  17. release[i] = byte(c)
  18. i++
  19. }
  20. // Remove the \x00 from the release for Atoi to parse correctly
  21. release = release[:bytes.IndexByte(release, 0)]
  22. return ParseRelease(string(release))
  23. }