[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 05/13] tools/xenstore: make some write limit functions static


  • To: Juergen Gross <jgross@xxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Wed, 3 May 2023 15:51:24 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fK1HdlSFgUeNp73i8nRGTp0o0QDbjonIrKf9mR7N5pA=; b=BgePcSAcH393hYeIhFJ7I4kykyve6QhPn4Yn79hKkAv8ABHcsFPFrNn6VK0JacSj79j3220w5hIjOHBNxl+b3UnP3ftyl6akwBmBIVSMO0zQbNnthk97PAI03cCGmdK3QrVnF1e/TGWBZoLZdF77AKbUX6NzDQjG37ITfeMqQSHmhCZF246Y8VqiPpyYndAh/4J1eOq8R7TgohQ5ag+Gj98qVw5ljVHv2py/XVDBhUC9d+KnordIqqjOpWC1raj7ZWXtLw28IJE1lvTawewzF0SGW2hErVZcPvDfPDaEtvjw8gmvg0DOb4p292iUQtOMq+zg67Fy7/XbOhGQeevEaA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CuWJIykQPjZ8IcNIvublUGnV4QS3JBJGPly/w8U+il/505S9OqR7UAniAbazny02AFVJlpiENX8/XOSNPulNVzaf7oSQEI+qjZ79QLnv3yi5hgzGDPPb3T9xoMAi5WpYclpS3paG/fud7nt55mF/X9+Y2Ei4ByDdxxPY2n3yutcZ8ljW3StYuJ1c7Ba8zn3M0d1vMHZUzvG/du5uQ/nUDYTFhNll5Htekio7lMk+6BLDmL+0rvI1X3L3FcwvmlI/rkDhyQ0TNzA0EACw8RnooaJloy5W/ybKeE99paDC5LEIDKBQqeuUeo2GQ3yKjo4nqtFIFA0hOOKrtrLgMK7kGw==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Wei Liu <wl@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>
  • Delivery-date: Wed, 03 May 2023 14:51:56 +0000
  • Ironport-data: A9a23:Wl1eBaAKzHakcBVW/xriw5YqxClBgxIJ4kV8jS/XYbTApD500mYDx mAfW2yDbviPZGDzf40nO4jg8U9XscfdyYNrQQY4rX1jcSlH+JHPbTi7wuUcHAvJd5GeExg3h yk6QoOdRCzhZiaE/n9BCpC48T8nk/nOHuGmYAL9EngZbRd+Tys8gg5Ulec8g4p56fC0GArIs t7pyyHlEAbNNwVcbyRFuspvlDs15K6p4G5A5QRkDRx2lAS2e0c9Xcp3yZ6ZdxMUcqEMdsamS uDKyq2O/2+x13/B3fv8z94X2mVTKlLjFVDmZkh+AsBOsTAbzsAG6Y4pNeJ0VKtio27hc+ada jl6ncfYpQ8BZsUgkQmGOvVSO3kW0aZuoNcrLZUj2CA6IoKvn3bEmp1T4E8K0YIw98cpPTtX2 sIjBTkkYSLElbKcn6qnVbw57igjBJGD0II3nFhFlGicIdN4BJfJTuPN+MNS2yo2ioZWB/HCa sEFaD1pKhPdfxlIPVRRA5U79AuqriCnL3sE9xTI+uxuvDa7IA9ZidABNPL8fNCQSNoTtUGfv m/cpEzyAw0ANczZwj2Amp6prraXwnumBd1PSdVU8NZggUShxT0PSyEtTH2WnNW5iEK/W/12f hl8Fi0G6PJaGFaQZtvyRRqju1afowURHdFXFoUS+AyLj6bZ/QudLmwFVSJaLswrstcsQj4n3 UPPmMnmbRRwtJWFRHTb8a2bxRuwJCwUIGkqdSICCwwf7LHeTJobixvOSpNvFfCzh9isQDXom WnV8m45mqkZitMN2+Oj51fbjjmwp5/PCAko+gHQWWHj5QR8DGK4W7GVBZHgxa4oBO6kopOp5 RDoR+D2ADgyMKyw
  • Ironport-hdrordr: A9a23:yQ67tq13+mLSTsw58XkSnQqjBEQkLtp133Aq2lEZdPU0SKGlfg 6V/MjztCWE7gr5PUtLpTnuAsa9qB/nm6KdpLNhX4tKPzOW31dATrsSjrcKqgeIc0HDH6xmpM JdmsBFY+EYZmIK6foSjjPYLz4hquP3j5xBh43lvglQpdcBUdAQ0+97YDzrYnGfXGN9dOME/A L33Ls7m9KnE05nFviTNz0+cMXogcbEr57iaQ5uPW9a1OHf5QnYk4ITCnKjr20jbw8=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 30/03/2023 9:50 am, Juergen Gross wrote:
> +static void wrl_xfer_credit(wrl_creditt *debit,  wrl_creditt debit_floor,
> +                         wrl_creditt *credit, wrl_creditt credit_ceil)
> +     /*
> +      * Transfers zero or more credit from "debit" to "credit".
> +      * Transfers as much as possible while maintaining
> +      * debit >= debit_floor and credit <= credit_ceil.
> +      * (If that's violated already, does nothing.)
> +      *
> +      * Sufficient conditions to avoid overflow, either of:
> +      *  |every argument| <= 0x3fffffff
> +      *  |every argument| <= 1E9
> +      *  |every argument| <= WRL_CREDIT_MAX
> +      * (And this condition is preserved.)
> +      */
> +{
> +     wrl_creditt xfer = MIN( *debit      - debit_floor,
> +                             credit_ceil - *credit      );

MIN() evaluates its parameters multiple times.  I believe the only legal
way for the compiler to emit this code is to interleave double reads.

As with pretty much any C code, you want to read the pointers into
locals first, then operate on them, then write them out at the end.

~Andrew



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.