Lines Matching full:generation
16 // - traceAdvance cannot return until the previous generation's buffers are all flushed.
54 readerGen atomic.Uintptr // the generation the reader is currently reading for
55 flushedGen atomic.Uintptr // the last completed generation
59 // it notifies traceAdvance that the reader is done with a generation.
118 // Trace generation counter.
169 // Compute the first generation for this StartTrace.
171 // Note: we start from the last non-zero generation rather than 1 so we
321 // traceAdvance moves tracing to the next generation, and cleans up the current generation,
323 // altogether instead of advancing to the next generation.
334 // about the generation we're advancing _into_ since we'll do all the cleanup in this
335 // generation for the next advancement.
343 // Write an EvFrequency event for this generation.
362 // generation. We need to do this even for dead Gs because
387 // that's running for the first time in this generation. Therefore,
423 // Advance the generation or stop the trace.
444 // Emit a ProcsChange event so we have one on record for each generation.
446 // being there fairly soon in a generation.
456 // Emit a GCActive event in the new generation if necessary.
467 // We're just cleaning up the last generation after this point.
475 // Snapshotting after the generation counter update is sufficient.
478 // the new generation number (sched.lock acts as a barrier).
488 // will be flushed in time for the new generation) or it will have flushed its
503 // Because trace writers read the generation while the seqlock is
505 // also no stale generation values left. Therefore, it's safe to flush
506 // any buffers that remain in that generation's slot.
559 // At this point, the old generation is fully flushed minus stack and string
561 // generation.
571 // events to the last generation, that must mean the G never had its status
582 // Flush CPU samples, stacks, and strings for the last generation. This is safe,
583 // because we're now certain no M is writing to the last generation.
592 // That's it. This generation is done producing buffers.
632 // We do this at the beginning of the new generation instead of the
648 // Block until the trace reader has finished processing the last generation.
659 throw("trace: non-empty full trace buffer for done generation")
663 throw("trace: non-empty full trace buffer for next generation")
722 // ^uint32(0) and ^uint64(0) are both odd and multiples of 3. Therefore the next generation
731 // generation. Note: the provided generation must not have started yet.
835 // Check to see if we need to block for more data in this generation
836 // or if we need to move our generation forward.
840 // Most of the time readerGen is one generation ahead of flushedGen, as the
841 // current generation is being read from. Then, once the last buffer is flushed
843 // is waiting on the reader to finish flushing the last generation so that it
849 // Wake up anyone waiting for us to be done with this generation.
861 // We're shutting down, and the last generation is fully
866 // there's nothing else for us to read. Advance the generation
871 // Wake up anyone waiting for us to be done with this generation.
925 // - The reader is lagging behind in finishing off the last generation.
929 // - The reader has pending work to process for it's reader generation
953 // Start a goroutine to periodically advance the trace generation.