From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from 108-197-250-228.lightspeed.miamfl.sbcglobal.net ([108.197.250.228]:38352 "EHLO usa.attlocal.net" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754500AbcGVRyq (ORCPT ); Fri, 22 Jul 2016 13:54:46 -0400 From: Abylay Ospan To: Mauro Carvalho Chehab , linux-media@vger.kernel.org Cc: Abylay Ospan Subject: [PATCH] [dvbv5-scan] wait no more than timeout when scanning Date: Fri, 22 Jul 2016 13:54:37 -0400 Message-Id: <1469210077-12313-1-git-send-email-aospan@netup.ru> Sender: linux-media-owner@vger.kernel.org List-ID: some frontends (mentioned on lgdt3306a) wait timeout inside code like: for (i = 20; i > 0; i--) { msleep(50); If there is no-LOCK then dvbv5-scan spent a lot of time (doing 40x calls). This patch introduce timeout which 4 sec * multiply. So we do not wait more than 4 sec (or so) if no-LOCK. Signed-off-by: Abylay Ospan --- utils/dvb/dvbv5-scan.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/utils/dvb/dvbv5-scan.c b/utils/dvb/dvbv5-scan.c index 689bc0b..1fc33d7 100644 --- a/utils/dvb/dvbv5-scan.c +++ b/utils/dvb/dvbv5-scan.c @@ -182,12 +182,23 @@ static int print_frontend_stats(struct arguments *args, return 0; } +/* return timestamp in msec */ +uint64_t get_timestamp() +{ + struct timeval now; + gettimeofday(&now, 0); + return now.tv_sec * 1000 + now.tv_usec/1000; +} + static int check_frontend(void *__args, struct dvb_v5_fe_parms *parms) { struct arguments *args = __args; int rc, i; fe_status_t status; + uint64_t start = get_timestamp(); + /* msec timeout by default 4 sec * multiply */ + uint64_t timeout = args->timeout_multiply * 4 * 1000; args->n_status_lines = 0; for (i = 0; i < args->timeout_multiply * 40; i++) { @@ -203,6 +214,10 @@ static int check_frontend(void *__args, print_frontend_stats(args, parms); if (status & FE_HAS_LOCK) break; + + if ((get_timestamp() - start) > timeout) + break; + usleep(100000); }; -- 2.7.4