-
Notifications
You must be signed in to change notification settings - Fork 6
/
ioctl.go
37 lines (32 loc) · 866 Bytes
/
ioctl.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Copyright 2021 Canonical Ltd.
// Licensed under the LGPLv3 with static-linking exception.
// See LICENCE file for details.
package unix
import (
"syscall"
"unsafe"
)
func IoctlGetUint(fd int, req uint) (uint, error) {
var value uint
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(unsafe.Pointer(&value)))
if err != 0 {
return 0, err
}
return value, nil
}
func IoctlGetUint64(fd int, req uint) (uint64, error) {
var value uint64
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(unsafe.Pointer(&value)))
if err != 0 {
return 0, err
}
return value, nil
}
func IoctlSetPointerUint(fd int, req, value uint) error {
v := value
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(unsafe.Pointer(&v)))
if err != 0 {
return err
}
return nil
}