intel-device-plugins-for-ku.../pkg/fpga/ioctl_linux.go
Ed Bartosh cec004c398 lint: enable wsl check
Fixes: #392

Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
2021-12-17 11:48:48 +02:00

44 lines
1.3 KiB
Go

// Copyright 2019 Intel Corporation. All Rights Reserved.
//
// 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.
package fpga
import (
"os"
"syscall"
)
// TODO(rojkov): drop this function when it lands in x/sys/unix.
func ioctl(fd uintptr, req uint, arg uintptr) (uintptr, error) {
ret, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(req), arg)
// Even though err is syscall.Errno which implements the error interface it's
// an unsigned number and can't be nil. So filter the zero value out.
if err != 0 {
return ret, err
}
return ret, nil
}
// Same as above, but open device only for single operation.
func ioctlDev(dev string, req uint, arg uintptr) (ret uintptr, err error) {
f, err := os.OpenFile(dev, os.O_RDWR, 0644)
if err != nil {
return
}
defer f.Close()
return ioctl(f.Fd(), req, arg)
}