Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(481)

Side by Side Diff: src/pkg/syscall/syscall_windows.go

Issue 84330043: code review 84330043: syscall: use unsafe.Pointer instead of uintptr on windo... (Closed)
Patch Set: diff -r 88b3b2fa4dde https://go.googlecode.com/hg/ Created 9 years, 11 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/pkg/syscall/zsyscall_windows_386.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 The Go Authors. All rights reserved. 1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style 2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file. 3 // license that can be found in the LICENSE file.
4 4
5 // Windows system calls. 5 // Windows system calls.
6 6
7 package syscall 7 package syscall
8 8
9 import ( 9 import (
10 errorspkg "errors" 10 errorspkg "errors"
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 // net api calls 516 // net api calls
517 517
518 const socket_error = uintptr(^uint32(0)) 518 const socket_error = uintptr(^uint32(0))
519 519
520 //sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSASta rtup 520 //sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSASta rtup
521 //sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup 521 //sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup
522 //sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (e rr error) [failretval==socket_error] = ws2_32.WSAIoctl 522 //sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (e rr error) [failretval==socket_error] = ws2_32.WSAIoctl
523 //sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [ failretval==InvalidHandle] = ws2_32.socket 523 //sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [ failretval==InvalidHandle] = ws2_32.socket
524 //sys Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen in t32) (err error) [failretval==socket_error] = ws2_32.setsockopt 524 //sys Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen in t32) (err error) [failretval==socket_error] = ws2_32.setsockopt
525 //sys Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *i nt32) (err error) [failretval==socket_error] = ws2_32.getsockopt 525 //sys Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *i nt32) (err error) [failretval==socket_error] = ws2_32.getsockopt
526 //sys» bind(s Handle, name uintptr, namelen int32) (err error) [failretval==soc ket_error] = ws2_32.bind 526 //sys» bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretv al==socket_error] = ws2_32.bind
527 //sys» connect(s Handle, name uintptr, namelen int32) (err error) [failretval== socket_error] = ws2_32.connect 527 //sys» connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failr etval==socket_error] = ws2_32.connect
528 //sys getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [ failretval==socket_error] = ws2_32.getsockname 528 //sys getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [ failretval==socket_error] = ws2_32.getsockname
529 //sys getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [ failretval==socket_error] = ws2_32.getpeername 529 //sys getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [ failretval==socket_error] = ws2_32.getpeername
530 //sys listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen 530 //sys listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen
531 //sys shutdown(s Handle, how int32) (err error) [failretval==socket_error] = w s2_32.shutdown 531 //sys shutdown(s Handle, how int32) (err error) [failretval==socket_error] = w s2_32.shutdown
532 //sys Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.cl osesocket 532 //sys Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.cl osesocket
533 //sys AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uin t32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswso ck.AcceptEx 533 //sys AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uin t32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswso ck.AcceptEx
534 //sys GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddr len uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsale n *int32) = mswsock.GetAcceptExSockaddrs 534 //sys GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddr len uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsale n *int32) = mswsock.GetAcceptExSockaddrs
535 //sys WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uin t32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_err or] = ws2_32.WSARecv 535 //sys WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uin t32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_err or] = ws2_32.WSARecv
536 //sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint3 2, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error ] = ws2_32.WSASend 536 //sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint3 2, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error ] = ws2_32.WSASend
537 //sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom 537 //sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 Family uint16 572 Family uint16
573 Data [14]int8 573 Data [14]int8
574 } 574 }
575 575
576 type RawSockaddrAny struct { 576 type RawSockaddrAny struct {
577 Addr RawSockaddr 577 Addr RawSockaddr
578 Pad [96]int8 578 Pad [96]int8
579 } 579 }
580 580
581 type Sockaddr interface { 581 type Sockaddr interface {
582 » sockaddr() (ptr uintptr, len int32, err error) // lowercase; only we can define Sockaddrs 582 » sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs
583 } 583 }
584 584
585 type SockaddrInet4 struct { 585 type SockaddrInet4 struct {
586 Port int 586 Port int
587 Addr [4]byte 587 Addr [4]byte
588 raw RawSockaddrInet4 588 raw RawSockaddrInet4
589 } 589 }
590 590
591 func (sa *SockaddrInet4) sockaddr() (uintptr, int32, error) { 591 func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) {
592 if sa.Port < 0 || sa.Port > 0xFFFF { 592 if sa.Port < 0 || sa.Port > 0xFFFF {
593 » » return 0, 0, EINVAL 593 » » return nil, 0, EINVAL
594 } 594 }
595 sa.raw.Family = AF_INET 595 sa.raw.Family = AF_INET
596 p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) 596 p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
597 p[0] = byte(sa.Port >> 8) 597 p[0] = byte(sa.Port >> 8)
598 p[1] = byte(sa.Port) 598 p[1] = byte(sa.Port)
599 for i := 0; i < len(sa.Addr); i++ { 599 for i := 0; i < len(sa.Addr); i++ {
600 sa.raw.Addr[i] = sa.Addr[i] 600 sa.raw.Addr[i] = sa.Addr[i]
601 } 601 }
602 » return uintptr(unsafe.Pointer(&sa.raw)), int32(unsafe.Sizeof(sa.raw)), n il 602 » return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
603 } 603 }
604 604
605 type SockaddrInet6 struct { 605 type SockaddrInet6 struct {
606 Port int 606 Port int
607 ZoneId uint32 607 ZoneId uint32
608 Addr [16]byte 608 Addr [16]byte
609 raw RawSockaddrInet6 609 raw RawSockaddrInet6
610 } 610 }
611 611
612 func (sa *SockaddrInet6) sockaddr() (uintptr, int32, error) { 612 func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {
613 if sa.Port < 0 || sa.Port > 0xFFFF { 613 if sa.Port < 0 || sa.Port > 0xFFFF {
614 » » return 0, 0, EINVAL 614 » » return nil, 0, EINVAL
615 } 615 }
616 sa.raw.Family = AF_INET6 616 sa.raw.Family = AF_INET6
617 p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) 617 p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
618 p[0] = byte(sa.Port >> 8) 618 p[0] = byte(sa.Port >> 8)
619 p[1] = byte(sa.Port) 619 p[1] = byte(sa.Port)
620 sa.raw.Scope_id = sa.ZoneId 620 sa.raw.Scope_id = sa.ZoneId
621 for i := 0; i < len(sa.Addr); i++ { 621 for i := 0; i < len(sa.Addr); i++ {
622 sa.raw.Addr[i] = sa.Addr[i] 622 sa.raw.Addr[i] = sa.Addr[i]
623 } 623 }
624 » return uintptr(unsafe.Pointer(&sa.raw)), int32(unsafe.Sizeof(sa.raw)), n il 624 » return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
625 } 625 }
626 626
627 type SockaddrUnix struct { 627 type SockaddrUnix struct {
628 Name string 628 Name string
629 } 629 }
630 630
631 func (sa *SockaddrUnix) sockaddr() (uintptr, int32, error) { 631 func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {
632 // TODO(brainman): implement SockaddrUnix.sockaddr() 632 // TODO(brainman): implement SockaddrUnix.sockaddr()
633 » return 0, 0, EWINDOWS 633 » return nil, 0, EWINDOWS
634 } 634 }
635 635
636 func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { 636 func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
637 switch rsa.Addr.Family { 637 switch rsa.Addr.Family {
638 case AF_UNIX: 638 case AF_UNIX:
639 return nil, EWINDOWS 639 return nil, EWINDOWS
640 640
641 case AF_INET: 641 case AF_INET:
642 pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) 642 pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
643 sa := new(SockaddrInet4) 643 sa := new(SockaddrInet4)
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 SIO_GET_EXTENSION_FUNCTION_POINTER, 747 SIO_GET_EXTENSION_FUNCTION_POINTER,
748 (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)), 748 (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)),
749 uint32(unsafe.Sizeof(WSAID_CONNECTEX)), 749 uint32(unsafe.Sizeof(WSAID_CONNECTEX)),
750 (*byte)(unsafe.Pointer(&connectExFunc.addr)), 750 (*byte)(unsafe.Pointer(&connectExFunc.addr)),
751 uint32(unsafe.Sizeof(connectExFunc.addr)), 751 uint32(unsafe.Sizeof(connectExFunc.addr)),
752 &n, nil, 0) 752 &n, nil, 0)
753 }) 753 })
754 return connectExFunc.err 754 return connectExFunc.err
755 } 755 }
756 756
757 func connectEx(s Handle, name uintptr, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) { 757 func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, send DataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) {
758 r1, _, e1 := Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintpt r(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0) 758 r1, _, e1 := Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintpt r(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0)
759 if r1 == 0 { 759 if r1 == 0 {
760 if e1 != 0 { 760 if e1 != 0 {
761 err = error(e1) 761 err = error(e1)
762 } else { 762 } else {
763 err = EINVAL 763 err = EINVAL
764 } 764 }
765 } 765 }
766 return 766 return
767 } 767 }
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 927
928 func (s Signal) String() string { 928 func (s Signal) String() string {
929 if 0 <= s && int(s) < len(signals) { 929 if 0 <= s && int(s) < len(signals) {
930 str := signals[s] 930 str := signals[s]
931 if str != "" { 931 if str != "" {
932 return str 932 return str
933 } 933 }
934 } 934 }
935 return "signal " + itoa(int(s)) 935 return "signal " + itoa(int(s))
936 } 936 }
OLDNEW
« no previous file with comments | « no previous file | src/pkg/syscall/zsyscall_windows_386.go » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b