=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/kstat/kstat.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- src/usr.bin/kstat/kstat.c 2020/08/10 06:39:52 1.3 +++ src/usr.bin/kstat/kstat.c 2020/08/10 06:51:40 1.4 @@ -1,4 +1,4 @@ -/* $OpenBSD: kstat.c,v 1.3 2020/08/10 06:39:52 dlg Exp $ */ +/* $OpenBSD: kstat.c,v 1.4 2020/08/10 06:51:40 dlg Exp $ */ /* * Copyright (c) 2020 David Gwynne @@ -67,6 +67,43 @@ TAILQ_HEAD(kstat_filters, kstat_filter); +struct kstat_entry { + struct kstat_req kstat; + RBT_ENTRY(kstat_entry) entry; + int serrno; +}; + +RBT_HEAD(kstat_tree, kstat_entry); + +static inline int +kstat_cmp(const struct kstat_entry *ea, const struct kstat_entry *eb) +{ + const struct kstat_req *a = &ea->kstat; + const struct kstat_req *b = &eb->kstat; + int rv; + + rv = strncmp(a->ks_provider, b->ks_provider, sizeof(a->ks_provider)); + if (rv != 0) + return (rv); + if (a->ks_instance > b->ks_instance) + return (1); + if (a->ks_instance < b->ks_instance) + return (-1); + + rv = strncmp(a->ks_name, b->ks_name, sizeof(a->ks_name)); + if (rv != 0) + return (rv); + if (a->ks_unit > b->ks_unit) + return (1); + if (a->ks_unit < b->ks_unit) + return (-1); + + return (0); +} + +RBT_PROTOTYPE(kstat_tree, kstat_entry, entry, kstat_cmp); +RBT_GENERATE(kstat_tree, kstat_entry, entry, kstat_cmp); + static struct kstat_filter * kstat_filter_parse(char *); static int kstat_filter_entry(struct kstat_filters *, @@ -211,43 +248,6 @@ return (0); } - -struct kstat_entry { - struct kstat_req kstat; - RBT_ENTRY(kstat_entry) entry; - int serrno; -}; - -RBT_HEAD(kstat_tree, kstat_entry); - -static inline int -kstat_cmp(const struct kstat_entry *ea, const struct kstat_entry *eb) -{ - const struct kstat_req *a = &ea->kstat; - const struct kstat_req *b = &eb->kstat; - int rv; - - rv = strncmp(a->ks_provider, b->ks_provider, sizeof(a->ks_provider)); - if (rv != 0) - return (rv); - if (a->ks_instance > b->ks_instance) - return (1); - if (a->ks_instance < b->ks_instance) - return (-1); - - rv = strncmp(a->ks_name, b->ks_name, sizeof(a->ks_name)); - if (rv != 0) - return (rv); - if (a->ks_unit > b->ks_unit) - return (1); - if (a->ks_unit < b->ks_unit) - return (-1); - - return (0); -} - -RBT_PROTOTYPE(kstat_tree, kstat_entry, entry, kstat_cmp); -RBT_GENERATE(kstat_tree, kstat_entry, entry, kstat_cmp); static int printable(int ch)