podman

Форк
0
/
criu_linux.go 
45 строк · 940.0 Байт
1
//go:build linux
2

3
package criu
4

5
import (
6
	"fmt"
7

8
	"github.com/checkpoint-restore/go-criu/v7"
9
	"github.com/checkpoint-restore/go-criu/v7/rpc"
10

11
	"google.golang.org/protobuf/proto"
12
)
13

14
// CheckForCriu uses CRIU's go bindings to check if the CRIU
15
// binary exists and if it at least the version Podman needs.
16
func CheckForCriu(version int) error {
17
	c := criu.MakeCriu()
18
	criuVersion, err := c.GetCriuVersion()
19
	if err != nil {
20
		return fmt.Errorf("failed to check for criu version: %w", err)
21
	}
22

23
	if criuVersion >= version {
24
		return nil
25
	}
26
	return fmt.Errorf("checkpoint/restore requires at least CRIU %d, current version is %d", version, criuVersion)
27
}
28

29
func MemTrack() bool {
30
	features, err := criu.MakeCriu().FeatureCheck(
31
		&rpc.CriuFeatures{
32
			MemTrack: proto.Bool(true),
33
		},
34
	)
35
	if err != nil {
36
		return false
37
	}
38

39
	return features.GetMemTrack()
40
}
41

42
func GetCriuVersion() (int, error) {
43
	c := criu.MakeCriu()
44
	return c.GetCriuVersion()
45
}
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.