From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pb0-f45.google.com (mail-pb0-f45.google.com [209.85.160.45]) by dpdk.org (Postfix) with ESMTP id 45CBBB0AA for ; Wed, 14 May 2014 17:19:33 +0200 (CEST) Received: by mail-pb0-f45.google.com with SMTP id um1so1823580pbc.32 for ; Wed, 14 May 2014 08:19:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-type:content-transfer-encoding; bh=ZB4802e2qQiaw9205/xdr1O1RkIwRW9uXtKln6afOZg=; b=X9VtP3307TO8o+nWMswwIwyTeMDr0u/O4JUpr7rXZtEDNaNQOaLj9GrZD+CqNNrfbn z2UCszttmOdqH2RflvBSsdRm8UvSsdo5GXwLKGE5IlXyYO6JUz9qM/RRNFqy6cEHQDsh 3YNIvh/nPk29id/E4LmMfNagPhyWfzl7MTarlzb7sXrhMF/Dxe/OBBbscnfxReEqp5iG XuSNdQM9/fumy/5Y77b1nexFfNpISvLq6X2vWnLYerOWyBNgql9YtAaxbPhLkVcDk0Jk GC4Gcnkqlk30KllLIMoLMLisKYhJQeypCSkAHvPJ6P7dpvdvBJPqUfcaVdnaHZMkeIom 2cOQ== X-Gm-Message-State: ALoCoQlb+adYy12NDyMdV6zrEOsfQyEL0kfEzF3IeethXX/HnFiSvSBo89Tq+bhB8JgurYs1wXHq X-Received: by 10.68.213.97 with SMTP id nr1mr5216692pbc.52.1400080780412; Wed, 14 May 2014 08:19:40 -0700 (PDT) Received: from nehalam.linuxnetplumber.net (static-50-53-83-51.bvtn.or.frontiernet.net. [50.53.83.51]) by mx.google.com with ESMTPSA id tg9sm4069894pbc.29.2014.05.14.08.19.39 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 14 May 2014 08:19:40 -0700 (PDT) Date: Wed, 14 May 2014 08:19:32 -0700 From: Stephen Hemminger To: dev@dpdk.org Message-ID: <20140514081932.37847146@nehalam.linuxnetplumber.net> X-Mailer: Claws Mail 3.9.3 (GTK+ 2.24.23; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: [dpdk-dev] [PATCH] Don't inline string functions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 May 2014 15:19:33 -0000 It makes no sense to inline string functions, in fact snprintf can't be inlined because the function supports variable number of arguments. Signed-off-by: Stephen Hemminger --- Resend because of lack of response lib/librte_eal/bsdapp/eal/Makefile | 1 lib/librte_eal/common/eal_common_string_fns.c | 96 +++++++++++++++++++++++++ lib/librte_eal/common/include/rte_string_fns.h | 57 +------------- lib/librte_eal/linuxapp/eal/Makefile | 1 4 files changed, 102 insertions(+), 53 deletions(-) --- a/lib/librte_eal/bsdapp/eal/Makefile 2014-05-02 16:31:12.519570116 -0700 +++ b/lib/librte_eal/bsdapp/eal/Makefile 2014-05-02 16:31:12.519570116 -0700 @@ -67,6 +67,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_tailqs.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_errno.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_cpuflags.c +SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_string_fns.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_hexdump.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_devargs.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_vdev.c --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ b/lib/librte_eal/common/eal_common_string_fns.c 2014-05-02 16:31:12.519570116 -0700 @@ -0,0 +1,96 @@ +/*- + * BSD LICENSE + * + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include + +#include + +/* safe version os snprintf */ +int +rte_snprintf(char *buffer, int buflen, const char *format, ...) +{ + int len; + va_list ap; + + if (buffer == NULL && buflen != 0) + goto einval_error; + if (format == NULL) { + if (buflen > 0) + buffer[0] = '\0'; + goto einval_error; + } + + va_start(ap, format); + len = vsnprintf(buffer, buflen, format, ap); + va_end(ap); + if (len >= buflen && buflen > 0) + buffer[buflen - 1] = '\0'; + + return len; + +einval_error: + errno = EINVAL; + return -1; +} + +/* split string into tokens */ +int +rte_strsplit(char *string, int stringlen, + char **tokens, int maxtokens, char delim) +{ + int i, tok = 0; + int tokstart = 1; /* first token is right at start of string */ + + if (string == NULL || tokens == NULL) + goto einval_error; + + for (i = 0; i < stringlen; i++) { + if (string[i] == '\0' || tok >= maxtokens) + break; + if (tokstart) { + tokstart = 0; + tokens[tok++] = &string[i]; + } + if (string[i] == delim) { + string[i] = '\0'; + tokstart = 1; + } + } + return tok; + +einval_error: + errno = EINVAL; + return -1; +} --- a/lib/librte_eal/common/include/rte_string_fns.h 2014-05-02 16:31:12.519570116 -0700 +++ b/lib/librte_eal/common/include/rte_string_fns.h 2014-05-02 16:31:12.519570116 -0700 @@ -72,33 +72,9 @@ extern "C" { * buffer been sufficiently big. * */ -static inline int -rte_snprintf(char *buffer, int buflen, const char *format, ...) -{ - int len; - va_list ap; - - if (buffer == NULL && buflen != 0) - goto einval_error; - if (format == NULL) { - if (buflen > 0) - buffer[0] = '\0'; - goto einval_error; - } - - va_start(ap, format); - len = vsnprintf(buffer, buflen, format, ap); - va_end(ap); - if (len >= buflen && buflen > 0) - buffer[buflen - 1] = '\0'; - - return len; - -einval_error: - errno = EINVAL; - return -1; -} +int +rte_snprintf(char *buffer, int buflen, const char *format, ...); /** * Takes string "string" parameter and splits it at character "delim" @@ -126,34 +102,9 @@ einval_error: * @return * The number of tokens in the tokens array. */ -static inline int +int rte_strsplit(char *string, int stringlen, - char **tokens, int maxtokens, char delim) -{ - int i, tok = 0; - int tokstart = 1; /* first token is right at start of string */ - - if (string == NULL || tokens == NULL) - goto einval_error; - - for (i = 0; i < stringlen; i++) { - if (string[i] == '\0' || tok >= maxtokens) - break; - if (tokstart) { - tokstart = 0; - tokens[tok++] = &string[i]; - } - if (string[i] == delim) { - string[i] = '\0'; - tokstart = 1; - } - } - return tok; - -einval_error: - errno = EINVAL; - return -1; -} + char **tokens, int maxtokens, char delim); #ifdef __cplusplus } --- a/lib/librte_eal/linuxapp/eal/Makefile 2014-05-02 16:31:12.519570116 -0700 +++ b/lib/librte_eal/linuxapp/eal/Makefile 2014-05-02 16:31:12.519570116 -0700 @@ -75,6 +75,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) + SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_tailqs.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_errno.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_cpuflags.c +SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_string_fns.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_hexdump.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_devargs.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_vdev.c