On 12/17/2014 7:01 PM, Ananyev, Konstantin wrote: > Hi Jay, > > From: Jay Rolette [mailto:rolette at infiniteio.com] > Sent: Tuesday, December 16, 2014 7:21 PM > To: Ananyev, Konstantin > Cc: Dev > Subject: Re: [dpdk-dev] [PATCH] replaced O(n^2) sort in sort_by_physaddr() > with qsort() from standard library > > 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 <rolette at > infiniteio.com<mailto:rolette at infiniteio.com>> wrote: > Thanks Konstantin. Yes, I'll resend. Not sure why gmail is removing > whitespace when I sent in Plain Text mode. > > Sorry, don?t know either. > Wonder, did you see this: > https://www.kernel.org/pub/software/scm/git/docs/git-format-patch.html > There is a section about different mailers, etc. > Konstantin > > 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<http://gmail.com> email rather than a > corporate email hosted via google apps. Hi Jay,
I was ever use git send-email with my gmail account, it works. So do you config your git send-email correctly? Thanks, Michael > Jay > > On Tue, Dec 16, 2014 at 12:39 PM, Ananyev, Konstantin <konstantin.ananyev at > intel.com<mailto:konstantin.ananyev at intel.com>> wrote: > > Hi Jay, > >> -----Original Message----- >> From: dev [mailto:dev-bounces at dpdk.org<mailto:dev-bounces at 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 <rolette at infiniteio.com<mailto:rolette at >> infiniteio.com>> > 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; >> } >> >> --