[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
|