mirror of https://github.com/kidoman/embd
Merge d14f3923ee
into d3d8c0c5c6
This commit is contained in:
commit
9ee7fb8b8e
|
@ -67,7 +67,7 @@ func parseVersion(str string) (major, minor, patch int, err error) {
|
||||||
return major, minor, patch, err
|
return major, minor, patch, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func kernelVersion() (major, minor, patch int, err error) {
|
func KernelVersion() (major, minor, patch int, err error) {
|
||||||
output, err := execOutput("uname", "-r")
|
output, err := execOutput("uname", "-r")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, 0, 0, err
|
return 0, 0, 0, err
|
||||||
|
@ -105,7 +105,7 @@ func cpuInfo() (model, hardware string, revision int, err error) {
|
||||||
|
|
||||||
// DetectHost returns the detected host and its revision number.
|
// DetectHost returns the detected host and its revision number.
|
||||||
func DetectHost() (host Host, rev int, err error) {
|
func DetectHost() (host Host, rev int, err error) {
|
||||||
major, minor, patch, err := kernelVersion()
|
major, minor, patch, err := KernelVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return HostNull, 0, err
|
return HostNull, 0, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"github.com/kidoman/embd"
|
"github.com/kidoman/embd"
|
||||||
"github.com/kidoman/embd/host/generic"
|
"github.com/kidoman/embd/host/generic"
|
||||||
|
@ -99,12 +98,12 @@ var spiDeviceMinor int = 1
|
||||||
|
|
||||||
func ensureFeatureEnabled(id string) error {
|
func ensureFeatureEnabled(id string) error {
|
||||||
glog.V(3).Infof("bbb: enabling feature %v", id)
|
glog.V(3).Infof("bbb: enabling feature %v", id)
|
||||||
pattern := "/sys/devices/bone_capemgr.*/slots"
|
|
||||||
file, err := embd.FindFirstMatchingFile(pattern)
|
slotsFile, err := slotsFilename()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
bytes, err := ioutil.ReadFile(file)
|
bytes, err := ioutil.ReadFile(slotsFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -113,7 +112,7 @@ func ensureFeatureEnabled(id string) error {
|
||||||
glog.V(3).Infof("bbb: feature %v already enabled", id)
|
glog.V(3).Infof("bbb: feature %v already enabled", id)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
slots, err := os.OpenFile(file, os.O_WRONLY, os.ModeExclusive)
|
slots, err := os.OpenFile(slotsFile, os.O_WRONLY, os.ModeExclusive)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -128,12 +127,12 @@ func ensureFeatureEnabled(id string) error {
|
||||||
// potentially cause a kernel panic and unsettle things. So the
|
// potentially cause a kernel panic and unsettle things. So the
|
||||||
// recommended thing to do is to simply reboot.
|
// recommended thing to do is to simply reboot.
|
||||||
func ensureFeatureDisabled(id string) error {
|
func ensureFeatureDisabled(id string) error {
|
||||||
pattern := "/sys/devices/bone_capemgr.*/slots"
|
|
||||||
file, err := embd.FindFirstMatchingFile(pattern)
|
slotsFile, err := slotsFilename()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
slots, err := os.OpenFile(file, os.O_RDWR, os.ModeExclusive)
|
slots, err := os.OpenFile(slotsFile, os.O_RDWR, os.ModeExclusive)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -184,3 +183,20 @@ func init() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// slotsFilename returns the full path and filename of the Capemgr slots file
|
||||||
|
func slotsFilename() (filename string, err error) {
|
||||||
|
major, _, _, err := embd.KernelVersion()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if major > 3 {
|
||||||
|
filename = "/sys/devices/platform/bone_capemgr/slots"
|
||||||
|
} else {
|
||||||
|
pattern := "/sys/devices/bone_capemgr.*/slots"
|
||||||
|
filename, err = embd.FindFirstMatchingFile(pattern)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return filename, err
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue