On 2/19/25 9:08 PM, Masami Hiramatsu (Google) wrote:
On Wed, 19 Feb 2025 18:58:10 -0500
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
On Thu, 20 Feb 2025 08:09:08 +0900
Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> wrote:
So something like this?
unsigned int block_flags;
union {
struct mutex *mutex;
struct rwsem +rwsem;
struct rtmutex *rtmutex;
} blocked_on;
enum {
BLOCKED_ON_MUTEX;
BLOCKED_ON_RWSEM;
BLOCKED_ON_RTMUTEX;
BLOCKED_ON_IO;
} block_reason;
For the safety, we may anyway lock the task anyway, but that is the
same as stacktrace.
Why not make it into a single entity?
struct blocked_on {
unsigned int flags;
union {
struct mutex *mutex;
struct rwsem *rwsem;
struct rtmutex *rtmutex;
} blocked_on;
};
Yes, and we also merge current mutex_waiter too.
I don't think we should merge mutex_waiter as it contains additional
fields that are not useful to others. We don't want enlarge the size of
task_struct unnecessarily.
Cheers,
Longman