mirror of
https://github.com/kubernetes/node-problem-detector.git
synced 2026-08-28 01:47:20 +00:00
Update github.com/coreos/go-systemd to v22.5.0
This commit is contained in:
Generated
Vendored
Generated
Vendored
Generated
Vendored
+57
@@ -0,0 +1,57 @@
|
||||
// Copyright 2015 CoreOS, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//go:build linux
|
||||
// +build linux
|
||||
|
||||
package dlopen
|
||||
|
||||
// #include <string.h>
|
||||
// #include <stdlib.h>
|
||||
//
|
||||
// int
|
||||
// my_strlen(void *f, const char *s)
|
||||
// {
|
||||
// size_t (*strlen)(const char *);
|
||||
//
|
||||
// strlen = (size_t (*)(const char *))f;
|
||||
// return strlen(s);
|
||||
// }
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func strlen(libs []string, s string) (int, error) {
|
||||
h, err := GetHandle(libs)
|
||||
if err != nil {
|
||||
return -1, fmt.Errorf(`couldn't get a handle to the library: %v`, err)
|
||||
}
|
||||
defer h.Close()
|
||||
|
||||
f := "strlen"
|
||||
cs := C.CString(s)
|
||||
defer C.free(unsafe.Pointer(cs))
|
||||
|
||||
strlen, err := h.GetSymbolPointer(f)
|
||||
if err != nil {
|
||||
return -1, fmt.Errorf(`couldn't get symbol %q: %v`, f, err)
|
||||
}
|
||||
|
||||
len := C.my_strlen(strlen, cs)
|
||||
|
||||
return int(len), nil
|
||||
}
|
||||
Generated
Vendored
+1
-1
@@ -16,7 +16,7 @@
|
||||
package sdjournal
|
||||
|
||||
import (
|
||||
"github.com/coreos/go-systemd/internal/dlopen"
|
||||
"github.com/coreos/go-systemd/v22/internal/dlopen"
|
||||
"sync"
|
||||
"unsafe"
|
||||
)
|
||||
Generated
Vendored
+50
-1
@@ -300,6 +300,24 @@ package sdjournal
|
||||
// return sd_journal_get_catalog(j, ret);
|
||||
// }
|
||||
//
|
||||
// int
|
||||
// my_sd_id128_get_boot(void *f, sd_id128_t *boot_id)
|
||||
// {
|
||||
// int(*sd_id128_get_boot)(sd_id128_t *);
|
||||
//
|
||||
// sd_id128_get_boot = f;
|
||||
// return sd_id128_get_boot(boot_id);
|
||||
// }
|
||||
//
|
||||
// char *
|
||||
// my_sd_id128_to_string(void *f, sd_id128_t boot_id, char s[SD_ID128_STRING_MAX])
|
||||
// {
|
||||
// char *(*sd_id128_to_string)(sd_id128_t, char *);
|
||||
//
|
||||
// sd_id128_to_string = f;
|
||||
// return sd_id128_to_string(boot_id, s);
|
||||
// }
|
||||
//
|
||||
import "C"
|
||||
import (
|
||||
"bytes"
|
||||
@@ -928,7 +946,7 @@ func (j *Journal) SeekHead() error {
|
||||
}
|
||||
|
||||
// SeekTail may be used to seek to the end of the journal, i.e. the most recent
|
||||
// available entry. This call must be followed by a call to Next before any
|
||||
// available entry. This call must be followed by a call to Previous before any
|
||||
// call to Get* will return data about the last element.
|
||||
func (j *Journal) SeekTail() error {
|
||||
sd_journal_seek_tail, err := getFunction("sd_journal_seek_tail")
|
||||
@@ -1118,3 +1136,34 @@ func (j *Journal) GetCatalog() (string, error) {
|
||||
|
||||
return catalog, nil
|
||||
}
|
||||
|
||||
// GetBootID get systemd boot id
|
||||
func (j *Journal) GetBootID() (string, error) {
|
||||
sd_id128_get_boot, err := getFunction("sd_id128_get_boot")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
var boot_id C.sd_id128_t
|
||||
r := C.my_sd_id128_get_boot(sd_id128_get_boot, &boot_id)
|
||||
if r < 0 {
|
||||
return "", fmt.Errorf("failed to get boot id: %s", syscall.Errno(-r).Error())
|
||||
}
|
||||
|
||||
sd_id128_to_string, err := getFunction("sd_id128_to_string")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
id128StringMax := C.size_t(C.SD_ID128_STRING_MAX)
|
||||
c := (*C.char)(C.malloc(id128StringMax))
|
||||
defer C.free(unsafe.Pointer(c))
|
||||
C.my_sd_id128_to_string(sd_id128_to_string, boot_id, c)
|
||||
|
||||
bootID := C.GoString(c)
|
||||
if len(bootID) <= 0 {
|
||||
return "", fmt.Errorf("get boot id %s is not valid", bootID)
|
||||
}
|
||||
|
||||
return bootID, nil
|
||||
}
|
||||
Reference in New Issue
Block a user