{"id":259,"url":"https://patchwork.libcamera.org/api/patches/259/?format=json","web_url":"https://patchwork.libcamera.org/patch/259/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20190117202043.21420-4-kieran.bingham@ideasonboard.com>","date":"2019-01-17T20:20:41","name":"[libcamera-devel,3/5] libcamera: timer: Fix 32 bit wrap","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"15c1e783670e091c6ee34311dfce27114e8df282","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/259/mbox/","series":[{"id":87,"url":"https://patchwork.libcamera.org/api/series/87/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=87","date":"2019-01-17T20:20:38","name":"General fixes","version":1,"mbox":"https://patchwork.libcamera.org/series/87/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/259/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/259/checks/","tags":{},"headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 883B060C99\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 17 Jan 2019 21:20:49 +0100 (CET)","from localhost.localdomain\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1585C53E;\n\tThu, 17 Jan 2019 21:20:49 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1547756449;\n\tbh=6eiqsPmV12U1svjkzaXOSeM2wvyiYx1BHjNTRtf1rwg=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=lw1shtIAaJrMRneOwA9P9DjCjnRPBPXmHyAb3OZ1i4u9hkJwhcI/jPkIooZwftxFd\n\t9st0kZJS+VTBgWofi6QW4oHOQifo8AkKVsDbn8kC2W+rjGFLPzoQaFpXhB6p1DmmnZ\n\t1F6BDpY5a6lNgGDYSXy3ywdw4uuybKnOyxl3gh2c=","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"LibCamera Devel <libcamera-devel@lists.libcamera.org>","Date":"Thu, 17 Jan 2019 20:20:41 +0000","Message-Id":"<20190117202043.21420-4-kieran.bingham@ideasonboard.com>","X-Mailer":"git-send-email 2.17.1","In-Reply-To":"<20190117202043.21420-1-kieran.bingham@ideasonboard.com>","References":"<20190117202043.21420-1-kieran.bingham@ideasonboard.com>","Subject":"[libcamera-devel] [PATCH 3/5] libcamera: timer: Fix 32 bit wrap","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Thu, 17 Jan 2019 20:20:49 -0000"},"content":"The msec parameter was multiplied as a 32 bit value when converting to\nnanosecond resolution. This wraps at 4.2949 seconds, and causes timers\nlonger than this to fail.\n\nFix the multiplication to upcast to 64 bit using an unsigned long long\nspecifier on the multiplier.\n\nWhile we're here, initialise the two integer class members in the\nconstructor initialiser list.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n src/libcamera/timer.cpp | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)","diff":"diff --git a/src/libcamera/timer.cpp b/src/libcamera/timer.cpp\nindex b5212ba26869..306825fde3c0 100644\n--- a/src/libcamera/timer.cpp\n+++ b/src/libcamera/timer.cpp\n@@ -36,6 +36,7 @@ namespace libcamera {\n  * \\brief Construct a timer\n  */\n Timer::Timer()\n+\t: interval_(0), deadline_(0)\n {\n }\n \n@@ -51,7 +52,7 @@ void Timer::start(unsigned int msec)\n \tclock_gettime(CLOCK_MONOTONIC, &tp);\n \n \tinterval_ = msec;\n-\tdeadline_ = tp.tv_sec * 1000000000ULL + tp.tv_nsec + msec * 1000000;\n+\tdeadline_ = tp.tv_sec * 1000000000ULL + tp.tv_nsec + msec * 1000000ULL;\n \n \tLOG(Debug) << \"Starting timer \" << this << \" with interval \" << msec\n \t\t   << \": deadline \" << deadline_;\n","prefixes":["libcamera-devel","3/5"]}