mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: capture per-m trace state in a type
More tightening up of the tracer's interface. While we're here, clarify why waittraceskip isn't included by explaining what the wait* fields in the M are really for. Change-Id: I0e7b4cac79fb77a7a0b3ca6b6cc267668e3610bc Reviewed-on: https://go-review.googlesource.com/c/go/+/494190 Auto-Submit: Michael Knyszek <mknyszek@google.com> Run-TryBot: Michael Knyszek <mknyszek@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
c213c905a2
commit
2f35a655e7
2 changed files with 19 additions and 10 deletions
|
|
@ -577,13 +577,17 @@ type m struct {
|
|||
lockedExt uint32 // tracking for external LockOSThread
|
||||
lockedInt uint32 // tracking for internal lockOSThread
|
||||
nextwaitm muintptr // next m waiting for lock
|
||||
|
||||
// wait* are used to carry arguments from gopark into park_m, because
|
||||
// there's no stack to put them on. That is their sole purpose.
|
||||
waitunlockf func(*g, unsafe.Pointer) bool
|
||||
waitlock unsafe.Pointer
|
||||
waittraceev byte
|
||||
waittraceskip int
|
||||
startingtrace bool
|
||||
syscalltick uint32
|
||||
freelink *m // on sched.freem
|
||||
|
||||
syscalltick uint32
|
||||
freelink *m // on sched.freem
|
||||
trace mTraceState
|
||||
|
||||
// these are here because they are too large to be on the stack
|
||||
// of low-level NOSPLIT functions.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue