perfmon2 context: thread_struct vs. task_struct?

From: Stephane Eranian
Date: Wed Mar 22 2006 - 18:34:55 EST


The perfmon2 subsystem maintains a structure per-thread
that contains the save-area for the performance counters
and related software state. The save area is used on
context-switch. There can only be one context per thread.
The context is dynamically allocated as such it does not
consume memory in each thread. It is dyanmically attached
to the thread to monitor.

In the current implementation, the context (pfm_context)
pointer is implemented in the thread_struct on the basis
that this is somewhat related to machine state.

Historically, the perfmon subsystem only existed on IA-64
which made the thread_struct (an arch-specific structure)
the obvious place to put this.

Nowadays, perfmon2 supports most major architectures. It
may make sense to move the void *pfm_context pointer from
the thread_struct into the task_struct. This would save
some indirections, make it readily available to other
archiectures when it is ported.

I admit I am not quite clear as to what goes where between
thread_struct and task_struct.

Would it make sense to move the pointer to the perfmon2
context into the task_struct?


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at