From: Julien Grall <julien@xen.org>
To: Jan Beulich <jbeulich@suse.com>,
"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
George Dunlap <George.Dunlap@eu.citrix.com>,
Ian Jackson <iwj@xenproject.org>, Wei Liu <wl@xen.org>,
Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v2 7/8] lib: move bsearch code
Date: Wed, 18 Nov 2020 18:09:34 +0000 [thread overview]
Message-ID: <44ffc041-cacd-468e-a835-f5b2048bb201@xen.org> (raw)
In-Reply-To: <87a20884-5a76-a664-dcc9-bd4becee40b3@suse.com>
Hi Jan,
On 23/10/2020 11:19, Jan Beulich wrote:
> Convert this code to an inline function (backed by an instance in an
> archive in case the compiler decides against inlining), which results
> in not having it in x86 final binaries. This saves a little bit of dead
> code.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> v2: Make the function an extern inline in its header.
> ---
> xen/common/Makefile | 1 -
> xen/common/bsearch.c | 51 --------------------------------------
> xen/include/xen/compiler.h | 1 +
> xen/include/xen/lib.h | 42 ++++++++++++++++++++++++++++++-
> xen/lib/Makefile | 1 +
> xen/lib/bsearch.c | 13 ++++++++++
> 6 files changed, 56 insertions(+), 53 deletions(-)
> delete mode 100644 xen/common/bsearch.c
> create mode 100644 xen/lib/bsearch.c
>
> diff --git a/xen/common/Makefile b/xen/common/Makefile
> index 7bb779f780a1..d8519a2cc163 100644
> --- a/xen/common/Makefile
> +++ b/xen/common/Makefile
> @@ -1,6 +1,5 @@
> obj-$(CONFIG_ARGO) += argo.o
> obj-y += bitmap.o
> -obj-y += bsearch.o
> obj-$(CONFIG_HYPFS_CONFIG) += config_data.o
> obj-$(CONFIG_CORE_PARKING) += core_parking.o
> obj-y += cpu.o
> diff --git a/xen/common/bsearch.c b/xen/common/bsearch.c
> deleted file mode 100644
> index 7090930aab5c..000000000000
> --- a/xen/common/bsearch.c
> +++ /dev/null
> @@ -1,51 +0,0 @@
> -/*
> - * A generic implementation of binary search for the Linux kernel
> - *
> - * Copyright (C) 2008-2009 Ksplice, Inc.
> - * Author: Tim Abbott <tabbott@ksplice.com>
> - *
> - * This program is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU General Public License as
> - * published by the Free Software Foundation; version 2.
> - */
> -
> -#include <xen/lib.h>
> -
> -/*
> - * bsearch - binary search an array of elements
> - * @key: pointer to item being searched for
> - * @base: pointer to first element to search
> - * @num: number of elements
> - * @size: size of each element
> - * @cmp: pointer to comparison function
> - *
> - * This function does a binary search on the given array. The
> - * contents of the array should already be in ascending sorted order
> - * under the provided comparison function.
> - *
> - * Note that the key need not have the same type as the elements in
> - * the array, e.g. key could be a string and the comparison function
> - * could compare the string with the struct's name field. However, if
> - * the key and elements in the array are of the same type, you can use
> - * the same comparison function for both sort() and bsearch().
> - */
> -void *bsearch(const void *key, const void *base, size_t num, size_t size,
> - int (*cmp)(const void *key, const void *elt))
> -{
> - size_t start = 0, end = num;
> - int result;
> -
> - while (start < end) {
> - size_t mid = start + (end - start) / 2;
> -
> - result = cmp(key, base + mid * size);
> - if (result < 0)
> - end = mid;
> - else if (result > 0)
> - start = mid + 1;
> - else
> - return (void *)base + mid * size;
> - }
> -
> - return NULL;
> -}
> diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h
> index c0e0ee9f27be..2b7acdf3b188 100644
> --- a/xen/include/xen/compiler.h
> +++ b/xen/include/xen/compiler.h
> @@ -12,6 +12,7 @@
>
> #define inline __inline__
> #define always_inline __inline__ __attribute__ ((__always_inline__))
> +#define gnu_inline __inline__ __attribute__ ((__gnu_inline__))
bsearch() is only used by Arm and I haven't seen anyone so far
complaining about the perf of I/O emulation.
Therefore, I am not convinced that there is enough justification to
introduce a GNU attribute just for this patch.
Cheers,
--
Julien Grall
next prev parent reply other threads:[~2020-11-18 18:10 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-23 10:15 [PATCH v2 0/8] xen: beginnings of moving library-like code into an archive Jan Beulich
2020-10-23 10:16 ` [PATCH v2 1/8] lib: split _ctype[] into its own object, under lib/ Jan Beulich
2020-11-18 17:00 ` Julien Grall
2020-10-23 10:17 ` [PATCH v2 2/8] lib: collect library files in an archive Jan Beulich
2020-11-18 17:06 ` Julien Grall
2020-11-19 10:15 ` Jan Beulich
2020-11-18 17:31 ` Julien Grall
2020-11-19 10:44 ` Jan Beulich
2020-10-23 10:17 ` [PATCH v2 3/8] lib: move list sorting code Jan Beulich
2020-11-18 17:38 ` Julien Grall
2020-11-19 10:10 ` Jan Beulich
2020-10-23 10:17 ` [PATCH v2 4/8] lib: move parse_size_and_unit() Jan Beulich
2020-11-18 17:39 ` Julien Grall
2020-11-18 17:57 ` Julien Grall
2020-11-24 0:58 ` Andrew Cooper
2020-11-24 9:30 ` Jan Beulich
2020-10-23 10:18 ` [PATCH v2 5/8] lib: move init_constructors() Jan Beulich
2020-11-18 17:42 ` Julien Grall
2020-10-23 10:18 ` [PATCH v2 6/8] lib: move rbtree code Jan Beulich
2020-11-18 17:46 ` Julien Grall
2020-11-19 10:23 ` Jan Beulich
2020-10-23 10:19 ` [PATCH v2 7/8] lib: move bsearch code Jan Beulich
2020-11-18 18:09 ` Julien Grall [this message]
2020-11-19 10:27 ` Jan Beulich
2020-11-23 22:49 ` Julien Grall
2020-11-24 0:40 ` Andrew Cooper
2020-11-24 9:39 ` Jan Beulich
2020-11-24 16:57 ` Julien Grall
2020-12-07 10:23 ` Jan Beulich
2020-12-09 9:41 ` Julien Grall
2020-12-09 14:27 ` Bertrand Marquis
2020-12-09 14:54 ` Jan Beulich
2020-12-09 15:06 ` Bertrand Marquis
2020-10-23 10:19 ` [PATCH v2 8/8] lib: move sort code Jan Beulich
2020-11-18 18:10 ` Julien Grall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=44ffc041-cacd-468e-a835-f5b2048bb201@xen.org \
--to=julien@xen.org \
--cc=George.Dunlap@eu.citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=iwj@xenproject.org \
--cc=jbeulich@suse.com \
--cc=sstabellini@kernel.org \
--cc=wl@xen.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).