podman

Форк
0
45 строк · 1.2 Кб
1
//go:build darwin || linux
2
// +build darwin linux
3

4
/**
5
 * Copyright 2023 ByteDance Inc.
6
 *
7
 * Licensed under the Apache License, Version 2.0 (the "License");
8
 * you may not use this file except in compliance with the License.
9
 * You may obtain a copy of the License at
10
 *
11
 *     http://www.apache.org/licenses/LICENSE-2.0
12
 *
13
 * Unless required by applicable law or agreed to in writing, software
14
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 * See the License for the specific language governing permissions and
17
 * limitations under the License.
18
 */
19

20
package loader
21

22
import (
23
    `syscall`
24
)
25

26
const (
27
    _AP = syscall.MAP_ANON  | syscall.MAP_PRIVATE
28
    _RX = syscall.PROT_READ | syscall.PROT_EXEC
29
    _RW = syscall.PROT_READ | syscall.PROT_WRITE
30
)
31

32

33
func mmap(nb int) uintptr {
34
    if m, _, e := syscall.RawSyscall6(syscall.SYS_MMAP, 0, uintptr(nb), _RW, _AP, 0, 0); e != 0 {
35
        panic(e)
36
    } else {
37
        return m
38
    }
39
}
40

41
func mprotect(p uintptr, nb int) {
42
    if _, _, err := syscall.RawSyscall(syscall.SYS_MPROTECT, p, uintptr(nb), _RX); err != 0 {
43
        panic(err)
44
    }
45
}
46

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

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

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

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