|
@@ -4108,8 +4108,7 @@ void __perf_sw_event(u32 event_id, u64 nr, int nmi,
|
|
|
if (rctx < 0)
|
|
|
return;
|
|
|
|
|
|
- data.addr = addr;
|
|
|
- data.raw = NULL;
|
|
|
+ perf_sample_data_init(&data, addr);
|
|
|
|
|
|
do_perf_sw_event(PERF_TYPE_SOFTWARE, event_id, nr, nmi, &data, regs);
|
|
|
|
|
@@ -4154,11 +4153,10 @@ static enum hrtimer_restart perf_swevent_hrtimer(struct hrtimer *hrtimer)
|
|
|
struct perf_event *event;
|
|
|
u64 period;
|
|
|
|
|
|
- event = container_of(hrtimer, struct perf_event, hw.hrtimer);
|
|
|
+ event = container_of(hrtimer, struct perf_event, hw.hrtimer);
|
|
|
event->pmu->read(event);
|
|
|
|
|
|
- data.addr = 0;
|
|
|
- data.raw = NULL;
|
|
|
+ perf_sample_data_init(&data, 0);
|
|
|
data.period = event->hw.last_period;
|
|
|
regs = get_irq_regs();
|
|
|
/*
|
|
@@ -4322,17 +4320,15 @@ static const struct pmu perf_ops_task_clock = {
|
|
|
void perf_tp_event(int event_id, u64 addr, u64 count, void *record,
|
|
|
int entry_size)
|
|
|
{
|
|
|
+ struct pt_regs *regs = get_irq_regs();
|
|
|
+ struct perf_sample_data data;
|
|
|
struct perf_raw_record raw = {
|
|
|
.size = entry_size,
|
|
|
.data = record,
|
|
|
};
|
|
|
|
|
|
- struct perf_sample_data data = {
|
|
|
- .addr = addr,
|
|
|
- .raw = &raw,
|
|
|
- };
|
|
|
-
|
|
|
- struct pt_regs *regs = get_irq_regs();
|
|
|
+ perf_sample_data_init(&data, addr);
|
|
|
+ data.raw = &raw;
|
|
|
|
|
|
if (!regs)
|
|
|
regs = task_pt_regs(current);
|
|
@@ -4448,8 +4444,7 @@ void perf_bp_event(struct perf_event *bp, void *data)
|
|
|
struct perf_sample_data sample;
|
|
|
struct pt_regs *regs = data;
|
|
|
|
|
|
- sample.raw = NULL;
|
|
|
- sample.addr = bp->attr.bp_addr;
|
|
|
+ perf_sample_data_init(&sample, bp->attr.bp_addr);
|
|
|
|
|
|
if (!perf_exclude_event(bp, regs))
|
|
|
perf_swevent_add(bp, 1, 1, &sample, regs);
|