architecture_linux.go 634 B

12345678910111213141516171819202122232425262728
  1. // Package platform provides helper function to get the runtime architecture
  2. // for different platforms.
  3. package platform
  4. import (
  5. "syscall"
  6. )
  7. // GetRuntimeArchitecture get the name of the current architecture (x86, x86_64, …)
  8. func GetRuntimeArchitecture() (string, error) {
  9. utsname := &syscall.Utsname{}
  10. if err := syscall.Uname(utsname); err != nil {
  11. return "", err
  12. }
  13. return charsToString(utsname.Machine), nil
  14. }
  15. func charsToString(ca [65]int8) string {
  16. s := make([]byte, len(ca))
  17. var lens int
  18. for ; lens < len(ca); lens++ {
  19. if ca[lens] == 0 {
  20. break
  21. }
  22. s[lens] = uint8(ca[lens])
  23. }
  24. return string(s[0:lens])
  25. }