I was aware that your parameters would not fit the IoctlXXXX functions. As 
Ian pointed out, you would need to use *golang.org/x/sys/unix/Syscall() *and 
friends. 

On Sunday, August 26, 2018 at 10:00:11 AM UTC-4, sbez...@cisco.com wrote:
>
> Hi Jake,
>
>  
>
> Ioctl implementation in unix package seems a bit limited, how do you pass 
> for example a required struct if “func IoctlSetInt(fd int, req uint, value 
> int)” allows only to accept int?? If this package had a func accepting 
> uintptr as a parameter, then I guess that could work.
>
>  
>
> Thank you
>
> Serguei
>
>  
>
>  
>
> *From: *<golan...@googlegroups.com <javascript:>> on behalf of "
> jake...@gmail.com <javascript:>" <jake...@gmail.com <javascript:>>
> *Date: *Friday, August 24, 2018 at 12:09 PM
> *To: *golang-nuts <golan...@googlegroups.com <javascript:>>
> *Subject: *[go-nuts] Re: Ioctl Syscall with go and c
>
>  
>
> Probably unrelated to your problem, but IIUC, the syscall package is 
> "deprecated", or "frozen". According to the syscall documentation 
> <https://golang.org/pkg/syscall/>:
>
> *This package is locked down. Code outside the standard Go repository 
> should be migrated to use the corresponding package in the golang.org/x/sys 
> <http://golang.org/x/sys> repository. That is also where updates required 
> by new systems or versions should be applied. *
>
>  
>
> So, while unlikely, it is possible that is the problem. In any case, 
> unless I misunderstand, the preferred package for you to use is 
> golang.org/x/sys/unix.
>
>  
>
> On Thursday, August 23, 2018 at 7:02:13 AM UTC-4, sbez...@cisco.com 
> wrote: 
>
> Hello, 
>
> I am converting some C code to Go and hit an issue with one particular 
> Syscall: 
>
> In C: 
>
>         device = ioctl(group, 0x3b6a, path); 
> where path is char[N] 
>
> In Go: 
> ioctlId := 0x3b6a 
> device, _, errno := syscall.Syscall( 
>                 syscall.SYS_IOCTL, 
>                 uintptr(group), 
>                 uintptr(unsafe.Pointer(&ioctlId)), 
>                 uintptr(unsafe.Pointer(pciDevice)), 
>         ) 
> Where pciDevice is *string with exactly the same value as path in C. 
>
> When I run Go bits on the same h/w, same OS, same everything, it fails 
> with "errno 22 (invalid argument)". It seems that the issue is how string 
> gets passed to Syscall, but I could not find any examples how to do it 
> correctly. 
> Appreciate some advice here. 
>
> Thank you 
> Serguei 
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts...@googlegroups.com <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to