The branch stable/13 has been updated by dchagin:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=b31a7b84b3975effc3c627b9ebc8786837a28a5b

commit b31a7b84b3975effc3c627b9ebc8786837a28a5b
Author:     Dmitry Chagin <[email protected]>
AuthorDate: 2022-06-22 11:01:36 +0000
Commit:     Dmitry Chagin <[email protected]>
CommitDate: 2022-07-06 11:02:13 +0000

    kdump: For future use extract common code to a separate files
    
    Reviewed by:            jhb
    Differential revision:  https://reviews.freebsd.org/D35356
    MFC after:              2 weeks
    
    (cherry picked from commit 8b8e2e8f4154e02670123caf9a1dd1c5188463cc)
---
 usr.bin/kdump/kdump.c | 50 +++++++-------------------------
 usr.bin/kdump/kdump.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 89 insertions(+), 40 deletions(-)

diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c
index c9344d001f32..cafc524ca6d3 100644
--- a/usr.bin/kdump/kdump.c
+++ b/usr.bin/kdump/kdump.c
@@ -90,6 +90,7 @@ __FBSDID("$FreeBSD$");
 #include <unistd.h>
 #include <vis.h>
 #include "ktrace.h"
+#include "kdump.h"
 
 #ifdef WITH_CASPER
 #include <libcasper.h>
@@ -130,8 +131,8 @@ void usage(void);
 #define        TIMESTAMP_ELAPSED       0x2
 #define        TIMESTAMP_RELATIVE      0x4
 
-static bool abiflag, decimal, fancy = true, resolv, suppressdata, syscallno,
-    tail, threads;
+bool decimal, fancy = true, resolv;
+static bool abiflag, suppressdata, syscallno, tail, threads;
 static int timestamp, maxdata;
 static const char *tracefile = DEF_TRACEFILE;
 static struct ktr_header ktr_header;
@@ -139,37 +140,6 @@ static struct ktr_header ktr_header;
 #define TIME_FORMAT    "%b %e %T %Y"
 #define eqs(s1, s2)    (strcmp((s1), (s2)) == 0)
 
-#define        print_number64(first,i,n,c) do {                                
\
-       uint64_t __v;                                                   \
-                                                                       \
-       if (quad_align && (((ptrdiff_t)((i) - (first))) & 1) == 1) {    \
-               (i)++;                                                  \
-               (n)--;                                                  \
-       }                                                               \
-       if (quad_slots == 2)                                            \
-               __v = (uint64_t)(uint32_t)(i)[0] |                      \
-                   ((uint64_t)(uint32_t)(i)[1]) << 32;                 \
-       else                                                            \
-               __v = (uint64_t)*(i);                                   \
-       if (decimal)                                                    \
-               printf("%c%jd", (c), (intmax_t)__v);                    \
-       else                                                            \
-               printf("%c%#jx", (c), (uintmax_t)__v);                  \
-       (i) += quad_slots;                                              \
-       (n) -= quad_slots;                                              \
-       (c) = ',';                                                      \
-} while (0)
-
-#define print_number(i,n,c) do {                                       \
-       if (decimal)                                                    \
-               printf("%c%jd", c, (intmax_t)*i);                       \
-       else                                                            \
-               printf("%c%#jx", c, (uintmax_t)(u_register_t)*i);       \
-       i++;                                                            \
-       n--;                                                            \
-       c = ',';                                                        \
-} while (0)
-
 struct proc_info
 {
        TAILQ_ENTRY(proc_info)  info;
@@ -225,7 +195,7 @@ cappwdgrp_setup(cap_channel_t **cappwdp, cap_channel_t 
**capgrpp)
 }
 #endif /* WITH_CASPER */
 
-static void
+void
 print_integer_arg(const char *(*decoder)(int), int value)
 {
        const char *str;
@@ -242,7 +212,7 @@ print_integer_arg(const char *(*decoder)(int), int value)
 }
 
 /* Like print_integer_arg but unknown values are treated as valid. */
-static void
+void
 print_integer_arg_valid(const char *(*decoder)(int), int value)
 {
        const char *str;
@@ -258,7 +228,7 @@ print_integer_arg_valid(const char *(*decoder)(int), int 
value)
        }
 }
 
-static bool
+bool
 print_mask_arg_part(bool (*decoder)(FILE *, int, int *), int value, int *rem)
 {
 
@@ -266,7 +236,7 @@ print_mask_arg_part(bool (*decoder)(FILE *, int, int *), 
int value, int *rem)
        return (decoder(stdout, value, rem));
 }
 
-static void
+void
 print_mask_arg(bool (*decoder)(FILE *, int, int *), int value)
 {
        bool invalid;
@@ -278,7 +248,7 @@ print_mask_arg(bool (*decoder)(FILE *, int, int *), int 
value)
                printf("<invalid>%u", rem);
 }
 
-static void
+void
 print_mask_arg0(bool (*decoder)(FILE *, int, int *), int value)
 {
        bool invalid;
@@ -329,7 +299,7 @@ decode_filemode(int value)
                printf("<invalid>%u", rem);
 }
 
-static void
+void
 print_mask_arg32(bool (*decoder)(FILE *, uint32_t, uint32_t *), uint32_t value)
 {
        bool invalid;
@@ -342,7 +312,7 @@ print_mask_arg32(bool (*decoder)(FILE *, uint32_t, uint32_t 
*), uint32_t value)
                printf("<invalid>%u", rem);
 }
 
-static void
+void
 print_mask_argul(bool (*decoder)(FILE *, u_long, u_long *), u_long value)
 {
        bool invalid;
diff --git a/usr.bin/kdump/kdump.h b/usr.bin/kdump/kdump.h
new file mode 100644
index 000000000000..faf8e03e541d
--- /dev/null
+++ b/usr.bin/kdump/kdump.h
@@ -0,0 +1,79 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1988, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef __KDUMP_H__
+#define __KDUMP_H__
+
+extern bool decimal, fancy, resolv;
+
+#define        print_number64(first,i,n,c) do {                                
\
+       uint64_t __v;                                                   \
+                                                                       \
+       if (quad_align && (((ptrdiff_t)((i) - (first))) & 1) == 1) {    \
+               (i)++;                                                  \
+               (n)--;                                                  \
+       }                                                               \
+       if (quad_slots == 2)                                            \
+               __v = (uint64_t)(uint32_t)(i)[0] |                      \
+                   ((uint64_t)(uint32_t)(i)[1]) << 32;                 \
+       else                                                            \
+               __v = (uint64_t)*(i);                                   \
+       if (decimal)                                                    \
+               printf("%c%jd", (c), (intmax_t)__v);                    \
+       else                                                            \
+               printf("%c%#jx", (c), (uintmax_t)__v);                  \
+       (i) += quad_slots;                                              \
+       (n) -= quad_slots;                                              \
+       (c) = ',';                                                      \
+} while (0)
+
+#define print_number(i,n,c) do {                                       \
+       if (decimal)                                                    \
+               printf("%c%jd", c, (intmax_t)*i);                       \
+       else                                                            \
+               printf("%c%#jx", c, (uintmax_t)(u_register_t)*i);       \
+       i++;                                                            \
+       n--;                                                            \
+       c = ',';                                                        \
+} while (0)
+
+void   print_integer_arg(const char *(*decoder)(int), int value);
+void   print_integer_arg_valid(const char *(*decoder)(int), int value);
+void   print_mask_arg(bool (*decoder)(FILE *, int, int *), int value);
+void   print_mask_arg0(bool (*decoder)(FILE *, int, int *), int value);
+void   print_mask_arg32(bool (*decoder)(FILE *, uint32_t, uint32_t *),
+           uint32_t value);
+void   print_mask_argul(bool (*decoder)(FILE *, u_long, u_long *),
+           u_long value);
+bool   print_mask_arg_part(bool (*decoder)(FILE *, int, int *),
+           int value, int *rem);
+
+#endif /* !__KDUMP_H__ */

Reply via email to