mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-02 07:07:33 -04:00
windows: add race annotations to Windows ReadFile and WriteFile
Follow CL 392774 which changed Windows ReadFile and WriteFile in package syscall. For golang/go#51618 Change-Id: I0f8046adb0f8145bd0775a3b5399647897cf19ce Reviewed-on: https://go-review.googlesource.com/c/sys/+/392814 Trust: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
committed by
Tobias Klauser
parent
b874c991c1
commit
27bbf83dae
+24
-11
@@ -186,8 +186,8 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)
|
//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)
|
||||||
//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
|
//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
|
||||||
//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState
|
//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState
|
||||||
//sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
|
//sys readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = ReadFile
|
||||||
//sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
|
//sys writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = WriteFile
|
||||||
//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)
|
//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)
|
||||||
//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
|
//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
|
||||||
//sys CloseHandle(handle Handle) (err error)
|
//sys CloseHandle(handle Handle) (err error)
|
||||||
@@ -549,12 +549,6 @@ func Read(fd Handle, p []byte) (n int, err error) {
|
|||||||
}
|
}
|
||||||
return 0, e
|
return 0, e
|
||||||
}
|
}
|
||||||
if raceenabled {
|
|
||||||
if done > 0 {
|
|
||||||
raceWriteRange(unsafe.Pointer(&p[0]), int(done))
|
|
||||||
}
|
|
||||||
raceAcquire(unsafe.Pointer(&ioSync))
|
|
||||||
}
|
|
||||||
return int(done), nil
|
return int(done), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -567,12 +561,31 @@ func Write(fd Handle, p []byte) (n int, err error) {
|
|||||||
if e != nil {
|
if e != nil {
|
||||||
return 0, e
|
return 0, e
|
||||||
}
|
}
|
||||||
if raceenabled && done > 0 {
|
|
||||||
raceReadRange(unsafe.Pointer(&p[0]), int(done))
|
|
||||||
}
|
|
||||||
return int(done), nil
|
return int(done), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {
|
||||||
|
err := readFile(fd, p, done, overlapped)
|
||||||
|
if raceenabled {
|
||||||
|
if *done > 0 {
|
||||||
|
raceWriteRange(unsafe.Pointer(&p[0]), int(*done))
|
||||||
|
}
|
||||||
|
raceAcquire(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {
|
||||||
|
if raceenabled {
|
||||||
|
raceReleaseMerge(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
err := writeFile(fd, p, done, overlapped)
|
||||||
|
if raceenabled && *done > 0 {
|
||||||
|
raceReadRange(unsafe.Pointer(&p[0]), int(*done))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
var ioSync int64
|
var ioSync int64
|
||||||
|
|
||||||
func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {
|
func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {
|
||||||
|
|||||||
@@ -2761,7 +2761,7 @@ func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
func readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = &buf[0]
|
_p0 = &buf[0]
|
||||||
@@ -3203,7 +3203,7 @@ func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32,
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
func writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = &buf[0]
|
_p0 = &buf[0]
|
||||||
|
|||||||
Reference in New Issue
Block a user