From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yk0-f171.google.com (mail-yk0-f171.google.com [209.85.160.171]) by dpdk.org (Postfix) with ESMTP id F3AC08054 for ; Tue, 16 Dec 2014 20:20:54 +0100 (CET) Received: by mail-yk0-f171.google.com with SMTP id 142so6184164ykq.2 for ; Tue, 16 Dec 2014 11:20:54 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=MZGxeRMW4xGCKZBPNUofzPBcxMi19QVMIiswYJHqVbA=; b=b9pJ+G5/VbDbXdDU3aNKuDPbUWdt46YWmlrOljdjeeTHfjqm1nMgWOtUW7vIh650fc jn2UG37+wwc6t5GpaC00yWVVgvWSv4/8m0MZzxIU0ZLe5EEWMARZahyOA6naQ0fpattC aOVlQmXQkYz/g8leBsFehS9oRl5EdrQ37Rwls4P9WvTJZAnrB2eCnO4yPLzAnyNm+BRi jNLT9azaeE23gX4Q1yV0Qb00MB3bwd8aBrm2LngL1EYfI4mHmKyhT7Q/bKEZzT8DT8qq oaV8eJ/usuYTSYTws8hd9A2oKeH/rnmhbM74dU3GFpA9lfccrK2FNmYGVCKc2bvMQlTX UUEA== X-Gm-Message-State: ALoCoQlWlLFUZP2udPpZMUbeCU/k3f55JQrp+EWOIQvshlTpXw3HRFwuwh/GjEdoUrPtaMefSOjt MIME-Version: 1.0 X-Received: by 10.236.105.180 with SMTP id k40mr10737045yhg.85.1418757654413; Tue, 16 Dec 2014 11:20:54 -0800 (PST) Received: by 10.170.54.78 with HTTP; Tue, 16 Dec 2014 11:20:54 -0800 (PST) In-Reply-To: References: <2601191342CEEE43887BDE71AB977258213C1357@IRSMSX105.ger.corp.intel.com> Date: Tue, 16 Dec 2014 13:20:54 -0600 Message-ID: From: Jay Rolette To: "Ananyev, Konstantin" Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: Dev Subject: Re: [dpdk-dev] [PATCH] replaced O(n^2) sort in sort_by_physaddr() with qsort() from standard library 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: Tue, 16 Dec 2014 19:20:55 -0000 Actually, I just relooked at the email I sent and it looks correct (properly indented, etc.). Any suggestions for what might be going on? On Tue, Dec 16, 2014 at 1:18 PM, Jay Rolette wrote: > > Thanks Konstantin. Yes, I'll resend. Not sure why gmail is removing > whitespace when I sent in Plain Text mode. > > Ultimately I'll need to figure out how to properly configure git to send > these directly instead of handling them more manually. The examples I saw > assumed you were using a gmail.com email rather than a corporate email > hosted via google apps. > > Jay > > On Tue, Dec 16, 2014 at 12:39 PM, Ananyev, Konstantin < > konstantin.ananyev@intel.com> wrote: >> >> >> Hi Jay, >> >> > -----Original Message----- >> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jay Rolette >> > Sent: Thursday, December 11, 2014 4:06 PM >> > To: Dev >> > Subject: [dpdk-dev] [PATCH] replaced O(n^2) sort in sort_by_physaddr() >> with qsort() from standard library >> > >> > Signed-off-by: Jay Rolette >> >> The patch itself looks good to me. >> Though it seems something wrong with formatting - all lines start with >> offset 0. >> Probably your mail client? >> Konstantin >> >> >> > --- >> > lib/librte_eal/linuxapp/eal/eal_memory.c | 59 >> > +++++++++++--------------------- >> > 1 file changed, 20 insertions(+), 39 deletions(-) >> > >> > diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c >> > b/lib/librte_eal/linuxapp/eal/eal_memory.c >> > index bae2507..3656515 100644 >> > --- a/lib/librte_eal/linuxapp/eal/eal_memory.c >> > +++ b/lib/librte_eal/linuxapp/eal/eal_memory.c >> > @@ -670,6 +670,25 @@ error: >> > return -1; >> > } >> > >> > +static int >> > +cmp_physaddr(const void *a, const void *b) >> > +{ >> > +#ifndef RTE_ARCH_PPC_64 >> > + const struct hugepage_file *p1 = (const struct hugepage_file *)a; >> > + const struct hugepage_file *p2 = (const struct hugepage_file *)b; >> > +#else >> > + // PowerPC needs memory sorted in reverse order from x86 >> > + const struct hugepage_file *p1 = (const struct hugepage_file *)b; >> > + const struct hugepage_file *p2 = (const struct hugepage_file *)a; >> > +#endif >> > + if (p1->physaddr < p2->physaddr) >> > + return -1; >> > + else if (p1->physaddr > p2->physaddr) >> > + return 1; >> > + else >> > + return 0; >> > +} >> > + >> > /* >> > * Sort the hugepg_tbl by physical address (lower addresses first on >> x86, >> > * higher address first on powerpc). We use a slow algorithm, but we >> won't >> > @@ -678,45 +697,7 @@ error: >> > static int >> > sort_by_physaddr(struct hugepage_file *hugepg_tbl, struct hugepage_info >> > *hpi) >> > { >> > - unsigned i, j; >> > - int compare_idx; >> > - uint64_t compare_addr; >> > - struct hugepage_file tmp; >> > - >> > - for (i = 0; i < hpi->num_pages[0]; i++) { >> > - compare_addr = 0; >> > - compare_idx = -1; >> > - >> > - /* >> > - * browse all entries starting at 'i', and find the >> > - * entry with the smallest addr >> > - */ >> > - for (j=i; j< hpi->num_pages[0]; j++) { >> > - >> > - if (compare_addr == 0 || >> > -#ifdef RTE_ARCH_PPC_64 >> > - hugepg_tbl[j].physaddr > compare_addr) { >> > -#else >> > - hugepg_tbl[j].physaddr < compare_addr) { >> > -#endif >> > - compare_addr = hugepg_tbl[j].physaddr; >> > - compare_idx = j; >> > - } >> > - } >> > - >> > - /* should not happen */ >> > - if (compare_idx == -1) { >> > - RTE_LOG(ERR, EAL, "%s(): error in physaddr sorting\n", __func__); >> > - return -1; >> > - } >> > - >> > - /* swap the 2 entries in the table */ >> > - memcpy(&tmp, &hugepg_tbl[compare_idx], >> > - sizeof(struct hugepage_file)); >> > - memcpy(&hugepg_tbl[compare_idx], &hugepg_tbl[i], >> > - sizeof(struct hugepage_file)); >> > - memcpy(&hugepg_tbl[i], &tmp, sizeof(struct hugepage_file)); >> > - } >> > + qsort(hugepg_tbl, hpi->num_pages[0], sizeof(struct hugepage_file), >> > cmp_physaddr); >> > return 0; >> > } >> > >> > -- >> >