github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgSys/kmgSys_darwin.go (about)

     1  package kmgSys
     2  
     3  import (
     4  	"os"
     5  	"syscall"
     6  	"unsafe"
     7  )
     8  
     9  func SyscallIoctl(fd int, request, argp uintptr) error {
    10  	_, _, errorp := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), request, argp)
    11  	if errorp == 0 {
    12  		return nil
    13  	}
    14  	return os.NewSyscallError("ioctl", errorp)
    15  }
    16  
    17  func SyscallConnect(s int, addr uintptr, addrlen uintptr) (err error) {
    18  	_, _, e1 := syscall.Syscall(syscall.SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
    19  	if e1 != 0 {
    20  		return os.NewSyscallError("connect", e1)
    21  	}
    22  	return nil
    23  }
    24  
    25  func SyscallFcntl(fd int, cmd int, arg int) (val int, err error) {
    26  	r0, _, e1 := syscall.Syscall(syscall.SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
    27  	if e1 != 0 {
    28  		return 0, os.NewSyscallError("fcntl", e1)
    29  	}
    30  	val = int(r0)
    31  	return val, nil
    32  }
    33  
    34  func SyscallGetSockopt(s int, level int, name int, val uintptr, vallen *uint32) (err error) {
    35  	_, _, e1 := syscall.Syscall6(syscall.SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
    36  	if e1 != 0 {
    37  		return os.NewSyscallError("getsockopt", e1)
    38  	}
    39  	return nil
    40  }