Commit 49b393af authored by Peter Zijlstra's avatar Peter Zijlstra
Browse files

perf: Add comment to enum perf_event_state

parent 3172fb98
Loading
Loading
Loading
Loading
+40 −2
Original line number Diff line number Diff line
@@ -635,8 +635,46 @@ struct perf_addr_filter_range {
	unsigned long			size;
};

/**
 * enum perf_event_state - the states of an event:
/*
 * The normal states are:
 *
 *            ACTIVE    --.
 *               ^        |
 *               |        |
 *       sched_{in,out}() |
 *               |        |
 *               v        |
 *      ,---> INACTIVE  --+ <-.
 *      |                 |   |
 *      |                {dis,en}able()
 *   sched_in()           |   |
 *      |       OFF    <--' --+
 *      |                     |
 *      `--->  ERROR    ------'
 *
 * That is:
 *
 * sched_in:       INACTIVE          -> {ACTIVE,ERROR}
 * sched_out:      ACTIVE            -> INACTIVE
 * disable:        {ACTIVE,INACTIVE} -> OFF
 * enable:         {OFF,ERROR}       -> INACTIVE
 *
 * Where {OFF,ERROR} are disabled states.
 *
 * Then we have the {EXIT,REVOKED,DEAD} states which are various shades of
 * defunct events:
 *
 *  - EXIT means task that the even was assigned to died, but child events
 *    still live, and further children can still be created. But the event
 *    itself will never be active again. It can only transition to
 *    {REVOKED,DEAD};
 *
 *  - REVOKED means the PMU the event was associated with is gone; all
 *    functionality is stopped but the event is still alive. Can only
 *    transition to DEAD;
 *
 *  - DEAD event really is DYING tearing down state and freeing bits.
 *
 */
enum perf_event_state {
	PERF_EVENT_STATE_DEAD		= -5,