Browse Source

Move the kernel detection to arch specific files

Guillaume J. Charmes 12 years ago
parent
commit
16aeb77d51
3 changed files with 71 additions and 57 deletions
  1. 5 0
      getKernelVersion_darwin.go
  2. 65 0
      getKernelVersion_linux.go
  3. 1 57
      utils.go

+ 5 - 0
getKernelVersion_darwin.go

@@ -0,0 +1,5 @@
+package docker
+
+func getKernelVersion() (*KernelVersionInfo, error) {
+	return nil, fmt.Errorf("Kernel version detection is not available on darwin")
+}

+ 65 - 0
getKernelVersion_linux.go

@@ -0,0 +1,65 @@
+package docker
+
+import (
+	"strconv"
+	"strings"
+	"syscall"
+)
+
+func getKernelVersion() (*KernelVersionInfo, error) {
+	var (
+		uts                  syscall.Utsname
+		flavor               string
+		kernel, major, minor int
+		err                  error
+	)
+
+	if err := syscall.Uname(&uts); err != nil {
+		return nil, err
+	}
+
+	release := make([]byte, len(uts.Release))
+
+	i := 0
+	for _, c := range uts.Release {
+		release[i] = byte(c)
+		i++
+	}
+
+	tmp := strings.SplitN(string(release), "-", 2)
+	tmp2 := strings.SplitN(tmp[0], ".", 3)
+
+	if len(tmp2) > 0 {
+		kernel, err = strconv.Atoi(tmp2[0])
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	if len(tmp2) > 1 {
+		major, err = strconv.Atoi(tmp2[1])
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	if len(tmp2) > 2 {
+		minor, err = strconv.Atoi(tmp2[2])
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	if len(tmp) == 2 {
+		flavor = tmp[1]
+	} else {
+		flavor = ""
+	}
+
+	return &KernelVersionInfo{
+		Kernel: kernel,
+		Major:  major,
+		Minor:  minor,
+		Flavor: flavor,
+	}, nil
+}

+ 1 - 57
utils.go

@@ -14,10 +14,8 @@ import (
 	"path/filepath"
 	"regexp"
 	"runtime"
-	"strconv"
 	"strings"
 	"sync"
-	"syscall"
 	"time"
 )
 
@@ -407,61 +405,7 @@ type KernelVersionInfo struct {
 
 // FIXME: this doens't build on Darwin
 func GetKernelVersion() (*KernelVersionInfo, error) {
-	var (
-		uts                  syscall.Utsname
-		flavor               string
-		kernel, major, minor int
-		err                  error
-	)
-
-	if err := syscall.Uname(&uts); err != nil {
-		return nil, err
-	}
-
-	release := make([]byte, len(uts.Release))
-
-	i := 0
-	for _, c := range uts.Release {
-		release[i] = byte(c)
-		i++
-	}
-
-	tmp := strings.SplitN(string(release), "-", 2)
-	tmp2 := strings.SplitN(tmp[0], ".", 3)
-
-	if len(tmp2) > 0 {
-		kernel, err = strconv.Atoi(tmp2[0])
-		if err != nil {
-			return nil, err
-		}
-	}
-
-	if len(tmp2) > 1 {
-		major, err = strconv.Atoi(tmp2[1])
-		if err != nil {
-			return nil, err
-		}
-	}
-
-	if len(tmp2) > 2 {
-		minor, err = strconv.Atoi(tmp2[2])
-		if err != nil {
-			return nil, err
-		}
-	}
-
-	if len(tmp) == 2 {
-		flavor = tmp[1]
-	} else {
-		flavor = ""
-	}
-
-	return &KernelVersionInfo{
-		Kernel: kernel,
-		Major:  major,
-		Minor:  minor,
-		Flavor: flavor,
-	}, nil
+	return getKernelVersion()
 }
 
 func (k *KernelVersionInfo) String() string {