mirror of
https://github.com/golang/go
synced 2024-11-26 16:46:58 -07:00
runtime: factor our oneNewExtraM trace code
In the interest of further cleaning up the trace.go API, move the trace logic in oneNewExtraM into its own function. Change-Id: I5cf478cb8cd0d301ee3b068347ed48ce768b8882 Reviewed-on: https://go-review.googlesource.com/c/go/+/494186 Reviewed-by: Michael Pratt <mpratt@google.com> Run-TryBot: Michael Knyszek <mknyszek@google.com> Auto-Submit: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
54031132c8
commit
c890d40d0d
@ -2004,12 +2004,7 @@ func oneNewExtraM() {
|
||||
gp.racectx = racegostart(abi.FuncPCABIInternal(newextram) + sys.PCQuantum)
|
||||
}
|
||||
if traceEnabled() {
|
||||
// Trigger two trace events for the locked g in the extra m,
|
||||
// since the next event of the g will be traceEvGoSysExit in exitsyscall,
|
||||
// while calling from C thread to Go.
|
||||
traceGoCreate(gp, 0) // no start pc
|
||||
gp.traceseq++
|
||||
traceEvent(traceEvGoInSyscall, -1, gp.goid)
|
||||
traceOneNewExtraM(gp)
|
||||
}
|
||||
// put on allg for garbage collector
|
||||
allgadd(gp)
|
||||
|
@ -1713,3 +1713,16 @@ func startPCforTrace(pc uintptr) uintptr {
|
||||
}
|
||||
return f.datap.textAddr(*(*uint32)(w))
|
||||
}
|
||||
|
||||
// traceOneNewExtraM registers the fact that a new extra M was created with
|
||||
// the tracer. This matters if the M (which has an attached G) is used while
|
||||
// the trace is still active because if it is, we need the fact that it exists
|
||||
// to show up in the final trace.
|
||||
func traceOneNewExtraM(gp *g) {
|
||||
// Trigger two trace events for the locked g in the extra m,
|
||||
// since the next event of the g will be traceEvGoSysExit in exitsyscall,
|
||||
// while calling from C thread to Go.
|
||||
traceGoCreate(gp, 0) // no start pc
|
||||
gp.traceseq++
|
||||
traceEvent(traceEvGoInSyscall, -1, gp.goid)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user