Date: Thu, 23 Aug 2018 05:06:12 +0000 (UTC) From: Warner Losh <imp@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r338235 - head/sbin/devmatch Message-ID: <201808230506.w7N56CvH062888@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: imp Date: Thu Aug 23 05:06:11 2018 New Revision: 338235 URL: https://svnweb.freebsd.org/changeset/base/338235 Log: Remove sorting of matches and print all the matches as we find them. This backs out the hack we added in r329458. Now that we can freeze / thaw probing, this is a much better solution to that problem. Revert to simply printing the results as we find them, and relying on an external sort | uniq to clean up the list. Differential Revision: https://reviews.freebsd.org/D16735 Modified: head/sbin/devmatch/devmatch.c Modified: head/sbin/devmatch/devmatch.c ============================================================================== --- head/sbin/devmatch/devmatch.c Thu Aug 23 05:06:07 2018 (r338234) +++ head/sbin/devmatch/devmatch.c Thu Aug 23 05:06:11 2018 (r338235) @@ -56,12 +56,6 @@ static struct option longopts[] = { #define DEVMATCH_MAX_HITS 256 -static struct match_data { - char *descr; - int priority; -} match_data[DEVMATCH_MAX_HITS]; - -static int hit_index; static int all_flag; static int dump_flag; static char *linker_hints; @@ -240,35 +234,6 @@ pnpval_as_str(const char *val, const char *pnpinfo) return retval; } -static int -match_data_compare(const void *_pa, const void *_pb) -{ - const struct match_data *pa = _pa; - const struct match_data *pb = _pb; - - /* biggest value first */ - if (pa->priority > pb->priority) - return (-1); - else if (pa->priority < pb->priority) - return (1); - - /* then sort by string */ - return (strcmp(pa->descr, pb->descr)); -} - -static int -bitrev16(int input) -{ - int retval = 0; - int x; - - for (x = 0; x != 16; x++) { - if ((input >> x) & 1) - retval |= (0x8000 >> x); - } - return (retval); -} - static void search_hints(const char *bus, const char *dev, const char *pnpinfo) { @@ -417,22 +382,12 @@ search_hints(const char *bus, const char *dev, const c printf("\n"); else if (!notme) { if (!unbound_flag) { - char *descr = NULL; - if (all_flag) - asprintf(&descr, "%s: %s", *dev ? dev : "unattached", lastmod); + printf("%s: %s", *dev ? dev : "unattached", lastmod); else - asprintf(&descr, "%s", lastmod); + printf("%s", lastmod); if (verbose_flag) printf("Matches --- %s ---\n", lastmod); - - if (descr != NULL && hit_index < DEVMATCH_MAX_HITS) { - match_data[hit_index].descr = descr; - match_data[hit_index].priority = bitrev16(mask); - hit_index++; - } else { - free(descr); - } } found++; } @@ -445,19 +400,6 @@ search_hints(const char *bus, const char *dev, const c } walker = (void *)(len - sizeof(int) + (intptr_t)walker); } - if (hit_index != 0) { - /* sort hits by priority */ - mergesort(match_data, hit_index, sizeof(match_data[0]), &match_data_compare); - - /* printout */ - for (i = 0; i != hit_index; i++) { - puts(match_data[i].descr); - free(match_data[i].descr); - } - - /* reset hit_index */ - hit_index = 0; - } if (unbound_flag && found == 0 && *pnpinfo) { if (verbose_flag) printf("------------------------- ");
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201808230506.w7N56CvH062888>