From owner-svn-src-head@FreeBSD.ORG Wed Sep 8 20:09:51 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1F07D10656E3; Wed, 8 Sep 2010 20:09:51 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0ED968FC12; Wed, 8 Sep 2010 20:09:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o88K9o8M069831; Wed, 8 Sep 2010 20:09:50 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o88K9obu069829; Wed, 8 Sep 2010 20:09:50 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201009082009.o88K9obu069829@svn.freebsd.org> From: Alexander Motin Date: Wed, 8 Sep 2010 20:09:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212336 - head/sys/sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Sep 2010 20:09:51 -0000 Author: mav Date: Wed Sep 8 20:09:50 2010 New Revision: 212336 URL: http://svn.freebsd.org/changeset/base/212336 Log: Add few more bintime math macros. Modified: head/sys/sys/time.h Modified: head/sys/sys/time.h ============================================================================== --- head/sys/sys/time.h Wed Sep 8 20:00:27 2010 (r212335) +++ head/sys/sys/time.h Wed Sep 8 20:09:50 2010 (r212336) @@ -90,6 +90,25 @@ bintime_sub(struct bintime *bt, const st bt->sec -= bt2->sec; } +static __inline void +bintime_mul(struct bintime *bt, u_int x) +{ + uint64_t p1, p2; + + p1 = (bt->frac & 0xffffffffllu) * x; + p2 = (bt->frac >> 32) * x + (p1 >> 32); + bt->sec *= x; + bt->sec += (p2 >> 32); + bt->frac = (p2 << 32) | (p1 & 0xffffffffllu); +} + +#define bintime_clear(a) ((a)->sec = (a)->frac = 0) +#define bintime_isset(a) ((a)->sec || (a)->frac) +#define bintime_cmp(a, b, cmp) \ + (((a)->sec == (b)->sec) ? \ + ((a)->frac cmp (b)->frac) : \ + ((a)->sec cmp (b)->sec)) + /*- * Background information: *