Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee000b7f authored by Lai Jiangshan's avatar Lai Jiangshan Committed by Ingo Molnar
Browse files

tracing: use union for multi-usages field



Impact: cleanup

struct dyn_ftrace::ip has different usages in his lifecycle,
we use union for it. And also for struct dyn_ftrace::flags.

Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
Cc: Steven Rostedt <srostedt@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <49C871BE.3080405@cn.fujitsu.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent cc59c9e8
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -145,8 +145,14 @@ enum {
};

struct dyn_ftrace {
	union {
		unsigned long		ip; /* address of mcount call-site */
		struct dyn_ftrace	*freelist;
	};
	union {
		unsigned long		flags;
		struct dyn_ftrace	*newlist;
	};
	struct dyn_arch_ftrace		arch;
};

+4 −4
Original line number Diff line number Diff line
@@ -341,7 +341,7 @@ static inline int record_frozen(struct dyn_ftrace *rec)

static void ftrace_free_rec(struct dyn_ftrace *rec)
{
	rec->ip = (unsigned long)ftrace_free_records;
	rec->freelist = ftrace_free_records;
	ftrace_free_records = rec;
	rec->flags |= FTRACE_FL_FREE;
}
@@ -379,7 +379,7 @@ static struct dyn_ftrace *ftrace_alloc_dyn_node(unsigned long ip)
			return NULL;
		}

		ftrace_free_records = (void *)rec->ip;
		ftrace_free_records = rec->freelist;
		memset(rec, 0, sizeof(*rec));
		return rec;
	}
@@ -411,7 +411,7 @@ ftrace_record_ip(unsigned long ip)
		return NULL;

	rec->ip = ip;
	rec->flags = (unsigned long)ftrace_new_addrs;
	rec->newlist = ftrace_new_addrs;
	ftrace_new_addrs = rec;

	return rec;
@@ -731,7 +731,7 @@ static int ftrace_update_code(struct module *mod)
			return -1;

		p = ftrace_new_addrs;
		ftrace_new_addrs = (struct dyn_ftrace *)p->flags;
		ftrace_new_addrs = p->newlist;
		p->flags = 0L;

		/* convert record (i.e, patch mcount-call with NOP) */