]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: move pdesc into p
authorAustin Clements <austin@google.com>
Tue, 13 Jun 2017 15:14:43 +0000 (11:14 -0400)
committerAustin Clements <austin@google.com>
Wed, 14 Jun 2017 00:43:30 +0000 (00:43 +0000)
There are currently two arrays indexed by P ID: allp and pdesc.
Consolidate these by moving the pdesc fields into type p so they can
be indexed off allp along with all other per-P state.

For #15131.

Change-Id: Ib6c4e6e7612281a1171ba4a0d62e52fd59e960b4
Reviewed-on: https://go-review.googlesource.com/45572
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
src/runtime/proc.go
src/runtime/runtime2.go

index afedf19aedf189db28efd068d53de3d5401bb2c5..9e53716992082720cdc4f4e6c641fb7291815e68 100644 (file)
@@ -3837,7 +3837,7 @@ func sysmon() {
        }
 }
 
-var pdesc [_MaxGomaxprocs]struct {
+type sysmontick struct {
        schedtick   uint32
        schedwhen   int64
        syscalltick uint32
@@ -3855,7 +3855,7 @@ func retake(now int64) uint32 {
                if _p_ == nil {
                        continue
                }
-               pd := &pdesc[i]
+               pd := &_p_.sysmontick
                s := _p_.status
                if s == _Psyscall {
                        // Retake P from syscall if it's there for more than 1 sysmon tick (at least 20us).
index 2df1fefe7cd861f6fed14c185425a1039b75717e..6871d9c68cd67e7c9a65c926be1804a15cc196ff 100644 (file)
@@ -453,9 +453,10 @@ type p struct {
        id          int32
        status      uint32 // one of pidle/prunning/...
        link        puintptr
-       schedtick   uint32   // incremented on every scheduler call
-       syscalltick uint32   // incremented on every system call
-       m           muintptr // back-link to associated m (nil if idle)
+       schedtick   uint32     // incremented on every scheduler call
+       syscalltick uint32     // incremented on every system call
+       sysmontick  sysmontick // last tick observed by sysmon
+       m           muintptr   // back-link to associated m (nil if idle)
        mcache      *mcache
        racectx     uintptr