kernel_unix.go 640 B

12345678910111213141516171819202122232425262728293031323334
  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. var (
  11. err error
  12. )
  13. uts, err := uname()
  14. if err != nil {
  15. return nil, err
  16. }
  17. release := make([]byte, len(uts.Release))
  18. i := 0
  19. for _, c := range uts.Release {
  20. release[i] = byte(c)
  21. i++
  22. }
  23. // Remove the \x00 from the release for Atoi to parse correctly
  24. release = release[:bytes.IndexByte(release, 0)]
  25. return ParseRelease(string(release))
  26. }