| package platform | |
| import ( | |
| "context" | |
| "sync" | |
| "github.com/containerd/log" | |
| ) | |
| var ( | |
| arch string | |
| onceArch sync.Once | |
| ) | |
| // Architecture returns the runtime architecture of the process. | |
| // | |
| // Unlike [runtime.GOARCH] (which refers to the compiler platform), | |
| // Architecture refers to the running platform. | |
| // | |
| // For example, Architecture reports "x86_64" as architecture, even | |
| // when running a "linux/386" compiled binary on "linux/amd64" hardware. | |
| func Architecture() string { | |
| onceArch.Do(func() { | |
| var err error | |
| arch, err = runtimeArchitecture() | |
| if err != nil { | |
| log.G(context.TODO()).WithError(err).Error("Could not read system architecture info") | |
| } | |
| }) | |
| return arch | |
| } |