Home | History | Annotate | Download | only in unix
      1 // Copyright 2012 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 // +build arm,freebsd
      6 
      7 package unix
      8 
      9 import (
     10 	"syscall"
     11 	"unsafe"
     12 )
     13 
     14 func setTimespec(sec, nsec int64) Timespec {
     15 	return Timespec{Sec: sec, Nsec: int32(nsec)}
     16 }
     17 
     18 func setTimeval(sec, usec int64) Timeval {
     19 	return Timeval{Sec: sec, Usec: int32(usec)}
     20 }
     21 
     22 func SetKevent(k *Kevent_t, fd, mode, flags int) {
     23 	k.Ident = uint32(fd)
     24 	k.Filter = int16(mode)
     25 	k.Flags = uint16(flags)
     26 }
     27 
     28 func (iov *Iovec) SetLen(length int) {
     29 	iov.Len = uint32(length)
     30 }
     31 
     32 func (msghdr *Msghdr) SetControllen(length int) {
     33 	msghdr.Controllen = uint32(length)
     34 }
     35 
     36 func (cmsg *Cmsghdr) SetLen(length int) {
     37 	cmsg.Len = uint32(length)
     38 }
     39 
     40 func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
     41 	var writtenOut uint64 = 0
     42 	_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
     43 
     44 	written = int(writtenOut)
     45 
     46 	if e1 != 0 {
     47 		err = e1
     48 	}
     49 	return
     50 }
     51 
     52 func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
     53