Use Klogctl from x/sys/unix to read Linux kernel log

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
This commit is contained in:
Tobias Klauser 2019-08-09 15:43:18 +02:00
parent e551e5a73d
commit 2841b05b71

View file

@ -1,17 +1,15 @@
package dmesg // import "github.com/docker/docker/pkg/dmesg" package dmesg // import "github.com/docker/docker/pkg/dmesg"
import ( import (
"unsafe"
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
) )
// Dmesg returns last messages from the kernel log, up to size bytes // Dmesg returns last messages from the kernel log, up to size bytes
func Dmesg(size int) []byte { func Dmesg(size int) []byte {
t := uintptr(3) // SYSLOG_ACTION_READ_ALL t := 3 // SYSLOG_ACTION_READ_ALL
b := make([]byte, size) b := make([]byte, size)
amt, _, err := unix.Syscall(unix.SYS_SYSLOG, t, uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))) amt, err := unix.Klogctl(t, b)
if err != 0 { if err != nil {
return []byte{} return []byte{}
} }
return b[:amt] return b[:amt]