tracing: Merge irqflags + preempt counter.
[linux-2.6-microblaze.git] / kernel / trace / trace_syscalls.c
index d85a2f0..8bfcd3b 100644 (file)
@@ -298,9 +298,8 @@ static void ftrace_syscall_enter(void *data, struct pt_regs *regs, long id)
        struct syscall_metadata *sys_data;
        struct ring_buffer_event *event;
        struct trace_buffer *buffer;
-       unsigned long irq_flags;
+       unsigned int trace_ctx;
        unsigned long args[6];
-       int pc;
        int syscall_nr;
        int size;
 
@@ -322,12 +321,11 @@ static void ftrace_syscall_enter(void *data, struct pt_regs *regs, long id)
 
        size = sizeof(*entry) + sizeof(unsigned long) * sys_data->nb_args;
 
-       local_save_flags(irq_flags);
-       pc = preempt_count();
+       trace_ctx = tracing_gen_ctx();
 
        buffer = tr->array_buffer.buffer;
        event = trace_buffer_lock_reserve(buffer,
-                       sys_data->enter_event->event.type, size, irq_flags, pc);
+                       sys_data->enter_event->event.type, size, trace_ctx);
        if (!event)
                return;
 
@@ -337,7 +335,7 @@ static void ftrace_syscall_enter(void *data, struct pt_regs *regs, long id)
        memcpy(entry->args, args, sizeof(unsigned long) * sys_data->nb_args);
 
        event_trigger_unlock_commit(trace_file, buffer, event, entry,
-                                   irq_flags, pc);
+                                   trace_ctx);
 }
 
 static void ftrace_syscall_exit(void *data, struct pt_regs *regs, long ret)
@@ -348,8 +346,7 @@ static void ftrace_syscall_exit(void *data, struct pt_regs *regs, long ret)
        struct syscall_metadata *sys_data;
        struct ring_buffer_event *event;
        struct trace_buffer *buffer;
-       unsigned long irq_flags;
-       int pc;
+       unsigned int trace_ctx;
        int syscall_nr;
 
        syscall_nr = trace_get_syscall_nr(current, regs);
@@ -368,13 +365,12 @@ static void ftrace_syscall_exit(void *data, struct pt_regs *regs, long ret)
        if (!sys_data)
                return;
 
-       local_save_flags(irq_flags);
-       pc = preempt_count();
+       trace_ctx = tracing_gen_ctx();
 
        buffer = tr->array_buffer.buffer;
        event = trace_buffer_lock_reserve(buffer,
                        sys_data->exit_event->event.type, sizeof(*entry),
-                       irq_flags, pc);
+                       trace_ctx);
        if (!event)
                return;
 
@@ -383,7 +379,7 @@ static void ftrace_syscall_exit(void *data, struct pt_regs *regs, long ret)
        entry->ret = syscall_get_return_value(current, regs);
 
        event_trigger_unlock_commit(trace_file, buffer, event, entry,
-                                   irq_flags, pc);
+                                   trace_ctx);
 }
 
 static int reg_event_syscall_enter(struct trace_event_file *file,