From 4e78733094e7d1d8e2b3ea1d11a56334b74ae8de Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 28 Apr 2014 12:31:39 +0100 Subject: [PATCH] [downloader] Profile receive datapath Signed-off-by: Michael Brown --- src/core/downloader.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/core/downloader.c b/src/core/downloader.c index cec6625b..ec69db6b 100644 --- a/src/core/downloader.c +++ b/src/core/downloader.c @@ -29,6 +29,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include #include #include +#include #include /** @file @@ -37,6 +38,14 @@ FILE_LICENCE ( GPL2_OR_LATER ); * */ +/** Receive profiler */ +static struct profiler downloader_rx_profiler __profiler = + { .name = "downloader.rx" }; + +/** Data copy profiler */ +static struct profiler downloader_copy_profiler __profiler = + { .name = "downloader.copy" }; + /** A downloader */ struct downloader { /** Reference count for this object */ @@ -166,6 +175,9 @@ static int downloader_xfer_deliver ( struct downloader *downloader, size_t max; int rc; + /* Start profiling */ + profile_start ( &downloader_rx_profiler ); + /* Calculate new buffer position */ if ( meta->flags & XFER_FL_ABS_OFFSET ) downloader->pos = 0; @@ -178,8 +190,10 @@ static int downloader_xfer_deliver ( struct downloader *downloader, goto done; /* Copy data to buffer */ + profile_start ( &downloader_copy_profiler ); copy_to_user ( downloader->image->data, downloader->pos, iobuf->data, len ); + profile_stop ( &downloader_copy_profiler ); /* Update current buffer position */ downloader->pos += len; @@ -188,6 +202,7 @@ static int downloader_xfer_deliver ( struct downloader *downloader, free_iob ( iobuf ); if ( rc != 0 ) downloader_finished ( downloader, rc ); + profile_stop ( &downloader_rx_profiler ); return rc; }