github.com/gotranspile/cxgo@v0.3.8-0.20240118201721-29871598a6a2/runtime/csys/ioctl.go (about)

     1  // +build !windows
     2  
     3  package csys
     4  
     5  import (
     6  	"syscall"
     7  
     8  	"github.com/gotranspile/cxgo/runtime/libc"
     9  )
    10  
    11  func Ioctl(fd uintptr, req uintptr, args ...interface{}) int32 {
    12  	var err syscall.Errno
    13  	switch req {
    14  	case FIONREAD:
    15  		if len(args) != 1 {
    16  			panic("invalid number of args")
    17  		}
    18  		p, err := libc.AsPtr(args[0])
    19  		if err != nil {
    20  			panic(err)
    21  		}
    22  		_, _, err = syscall.Syscall(syscall.SYS_IOCTL, fd, req, uintptr(p))
    23  	}
    24  	if err != 0 {
    25  		return -1
    26  	}
    27  	return 0
    28  }