From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755022AbbFPR7l (ORCPT ); Tue, 16 Jun 2015 13:59:41 -0400 Received: from mail-yk0-f173.google.com ([209.85.160.173]:36101 "EHLO mail-yk0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751166AbbFPR7e (ORCPT ); Tue, 16 Jun 2015 13:59:34 -0400 Message-ID: <5580704B.7060000@gmail.com> Date: Tue, 16 Jun 2015 13:51:55 -0500 From: Orestes Leal Rodriguez User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0 SeaMonkey/2.30 MIME-Version: 1.0 To: linux-kernel@vger.kernel.org Subject: [PATCH 1/1] lib: small update for strlen, strnlen, use less cpu instructions Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Very small update to strlen and strnlen that now use less cpu instructions by using a counter to avoid the memory addresses substraction to find the length of the string. Signed-off-by: Orestes Leal Rodriguez --- diff --git a/lib/string.c b/lib/string.c index 992bf30..c873436 100644 --- a/lib/string.c +++ b/lib/string.c @@ -17,6 +17,10 @@ * * Sat Feb 09 2002, Jason Thomas , * Matthew Hawkins * - Kissed strtok() goodbye + * + * * Tuesday June 16 2015, Orestes Leal Rodriguez + * - strlen, strnlen: by using a single counter we use less cpu instructions + * by avoiding substracting the memory addresses before return */ #include @@ -401,11 +405,11 @@ EXPORT_SYMBOL(strim); */ size_t strlen(const char *s) { - const char *sc; + size_t sz = 0; - for (sc = s; *sc != '\0'; ++sc) - /* nothing */; - return sc - s; + for (; *s++ != '\0'; sz++) + /* empty */; + return sz; } EXPORT_SYMBOL(strlen); #endif @@ -418,12 +422,13 @@ EXPORT_SYMBOL(strlen); */ size_t strnlen(const char *s, size_t count) { - const char *sc; + size_t sz = 0; - for (sc = s; count-- && *sc != '\0'; ++sc) - /* nothing */; - return sc - s; + for (; count-- && *s++ != '\0'; sz++) + /* empty */; + return sz; } + EXPORT_SYMBOL(strnlen); #endif