From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754873AbbFPR6n (ORCPT ); Tue, 16 Jun 2015 13:58:43 -0400 Received: from mail-yk0-f182.google.com ([209.85.160.182]:36314 "EHLO mail-yk0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754613AbbFPR6f (ORCPT ); Tue, 16 Jun 2015 13:58:35 -0400 Message-ID: <55806FE8.9030302@gmail.com> Date: Tue, 16 Jun 2015 13:50:16 -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 CC: mihai.dontu@gmail.com 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