Skip to content

Commit 039c03c

Browse files
committed
unix: add race annotations to Pread and Pwrite
Follow CL 391954 which changed Pread/Pwrite in package syscall. For golang/go#51618 Change-Id: Icc587c61f083886bb66ca96717f686f56b398e34 Reviewed-on: https://go-review.googlesource.com/c/sys/+/392794 Trust: Tobias Klauser <[email protected]> Run-TryBot: Tobias Klauser <[email protected]> TryBot-Result: Gopher Robot <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]>
1 parent 27bbf83 commit 039c03c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+130
-106
lines changed

unix/syscall_aix.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -458,8 +458,8 @@ func Fsync(fd int) error {
458458
//sys Listen(s int, n int) (err error)
459459
//sys lstat(path string, stat *Stat_t) (err error)
460460
//sys Pause() (err error)
461-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = pread64
462-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64
461+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = pread64
462+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64
463463
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
464464
//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
465465
//sysnb Setregid(rgid int, egid int) (err error)

unix/syscall_darwin.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -546,8 +546,8 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) {
546546
//sys Open(path string, mode int, perm uint32) (fd int, err error)
547547
//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
548548
//sys Pathconf(path string, name int) (val int, err error)
549-
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
550-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
549+
//sys pread(fd int, p []byte, offset int64) (n int, err error)
550+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error)
551551
//sys read(fd int, p []byte) (n int, err error)
552552
//sys Readlink(path string, buf []byte) (n int, err error)
553553
//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error)

unix/syscall_dragonfly.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,12 @@ func Pipe2(p []int, flags int) (err error) {
125125
}
126126

127127
//sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error)
128-
func Pread(fd int, p []byte, offset int64) (n int, err error) {
128+
func pread(fd int, p []byte, offset int64) (n int, err error) {
129129
return extpread(fd, p, 0, offset)
130130
}
131131

132132
//sys extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error)
133-
func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
133+
func pwrite(fd int, p []byte, offset int64) (n int, err error) {
134134
return extpwrite(fd, p, 0, offset)
135135
}
136136

unix/syscall_freebsd.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -638,8 +638,8 @@ func PtraceSingleStep(pid int) (err error) {
638638
//sys Open(path string, mode int, perm uint32) (fd int, err error)
639639
//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error)
640640
//sys Pathconf(path string, name int) (val int, err error)
641-
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
642-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
641+
//sys pread(fd int, p []byte, offset int64) (n int, err error)
642+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error)
643643
//sys read(fd int, p []byte) (n int, err error)
644644
//sys Readlink(path string, buf []byte) (n int, err error)
645645
//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error)

unix/syscall_linux_386.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ func setTimeval(sec, usec int64) Timeval {
3535
//sys Iopl(level int) (err error)
3636
//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32
3737
//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
38-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
39-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
38+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
39+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
4040
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
4141
//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
4242
//sys setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32

unix/syscall_linux_amd64.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ func Lstat(path string, stat *Stat_t) (err error) {
2929
}
3030

3131
//sys Pause() (err error)
32-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
33-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
32+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
33+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
3434
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
3535
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
3636

unix/syscall_linux_arm.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ func Utime(path string, buf *Utimbuf) error {
9696

9797
//sys utimes(path string, times *[2]Timeval) (err error)
9898

99-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
100-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
99+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
100+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
101101
//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
102102
//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
103103

unix/syscall_linux_arm64.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import "unsafe"
2222
//sysnb getrlimit(resource int, rlim *Rlimit) (err error)
2323
//sysnb Getuid() (uid int)
2424
//sys Listen(s int, n int) (err error)
25-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
26-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
25+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
26+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
2727
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
2828
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
2929

unix/syscall_linux_mips64x.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ package unix
2121
//sys Lchown(path string, uid int, gid int) (err error)
2222
//sys Listen(s int, n int) (err error)
2323
//sys Pause() (err error)
24-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
25-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
24+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
25+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
2626
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
2727
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
2828

unix/syscall_linux_mipsx.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
2525
//sysnb Getuid() (uid int)
2626
//sys Lchown(path string, uid int, gid int) (err error)
2727
//sys Listen(s int, n int) (err error)
28-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
29-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
28+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
29+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
3030
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
3131
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
3232
//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64

unix/syscall_linux_ppc.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import (
2727
//sys Listen(s int, n int) (err error)
2828
//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
2929
//sys Pause() (err error)
30-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
31-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
30+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
31+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
3232
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
3333
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
3434
//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64

unix/syscall_linux_ppc64x.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ package unix
2626
//sys Listen(s int, n int) (err error)
2727
//sys Lstat(path string, stat *Stat_t) (err error)
2828
//sys Pause() (err error)
29-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
30-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
29+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
30+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
3131
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
3232
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
3333
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT

unix/syscall_linux_riscv64.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import "unsafe"
2222
//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
2323
//sysnb Getuid() (uid int)
2424
//sys Listen(s int, n int) (err error)
25-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
26-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
25+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
26+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
2727
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
2828

2929
func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {

unix/syscall_linux_s390x.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ import (
2626
//sys Lchown(path string, uid int, gid int) (err error)
2727
//sys Lstat(path string, stat *Stat_t) (err error)
2828
//sys Pause() (err error)
29-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
30-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
29+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
30+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
3131
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
3232
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
3333
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)

unix/syscall_linux_sparc64.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ package unix
2323
//sys Listen(s int, n int) (err error)
2424
//sys Lstat(path string, stat *Stat_t) (err error)
2525
//sys Pause() (err error)
26-
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
27-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
26+
//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
27+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
2828
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
2929
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
3030
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)

unix/syscall_netbsd.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,8 +313,8 @@ func Statvfs(path string, buf *Statvfs_t) (err error) {
313313
//sys Open(path string, mode int, perm uint32) (fd int, err error)
314314
//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
315315
//sys Pathconf(path string, name int) (val int, err error)
316-
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
317-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
316+
//sys pread(fd int, p []byte, offset int64) (n int, err error)
317+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error)
318318
//sys read(fd int, p []byte) (n int, err error)
319319
//sys Readlink(path string, buf []byte) (n int, err error)
320320
//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error)

unix/syscall_openbsd.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,8 +274,8 @@ func Uname(uname *Utsname) error {
274274
//sys Open(path string, mode int, perm uint32) (fd int, err error)
275275
//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
276276
//sys Pathconf(path string, name int) (val int, err error)
277-
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
278-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
277+
//sys pread(fd int, p []byte, offset int64) (n int, err error)
278+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error)
279279
//sys read(fd int, p []byte) (n int, err error)
280280
//sys Readlink(path string, buf []byte) (n int, err error)
281281
//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error)

unix/syscall_solaris.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -661,8 +661,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
661661
//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
662662
//sys Pathconf(path string, name int) (val int, err error)
663663
//sys Pause() (err error)
664-
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
665-
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
664+
//sys pread(fd int, p []byte, offset int64) (n int, err error)
665+
//sys pwrite(fd int, p []byte, offset int64) (n int, err error)
666666
//sys read(fd int, p []byte) (n int, err error)
667667
//sys Readlink(path string, buf []byte) (n int, err error)
668668
//sys Rename(from string, to string) (err error)

unix/syscall_unix.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,30 @@ func Write(fd int, p []byte) (n int, err error) {
177177
return
178178
}
179179

180+
func Pread(fd int, p []byte, offset int64) (n int, err error) {
181+
n, err = pread(fd, p, offset)
182+
if raceenabled {
183+
if n > 0 {
184+
raceWriteRange(unsafe.Pointer(&p[0]), n)
185+
}
186+
if err == nil {
187+
raceAcquire(unsafe.Pointer(&ioSync))
188+
}
189+
}
190+
return
191+
}
192+
193+
func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
194+
if raceenabled {
195+
raceReleaseMerge(unsafe.Pointer(&ioSync))
196+
}
197+
n, err = pwrite(fd, p, offset)
198+
if raceenabled && n > 0 {
199+
raceReadRange(unsafe.Pointer(&p[0]), n)
200+
}
201+
return
202+
}
203+
180204
// For testing: clients can set this flag to force
181205
// creation of IPv6 sockets to return EAFNOSUPPORT.
182206
var SocketDisableIPv6 bool

unix/zsyscall_aix_ppc.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_aix_ppc64.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_darwin_amd64.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_darwin_arm64.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_freebsd_386.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_freebsd_amd64.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_freebsd_arm.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_freebsd_arm64.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_linux_386.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)