annotate usr/src/uts/common/sys/dumphdr.h @ 12979:ab9ae749152f

PSARC/2009/617 Software Events Notification Parameters CLI PSARC/2009/618 snmp-notify: SNMP Notification Daemon for Software Events PSARC/2009/619 smtp-notify: Email Notification Daemon for Software Events PSARC/2010/225 fmd for non-global Solaris zones PSARC/2010/226 Solaris Instance UUID PSARC/2010/227 nvlist_nvflag(3NVPAIR) PSARC/2010/228 libfmevent additions PSARC/2010/257 sysevent_evc_setpropnvl and sysevent_evc_getpropnvl PSARC/2010/265 FMRI and FMA Event Stabilty, 'ireport' category 1 event class, and the 'sw' FMRI scheme PSARC/2010/278 FMA/SMF integration: instance state transitions PSARC/2010/279 Modelling panics within FMA PSARC/2010/290 logadm.conf upgrade 6392476 fmdump needs to pretty-print 6393375 userland ereport/ireport event generation interfaces 6445732 Add email notification agent for FMA and software events 6804168 RFE: Allow an efficient means to monitor SMF services status changes 6866661 scf_values_destroy(3SCF) will segfault if is passed NULL 6884709 Add snmp notification agent for FMA and software events 6884712 Add private interface to tap into libfmd_msg macro expansion capabilities 6897919 fmd to run in a non-global zone 6897937 fmd use of non-private doors is not safe 6900081 add a UUID to Solaris kernel image for use in crashdump identification 6914884 model panic events as a defect diagnosis in FMA 6944862 fmd_case_open_uuid, fmd_case_uuisresolved, fmd_nvl_create_defect 6944866 log legacy sysevents in fmd 6944867 enumerate svc scheme in topo 6944868 software-diagnosis and software-response fmd modules 6944870 model SMF maintenance state as a defect diagnosis in FMA 6944876 savecore runs in foreground for systems with zfs root and dedicated dump 6965796 Implement notification parameters for SMF state transitions and FMA events 6968287 SUN-FM-MIB.mib needs to be updated to reflect Oracle information 6972331 logadm.conf upgrade PSARC/2010/290
author Gavin Maltby <gavin.maltby@oracle.com>
date Fri, 30 Jul 2010 17:04:17 +1000
parents 2acab560865a
children dd10606460cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
1 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
2 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
3 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
4 * The contents of this file are subject to the terms of the
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents: 1414
diff changeset
5 * Common Development and Distribution License (the "License").
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents: 1414
diff changeset
6 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
7 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
9 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
10 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
11 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
12 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
13 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
15 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
16 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
17 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
18 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
19 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
20 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
21 /*
12640
b4f09d1fd79d 6923763 break followed by sync results in panic dump timeout 'dump aborted'
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 10843
diff changeset
22 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
23 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
24
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
25 #ifndef _SYS_DUMPHDR_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
26 #define _SYS_DUMPHDR_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
27
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
28 #include <sys/types.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
29 #include <sys/param.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
30 #include <sys/utsname.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
31 #include <sys/log.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
33 #ifdef __cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
34 extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
35 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
36
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
37 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
38 * The dump header describes the contents of a crash dump. Two headers
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
39 * are written out: one at the beginning of the dump, and the other at
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
40 * the very end of the dump device. The terminal header is at a known
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
41 * location (end of device) so we can always find it. The initial header
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
42 * is redundant, but helps savecore(1M) determine whether the dump has been
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
43 * overwritten by swap activity. See dumpadm(1M) for dump configuration.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
44 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
45 #define DUMP_MAGIC 0xdefec8edU /* dump magic number */
12979
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 12943
diff changeset
46 #define DUMP_VERSION 10 /* version of this dumphdr */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
47 #define DUMP_WORDSIZE (sizeof (long) * NBBY) /* word size (32 or 64) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
48 #define DUMP_PANICSIZE 200 /* Max panic string copied */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
49 #define DUMP_COMPRESS_RATIO 2 /* conservative; usually 2.5+ */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
50 #define DUMP_OFFSET 65536 /* pad at start/end of dev */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
51 #define DUMP_LOGSIZE (2 * LOG_HIWAT) /* /dev/log message save area */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
52 #define DUMP_ERPTSIZE (P2ROUNDUP( \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
53 (ERPT_DATA_SZ / 2) * \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
54 (ERPT_EVCH_MAX + \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
55 ERPT_MAX_ERRS * ERPT_HIWAT), \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
56 DUMP_OFFSET)) /* ereport save area */
12979
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 12943
diff changeset
57 #define DUMP_SUMMARYSIZE (P2ROUNDUP( \
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 12943
diff changeset
58 (STACK_BUF_SIZE + \
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 12943
diff changeset
59 sizeof (summary_dump_t) + 1024), \
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 12943
diff changeset
60 DUMP_OFFSET)) /* summary save area */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
61
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
62 typedef struct dumphdr {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
63 uint32_t dump_magic; /* magic number */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
64 uint32_t dump_version; /* version number */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
65 uint32_t dump_flags; /* flags; see below */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
66 uint32_t dump_wordsize; /* 32 or 64 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
67 offset_t dump_start; /* starting offset on dump device */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
68 offset_t dump_ksyms; /* offset of compressed symbol table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
69 offset_t dump_pfn; /* offset of pfn table for all pages */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
70 offset_t dump_map; /* offset of page translation map */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
71 offset_t dump_data; /* offset of actual dump data */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
72 struct utsname dump_utsname; /* copy of utsname structure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
73 char dump_platform[SYS_NMLN]; /* platform name (uname -i) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
74 char dump_panicstring[DUMP_PANICSIZE]; /* copy of panicstr */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
75 time_t dump_crashtime; /* time of crash */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
76 long dump_pageshift; /* log2(pagesize) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
77 long dump_pagesize; /* pagesize */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
78 long dump_hashmask; /* page translation hash mask */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
79 long dump_nvtop; /* number of vtop table entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
80 pgcnt_t dump_npages; /* number of data pages */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
81 size_t dump_ksyms_size; /* kernel symbol table size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
82 size_t dump_ksyms_csize; /* compressed symbol table size */
12979
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 12943
diff changeset
83 uint32_t dump_fm_panic; /* initiated from fm subsystems */
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 12943
diff changeset
84 char dump_uuid[36 + 1]; /* os image uuid */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
85 } dumphdr_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
86
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
87 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
88 * Values for dump_flags
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
89 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
90 #define DF_VALID 0x00000001 /* Dump is valid (savecore clears) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
91 #define DF_COMPLETE 0x00000002 /* All pages present as configured */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
92 #define DF_LIVE 0x00000004 /* Dump was taken on a live system */
10843
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
93 #define DF_COMPRESSED 0x00000008 /* Dump is compressed */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
94 #define DF_KERNEL 0x00010000 /* Contains kernel pages only */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
95 #define DF_ALL 0x00020000 /* Contains all pages */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
96 #define DF_CURPROC 0x00040000 /* Contains kernel + cur proc pages */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
97 #define DF_CONTENT 0xffff0000 /* The set of all dump content flags */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
98
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
99 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
100 * Dump translation map hash table entry.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
101 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
102 typedef struct dump_map {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
103 offset_t dm_first;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
104 offset_t dm_next;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
105 offset_t dm_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
106 struct as *dm_as;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
107 uintptr_t dm_va;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
108 } dump_map_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
109
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
110 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
111 * Dump translation map hash function.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
112 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
113 #define DUMP_HASH(dhp, as, va) \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
114 ((((uintptr_t)(as) >> 3) + ((va) >> (dhp)->dump_pageshift)) & \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
115 (dhp)->dump_hashmask)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
116
10843
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
117 /*
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
118 * Encoding of the csize word used to provide meta information
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
119 * between dumpsys and savecore.
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
120 *
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
121 * tag size
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
122 * 1-4095 1..dump_maxcsize stream block
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
123 * 0 1..pagesize one lzjb page
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
124 * 0 0 marks end of data
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
125 */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
126 typedef uint32_t dumpcsize_t;
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
127
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
128 #define DUMP_MAX_TAG (0xfffU)
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
129 #define DUMP_MAX_CSIZE (0xfffffU)
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
130 #define DUMP_SET_TAG(w, v) (((w) & DUMP_MAX_CSIZE) | ((v) << 20))
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
131 #define DUMP_GET_TAG(w) (((w) >> 20) & DUMP_MAX_TAG)
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
132 #define DUMP_SET_CSIZE(w, v) \
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
133 (((w) & (DUMP_MAX_TAG << 20)) | ((v) & DUMP_MAX_CSIZE))
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
134 #define DUMP_GET_CSIZE(w) ((w) & DUMP_MAX_CSIZE)
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
135
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
136 typedef struct dumpstreamhdr {
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
137 char stream_magic[8]; /* "StrmHdr" */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
138 pgcnt_t stream_pagenum; /* starting pfn */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
139 pgcnt_t stream_npages; /* uncompressed size */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
140 } dumpstreamhdr_t;
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
141
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
142 #define DUMP_STREAM_MAGIC "StrmHdr"
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
143
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
144 /* The number of helpers is limited by the number of stream tags. */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
145 #define DUMP_MAX_NHELPER DUMP_MAX_TAG
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
146
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
147 /*
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
148 * The dump data header is placed after the dumphdr in the compressed
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
149 * image. It is not needed after savecore runs and the data pages have
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
150 * been decompressed.
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
151 */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
152 typedef struct dumpdatahdr {
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
153 uint32_t dump_datahdr_magic; /* data header presence */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
154 uint32_t dump_datahdr_version; /* data header version */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
155 uint64_t dump_data_csize; /* compressed data size */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
156 uint32_t dump_maxcsize; /* compressed data max block size */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
157 uint32_t dump_maxrange; /* max number of pages per range */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
158 uint16_t dump_nstreams; /* number of compression streams */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
159 uint16_t dump_clevel; /* compression level (0-9) */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
160 uint32_t dump_metrics; /* size of metrics data */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
161 } dumpdatahdr_t;
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
162
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
163 #define DUMP_DATAHDR_MAGIC ('d' << 24 | 'h' << 16 | 'd' << 8 | 'r')
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
164
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
165 #define DUMP_DATAHDR_VERSION 1
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
166 #define DUMP_CLEVEL_LZJB 1 /* parallel lzjb compression */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
167 #define DUMP_CLEVEL_BZIP2 2 /* parallel bzip2 level 1 */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
168
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
169 #ifdef _KERNEL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
170
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
171 extern kmutex_t dump_lock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
172 extern struct vnode *dumpvp;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
173 extern u_offset_t dumpvp_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
174 extern struct dumphdr *dumphdr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
175 extern int dump_conflags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
176 extern char *dumppath;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
177
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
178 extern int dump_timeout;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
179 extern int dump_timeleft;
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
180 extern int dump_ioerr;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
181 extern int sync_timeout;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
182 extern int sync_timeleft;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
183
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
184 extern int dumpinit(struct vnode *, char *, int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
185 extern void dumpfini(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
186 extern void dump_resize(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
187 extern void dump_page(pfn_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
188 extern void dump_addpage(struct as *, void *, pfn_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
189 extern void dumpsys(void);
10843
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
190 extern void dumpsys_helper(void);
12640
b4f09d1fd79d 6923763 break followed by sync results in panic dump timeout 'dump aborted'
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 10843
diff changeset
191 extern void dumpsys_helper_nw(void);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
192 extern void dump_messages(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
193 extern void dump_ereports(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
194 extern void dumpvp_write(const void *, size_t);
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5084
diff changeset
195 extern int dumpvp_resize(void);
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents: 1414
diff changeset
196 extern int dump_plat_addr(void);
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents: 1414
diff changeset
197 extern void dump_plat_pfn(void);
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents: 1414
diff changeset
198 extern int dump_plat_data(void *);
12979
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 12943
diff changeset
199 extern int dump_set_uuid(const char *);
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 12943
diff changeset
200 extern const char *dump_get_uuid(void);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
201
10843
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
202 /*
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
203 * Define a CPU count threshold that determines when to employ
12943
2acab560865a 6967825 panic "sync initiated" can hang attempting a crash dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 12640
diff changeset
204 * bzip2. This value is defined per-platform.
10843
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
205 */
12943
2acab560865a 6967825 panic "sync initiated" can hang attempting a crash dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 12640
diff changeset
206 extern uint_t dump_plat_mincpu_default;
10843
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
207
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
208 #define DUMP_PLAT_SUN4U_MINCPU 51
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
209 #define DUMP_PLAT_SUN4U_OPL_MINCPU 8
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
210 #define DUMP_PLAT_SUN4V_MINCPU 128
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
211 #define DUMP_PLAT_X86_64_MINCPU 11
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
212 #define DUMP_PLAT_X86_32_MINCPU 0
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
213
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
214 /*
12943
2acab560865a 6967825 panic "sync initiated" can hang attempting a crash dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 12640
diff changeset
215 * Override the per-platform default by setting this variable with
2acab560865a 6967825 panic "sync initiated" can hang attempting a crash dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 12640
diff changeset
216 * /etc/system. The value 0 disables parallelism, and the old format
2acab560865a 6967825 panic "sync initiated" can hang attempting a crash dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 12640
diff changeset
217 * dump is produced.
2acab560865a 6967825 panic "sync initiated" can hang attempting a crash dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 12640
diff changeset
218 */
2acab560865a 6967825 panic "sync initiated" can hang attempting a crash dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 12640
diff changeset
219 extern uint_t dump_plat_mincpu;
2acab560865a 6967825 panic "sync initiated" can hang attempting a crash dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 12640
diff changeset
220
2acab560865a 6967825 panic "sync initiated" can hang attempting a crash dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 12640
diff changeset
221 /*
10843
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
222 * Pages may be stolen at dump time. Prevent the pages from ever being
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
223 * allocated while dump is running.
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
224 */
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
225 #define IS_DUMP_PAGE(pp) (dump_check_used && dump_test_used((pp)->p_pagenum))
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
226
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
227 extern int dump_test_used(pfn_t);
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
228 extern int dump_check_used;
eb166ea6e74e 6828976 Fast Crash Dump
Dave Plauger <Dave.Plauger@Sun.COM>
parents: 6423
diff changeset
229
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
230 #endif /* _KERNEL */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
231
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
232 #ifdef __cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
233 }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
234 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
235
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
236 #endif /* _SYS_DUMPHDR_H */