aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorErik Gilling <konkers@android.com>2012-10-16 16:14:48 -0700
committerArve Hjønnevåg <arve@android.com>2013-04-29 14:43:12 -0700
commitcf58d45e431970a9705aba8fddebd03b407f1034 (patch)
tree91e428df37fe0260bf3c45817372cdd314bdc46c /drivers
parentceb28bf0610bdd44f12f9c2508900f2a49ce47d5 (diff)
sync: add tracepoint support
Change-Id: I181326db4247009161557e45444c9b3548b83d25 Signed-off-by: Erik Gilling <konkers@android.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/base/sync.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/base/sync.c b/drivers/base/sync.c
index 9b4ed002f82..809d02b21e0 100644
--- a/drivers/base/sync.c
+++ b/drivers/base/sync.c
@@ -28,6 +28,9 @@
#include <linux/anon_inodes.h>
+#define CREATE_TRACE_POINTS
+#include <trace/events/sync.h>
+
static void sync_fence_signal_pt(struct sync_pt *pt);
static int _sync_pt_has_signaled(struct sync_pt *pt);
static void sync_fence_free(struct kref *kref);
@@ -134,6 +137,8 @@ void sync_timeline_signal(struct sync_timeline *obj)
LIST_HEAD(signaled_pts);
struct list_head *pos, *n;
+ trace_sync_timeline(obj);
+
spin_lock_irqsave(&obj->active_list_lock, flags);
list_for_each_safe(pos, n, &obj->active_list_head) {
@@ -580,6 +585,11 @@ static bool sync_fence_check(struct sync_fence *fence)
int sync_fence_wait(struct sync_fence *fence, long timeout)
{
int err = 0;
+ struct sync_pt *pt;
+
+ trace_sync_wait(fence, 1);
+ list_for_each_entry(pt, &fence->pt_list_head, pt_list)
+ trace_sync_pt(pt);
if (timeout > 0) {
timeout = msecs_to_jiffies(timeout);
@@ -590,6 +600,7 @@ int sync_fence_wait(struct sync_fence *fence, long timeout)
err = wait_event_interruptible(fence->wq,
sync_fence_check(fence));
}
+ trace_sync_wait(fence, 0);
if (err < 0)
return err;