63 return err |
64 return err |
64 } |
65 } |
65 p[0] = int(pp[0]) |
66 p[0] = int(pp[0]) |
66 p[1] = int(pp[1]) |
67 p[1] = int(pp[1]) |
67 return nil |
68 return nil |
|
69 } |
|
70 |
|
71 //sysnb pipe2(p *[2]_C_int, flags int) (err error) |
|
72 |
|
73 func Pipe2(p []int, flags int) error { |
|
74 if len(p) != 2 { |
|
75 return EINVAL |
|
76 } |
|
77 var pp [2]_C_int |
|
78 err := pipe2(&pp, flags) |
|
79 p[0] = int(pp[0]) |
|
80 p[1] = int(pp[1]) |
|
81 return err |
68 } |
82 } |
69 |
83 |
70 func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { |
84 func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { |
71 if sa.Port < 0 || sa.Port > 0xFFFF { |
85 if sa.Port < 0 || sa.Port > 0xFFFF { |
72 return nil, 0, EINVAL |
86 return nil, 0, EINVAL |
549 |
563 |
550 /* |
564 /* |
551 * Expose the ioctl function |
565 * Expose the ioctl function |
552 */ |
566 */ |
553 |
567 |
554 //sys ioctl(fd int, req uint, arg uintptr) (err error) |
568 //sys ioctlRet(fd int, req uint, arg uintptr) (ret int, err error) = libc.ioctl |
555 |
569 |
556 func IoctlSetTermio(fd int, req uint, value *Termio) (err error) { |
570 func ioctl(fd int, req uint, arg uintptr) (err error) { |
557 return ioctl(fd, req, uintptr(unsafe.Pointer(value))) |
571 _, err = ioctlRet(fd, req, arg) |
|
572 return err |
|
573 } |
|
574 |
|
575 func IoctlSetTermio(fd int, req uint, value *Termio) error { |
|
576 err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) |
|
577 runtime.KeepAlive(value) |
|
578 return err |
558 } |
579 } |
559 |
580 |
560 func IoctlGetTermio(fd int, req uint) (*Termio, error) { |
581 func IoctlGetTermio(fd int, req uint) (*Termio, error) { |
561 var value Termio |
582 var value Termio |
562 err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) |
583 err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) |
563 return &value, err |
584 return &value, err |
564 } |
585 } |
565 |
586 |
566 //sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) |
587 //sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) |
567 |
588 |
568 func Poll(fds []PollFd, timeout int) (n int, err error) { |
589 func Poll(fds []PollFd, timeout int) (n int, err error) { |
569 if len(fds) == 0 { |
590 if len(fds) == 0 { |
570 return poll(nil, 0, timeout) |
591 return poll(nil, 0, timeout) |
571 } |
592 } |
664 //sys Shutdown(s int, how int) (err error) = libsocket.shutdown |
685 //sys Shutdown(s int, how int) (err error) = libsocket.shutdown |
665 //sys Stat(path string, stat *Stat_t) (err error) |
686 //sys Stat(path string, stat *Stat_t) (err error) |
666 //sys Statvfs(path string, vfsstat *Statvfs_t) (err error) |
687 //sys Statvfs(path string, vfsstat *Statvfs_t) (err error) |
667 //sys Symlink(path string, link string) (err error) |
688 //sys Symlink(path string, link string) (err error) |
668 //sys Sync() (err error) |
689 //sys Sync() (err error) |
|
690 //sys Sysconf(which int) (n int64, err error) |
669 //sysnb Times(tms *Tms) (ticks uintptr, err error) |
691 //sysnb Times(tms *Tms) (ticks uintptr, err error) |
670 //sys Truncate(path string, length int64) (err error) |
692 //sys Truncate(path string, length int64) (err error) |
671 //sys Fsync(fd int) (err error) |
693 //sys Fsync(fd int) (err error) |
672 //sys Ftruncate(fd int, length int64) (err error) |
694 //sys Ftruncate(fd int, length int64) (err error) |
673 //sys Umask(mask int) (oldmask int) |
695 //sys Umask(mask int) (oldmask int) |