The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/include/sys/fm/protocol.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * CDDL HEADER START
    3  *
    4  * The contents of this file are subject to the terms of the
    5  * Common Development and Distribution License (the "License").
    6  * You may not use this file except in compliance with the License.
    7  *
    8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    9  * or https://opensource.org/licenses/CDDL-1.0.
   10  * See the License for the specific language governing permissions
   11  * and limitations under the License.
   12  *
   13  * When distributing Covered Code, include this CDDL HEADER in each
   14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
   15  * If applicable, add the following below this CDDL HEADER, with the
   16  * fields enclosed by brackets "[]" replaced with your own identifying
   17  * information: Portions Copyright [yyyy] [name of copyright owner]
   18  *
   19  * CDDL HEADER END
   20  */
   21 
   22 /*
   23  * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
   24  */
   25 
   26 #ifndef _SYS_FM_PROTOCOL_H
   27 #define _SYS_FM_PROTOCOL_H
   28 
   29 #ifdef  __cplusplus
   30 extern "C" {
   31 #endif
   32 
   33 #ifdef _KERNEL
   34 #include <sys/nvpair.h>
   35 #else
   36 #include <libnvpair.h>
   37 #include <stdarg.h>
   38 #endif
   39 #include <sys/processor.h>
   40 
   41 /* FM common member names */
   42 #define FM_CLASS                        "class"
   43 #define FM_VERSION                      "version"
   44 
   45 /* FM protocol category 1 class names */
   46 #define FM_EREPORT_CLASS                "ereport"
   47 #define FM_FAULT_CLASS                  "fault"
   48 #define FM_DEFECT_CLASS                 "defect"
   49 #define FM_RSRC_CLASS                   "resource"
   50 #define FM_LIST_EVENT                   "list"
   51 #define FM_IREPORT_CLASS                "ireport"
   52 #define FM_SYSEVENT_CLASS               "sysevent"
   53 
   54 /* FM list.* event class values */
   55 #define FM_LIST_SUSPECT_CLASS           FM_LIST_EVENT ".suspect"
   56 #define FM_LIST_ISOLATED_CLASS          FM_LIST_EVENT ".isolated"
   57 #define FM_LIST_REPAIRED_CLASS          FM_LIST_EVENT ".repaired"
   58 #define FM_LIST_UPDATED_CLASS           FM_LIST_EVENT ".updated"
   59 #define FM_LIST_RESOLVED_CLASS          FM_LIST_EVENT ".resolved"
   60 
   61 /* ereport class subcategory values */
   62 #define FM_ERROR_CPU                    "cpu"
   63 #define FM_ERROR_IO                     "io"
   64 
   65 /* ereport version and payload member names */
   66 #define FM_EREPORT_VERS0                0
   67 #define FM_EREPORT_VERSION              FM_EREPORT_VERS0
   68 
   69 /* ereport payload member names */
   70 #define FM_EREPORT_DETECTOR             "detector"
   71 #define FM_EREPORT_ENA                  "ena"
   72 #define FM_EREPORT_TIME                 "time"
   73 #define FM_EREPORT_EID                  "eid"
   74 
   75 /* list.* event payload member names */
   76 #define FM_LIST_EVENT_SIZE              "list-sz"
   77 
   78 /* ireport.* event payload member names */
   79 #define FM_IREPORT_DETECTOR             "detector"
   80 #define FM_IREPORT_UUID                 "uuid"
   81 #define FM_IREPORT_PRIORITY             "pri"
   82 #define FM_IREPORT_ATTRIBUTES           "attr"
   83 
   84 /*
   85  * list.suspect, isolated, updated, repaired and resolved
   86  * versions/payload member names.
   87  */
   88 #define FM_SUSPECT_UUID                 "uuid"
   89 #define FM_SUSPECT_DIAG_CODE            "code"
   90 #define FM_SUSPECT_DIAG_TIME            "diag-time"
   91 #define FM_SUSPECT_DE                   "de"
   92 #define FM_SUSPECT_FAULT_LIST           "fault-list"
   93 #define FM_SUSPECT_FAULT_SZ             "fault-list-sz"
   94 #define FM_SUSPECT_FAULT_STATUS         "fault-status"
   95 #define FM_SUSPECT_INJECTED             "__injected"
   96 #define FM_SUSPECT_MESSAGE              "message"
   97 #define FM_SUSPECT_RETIRE               "retire"
   98 #define FM_SUSPECT_RESPONSE             "response"
   99 #define FM_SUSPECT_SEVERITY             "severity"
  100 
  101 #define FM_SUSPECT_VERS0                0
  102 #define FM_SUSPECT_VERSION              FM_SUSPECT_VERS0
  103 
  104 #define FM_SUSPECT_FAULTY               0x1
  105 #define FM_SUSPECT_UNUSABLE             0x2
  106 #define FM_SUSPECT_NOT_PRESENT          0x4
  107 #define FM_SUSPECT_DEGRADED             0x8
  108 #define FM_SUSPECT_REPAIRED             0x10
  109 #define FM_SUSPECT_REPLACED             0x20
  110 #define FM_SUSPECT_ACQUITTED            0x40
  111 
  112 /* fault event versions and payload member names */
  113 #define FM_FAULT_VERS0                  0
  114 #define FM_FAULT_VERSION                FM_FAULT_VERS0
  115 
  116 #define FM_FAULT_ASRU                   "asru"
  117 #define FM_FAULT_FRU                    "fru"
  118 #define FM_FAULT_FRU_LABEL              "fru-label"
  119 #define FM_FAULT_CERTAINTY              "certainty"
  120 #define FM_FAULT_RESOURCE               "resource"
  121 #define FM_FAULT_LOCATION               "location"
  122 
  123 /* resource event versions and payload member names */
  124 #define FM_RSRC_VERS0                   0
  125 #define FM_RSRC_VERSION                 FM_RSRC_VERS0
  126 #define FM_RSRC_RESOURCE                "resource"
  127 
  128 /* resource.fm.asru.* payload member names */
  129 #define FM_RSRC_ASRU_UUID               "uuid"
  130 #define FM_RSRC_ASRU_CODE               "code"
  131 #define FM_RSRC_ASRU_FAULTY             "faulty"
  132 #define FM_RSRC_ASRU_REPAIRED           "repaired"
  133 #define FM_RSRC_ASRU_REPLACED           "replaced"
  134 #define FM_RSRC_ASRU_ACQUITTED          "acquitted"
  135 #define FM_RSRC_ASRU_RESOLVED           "resolved"
  136 #define FM_RSRC_ASRU_UNUSABLE           "unusable"
  137 #define FM_RSRC_ASRU_EVENT              "event"
  138 
  139 /* resource.fm.xprt.* versions and payload member names */
  140 #define FM_RSRC_XPRT_VERS0              0
  141 #define FM_RSRC_XPRT_VERSION            FM_RSRC_XPRT_VERS0
  142 #define FM_RSRC_XPRT_UUID               "uuid"
  143 #define FM_RSRC_XPRT_SUBCLASS           "subclass"
  144 #define FM_RSRC_XPRT_FAULT_STATUS       "fault-status"
  145 #define FM_RSRC_XPRT_FAULT_HAS_ASRU     "fault-has-asru"
  146 
  147 /*
  148  * FM ENA Format Macros
  149  */
  150 #define ENA_FORMAT_MASK                 0x3
  151 #define ENA_FORMAT(ena)                 ((ena) & ENA_FORMAT_MASK)
  152 
  153 /* ENA format types */
  154 #define FM_ENA_FMT0                     0
  155 #define FM_ENA_FMT1                     1
  156 #define FM_ENA_FMT2                     2
  157 
  158 /* Format 1 */
  159 #define ENA_FMT1_GEN_MASK               0x00000000000003FCull
  160 #define ENA_FMT1_ID_MASK                0xFFFFFFFFFFFFFC00ull
  161 #define ENA_FMT1_CPUID_MASK             0x00000000000FFC00ull
  162 #define ENA_FMT1_TIME_MASK              0xFFFFFFFFFFF00000ull
  163 #define ENA_FMT1_GEN_SHFT               2
  164 #define ENA_FMT1_ID_SHFT                10
  165 #define ENA_FMT1_CPUID_SHFT             ENA_FMT1_ID_SHFT
  166 #define ENA_FMT1_TIME_SHFT              20
  167 
  168 /* Format 2 */
  169 #define ENA_FMT2_GEN_MASK               0x00000000000003FCull
  170 #define ENA_FMT2_ID_MASK                0xFFFFFFFFFFFFFC00ull
  171 #define ENA_FMT2_TIME_MASK              ENA_FMT2_ID_MASK
  172 #define ENA_FMT2_GEN_SHFT               2
  173 #define ENA_FMT2_ID_SHFT                10
  174 #define ENA_FMT2_TIME_SHFT              ENA_FMT2_ID_SHFT
  175 
  176 /* Common FMRI type names */
  177 #define FM_FMRI_AUTHORITY               "authority"
  178 #define FM_FMRI_SCHEME                  "scheme"
  179 #define FM_FMRI_SVC_AUTHORITY           "svc-authority"
  180 #define FM_FMRI_FACILITY                "facility"
  181 
  182 /* FMRI authority-type member names */
  183 #define FM_FMRI_AUTH_CHASSIS            "chassis-id"
  184 #define FM_FMRI_AUTH_PRODUCT_SN         "product-sn"
  185 #define FM_FMRI_AUTH_PRODUCT            "product-id"
  186 #define FM_FMRI_AUTH_DOMAIN             "domain-id"
  187 #define FM_FMRI_AUTH_SERVER             "server-id"
  188 #define FM_FMRI_AUTH_HOST               "host-id"
  189 
  190 #define FM_AUTH_VERS0                   0
  191 #define FM_FMRI_AUTH_VERSION            FM_AUTH_VERS0
  192 
  193 /* scheme name values */
  194 #define FM_FMRI_SCHEME_FMD              "fmd"
  195 #define FM_FMRI_SCHEME_DEV              "dev"
  196 #define FM_FMRI_SCHEME_HC               "hc"
  197 #define FM_FMRI_SCHEME_SVC              "svc"
  198 #define FM_FMRI_SCHEME_CPU              "cpu"
  199 #define FM_FMRI_SCHEME_MEM              "mem"
  200 #define FM_FMRI_SCHEME_MOD              "mod"
  201 #define FM_FMRI_SCHEME_PKG              "pkg"
  202 #define FM_FMRI_SCHEME_LEGACY           "legacy-hc"
  203 #define FM_FMRI_SCHEME_ZFS              "zfs"
  204 #define FM_FMRI_SCHEME_SW               "sw"
  205 
  206 /* Scheme versions */
  207 #define FMD_SCHEME_VERSION0             0
  208 #define FM_FMD_SCHEME_VERSION           FMD_SCHEME_VERSION0
  209 #define DEV_SCHEME_VERSION0             0
  210 #define FM_DEV_SCHEME_VERSION           DEV_SCHEME_VERSION0
  211 #define FM_HC_VERS0                     0
  212 #define FM_HC_SCHEME_VERSION            FM_HC_VERS0
  213 #define CPU_SCHEME_VERSION0             0
  214 #define CPU_SCHEME_VERSION1             1
  215 #define FM_CPU_SCHEME_VERSION           CPU_SCHEME_VERSION1
  216 #define MEM_SCHEME_VERSION0             0
  217 #define FM_MEM_SCHEME_VERSION           MEM_SCHEME_VERSION0
  218 #define MOD_SCHEME_VERSION0             0
  219 #define FM_MOD_SCHEME_VERSION           MOD_SCHEME_VERSION0
  220 #define PKG_SCHEME_VERSION0             0
  221 #define FM_PKG_SCHEME_VERSION           PKG_SCHEME_VERSION0
  222 #define LEGACY_SCHEME_VERSION0          0
  223 #define FM_LEGACY_SCHEME_VERSION        LEGACY_SCHEME_VERSION0
  224 #define SVC_SCHEME_VERSION0             0
  225 #define FM_SVC_SCHEME_VERSION           SVC_SCHEME_VERSION0
  226 #define ZFS_SCHEME_VERSION0             0
  227 #define FM_ZFS_SCHEME_VERSION           ZFS_SCHEME_VERSION0
  228 #define SW_SCHEME_VERSION0              0
  229 #define FM_SW_SCHEME_VERSION            SW_SCHEME_VERSION0
  230 
  231 /* hc scheme member names */
  232 #define FM_FMRI_HC_SERIAL_ID            "serial"
  233 #define FM_FMRI_HC_PART                 "part"
  234 #define FM_FMRI_HC_REVISION             "revision"
  235 #define FM_FMRI_HC_ROOT                 "hc-root"
  236 #define FM_FMRI_HC_LIST_SZ              "hc-list-sz"
  237 #define FM_FMRI_HC_LIST                 "hc-list"
  238 #define FM_FMRI_HC_SPECIFIC             "hc-specific"
  239 
  240 /* facility member names */
  241 #define FM_FMRI_FACILITY_NAME           "facility-name"
  242 #define FM_FMRI_FACILITY_TYPE           "facility-type"
  243 
  244 /* hc-list version and member names */
  245 #define FM_FMRI_HC_NAME                 "hc-name"
  246 #define FM_FMRI_HC_ID                   "hc-id"
  247 
  248 #define HC_LIST_VERSION0                0
  249 #define FM_HC_LIST_VERSION              HC_LIST_VERSION0
  250 
  251 /* hc-specific member names */
  252 #define FM_FMRI_HC_SPECIFIC_OFFSET      "offset"
  253 #define FM_FMRI_HC_SPECIFIC_PHYSADDR    "physaddr"
  254 
  255 /* fmd module scheme member names */
  256 #define FM_FMRI_FMD_NAME                "mod-name"
  257 #define FM_FMRI_FMD_VERSION             "mod-version"
  258 
  259 /* dev scheme member names */
  260 #define FM_FMRI_DEV_ID                  "devid"
  261 #define FM_FMRI_DEV_TGTPTLUN0           "target-port-l0id"
  262 #define FM_FMRI_DEV_PATH                "device-path"
  263 
  264 /* pkg scheme member names */
  265 #define FM_FMRI_PKG_BASEDIR             "pkg-basedir"
  266 #define FM_FMRI_PKG_INST                "pkg-inst"
  267 #define FM_FMRI_PKG_VERSION             "pkg-version"
  268 
  269 /* svc scheme member names */
  270 #define FM_FMRI_SVC_NAME                "svc-name"
  271 #define FM_FMRI_SVC_INSTANCE            "svc-instance"
  272 #define FM_FMRI_SVC_CONTRACT_ID         "svc-contract-id"
  273 
  274 /* svc-authority member names */
  275 #define FM_FMRI_SVC_AUTH_SCOPE          "scope"
  276 #define FM_FMRI_SVC_AUTH_SYSTEM_FQN     "system-fqn"
  277 
  278 /* cpu scheme member names */
  279 #define FM_FMRI_CPU_ID                  "cpuid"
  280 #define FM_FMRI_CPU_SERIAL_ID           "serial"
  281 #define FM_FMRI_CPU_MASK                "cpumask"
  282 #define FM_FMRI_CPU_VID                 "cpuvid"
  283 #define FM_FMRI_CPU_CPUFRU              "cpufru"
  284 #define FM_FMRI_CPU_CACHE_INDEX         "cacheindex"
  285 #define FM_FMRI_CPU_CACHE_WAY           "cacheway"
  286 #define FM_FMRI_CPU_CACHE_BIT           "cachebit"
  287 #define FM_FMRI_CPU_CACHE_TYPE          "cachetype"
  288 
  289 #define FM_FMRI_CPU_CACHE_TYPE_L2       0
  290 #define FM_FMRI_CPU_CACHE_TYPE_L3       1
  291 
  292 /* legacy-hc scheme member names */
  293 #define FM_FMRI_LEGACY_HC               "component"
  294 #define FM_FMRI_LEGACY_HC_PREFIX        FM_FMRI_SCHEME_HC":///" \
  295     FM_FMRI_LEGACY_HC"="
  296 
  297 /* mem scheme member names */
  298 #define FM_FMRI_MEM_UNUM                "unum"
  299 #define FM_FMRI_MEM_SERIAL_ID           "serial"
  300 #define FM_FMRI_MEM_PHYSADDR            "physaddr"
  301 #define FM_FMRI_MEM_MEMCONFIG           "memconfig"
  302 #define FM_FMRI_MEM_OFFSET              "offset"
  303 
  304 /* mod scheme member names */
  305 #define FM_FMRI_MOD_PKG                 "mod-pkg"
  306 #define FM_FMRI_MOD_NAME                "mod-name"
  307 #define FM_FMRI_MOD_ID                  "mod-id"
  308 #define FM_FMRI_MOD_DESC                "mod-desc"
  309 
  310 /* zfs scheme member names */
  311 #define FM_FMRI_ZFS_POOL                "pool"
  312 #define FM_FMRI_ZFS_VDEV                "vdev"
  313 
  314 /* sw scheme member names - extra indentation for members of an nvlist */
  315 #define FM_FMRI_SW_OBJ                  "object"
  316 #define FM_FMRI_SW_OBJ_PATH                     "path"
  317 #define FM_FMRI_SW_OBJ_ROOT                     "root"
  318 #define FM_FMRI_SW_OBJ_PKG                      "pkg"
  319 #define FM_FMRI_SW_SITE                 "site"
  320 #define FM_FMRI_SW_SITE_TOKEN                   "token"
  321 #define FM_FMRI_SW_SITE_MODULE                  "module"
  322 #define FM_FMRI_SW_SITE_FILE                    "file"
  323 #define FM_FMRI_SW_SITE_LINE                    "line"
  324 #define FM_FMRI_SW_SITE_FUNC                    "func"
  325 #define FM_FMRI_SW_CTXT                 "context"
  326 #define FM_FMRI_SW_CTXT_ORIGIN                  "origin"
  327 #define FM_FMRI_SW_CTXT_EXECNAME                "execname"
  328 #define FM_FMRI_SW_CTXT_PID                     "pid"
  329 #define FM_FMRI_SW_CTXT_ZONE                    "zone"
  330 #define FM_FMRI_SW_CTXT_CTID                    "ctid"
  331 #define FM_FMRI_SW_CTXT_STACK                   "stack"
  332 #define FM_NVA_FREE             0       /* free allocator on nvlist_destroy */
  333 #define FM_NVA_RETAIN           1       /* keep allocator on nvlist_destroy */
  334 
  335 extern nv_alloc_t *fm_nva_xcreate(char *, size_t);
  336 extern void fm_nva_xdestroy(nv_alloc_t *);
  337 extern nvlist_t *fm_nvlist_create(nv_alloc_t *);
  338 extern void fm_nvlist_destroy(nvlist_t *, int);
  339 extern void fm_ereport_set(nvlist_t *, int, const char *, uint64_t,
  340     const nvlist_t *, ...);
  341 extern void fm_payload_set(nvlist_t *, ...);
  342 extern int i_fm_payload_set(nvlist_t *, const char *, va_list);
  343 extern void fm_fmri_hc_set(nvlist_t *, int, const nvlist_t *, nvlist_t *,
  344     int, ...);
  345 extern void fm_fmri_dev_set(nvlist_t *, int, const nvlist_t *, const char *,
  346     const char *, const char *);
  347 extern void fm_fmri_de_set(nvlist_t *, int, const nvlist_t *, const char *);
  348 extern void fm_fmri_cpu_set(nvlist_t *, int, const nvlist_t *, uint32_t,
  349     uint8_t *, const char *);
  350 extern void fm_fmri_mem_set(nvlist_t *, int, const nvlist_t *, const char *,
  351     const char *, uint64_t);
  352 extern void fm_fmri_zfs_set(nvlist_t *, int, uint64_t, uint64_t);
  353 extern void fm_fmri_hc_create(nvlist_t *, int, const nvlist_t *, nvlist_t *,
  354     nvlist_t *, int, ...);
  355 
  356 extern uint64_t fm_ena_increment(uint64_t);
  357 extern uint64_t fm_ena_generate(uint64_t, uchar_t);
  358 extern uint64_t fm_ena_generate_cpu(uint64_t, processorid_t, uchar_t);
  359 extern uint64_t fm_ena_generation_get(uint64_t);
  360 extern uchar_t fm_ena_format_get(uint64_t);
  361 extern uint64_t fm_ena_id_get(uint64_t);
  362 extern uint64_t fm_ena_time_get(uint64_t);
  363 extern void fm_erpt_dropped_increment(void);
  364 
  365 #ifdef  __cplusplus
  366 }
  367 #endif
  368 
  369 #endif /* _SYS_FM_PROTOCOL_H */

Cache object: 94ca0a8790bf52d9c7e8ee6c33da8d60


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.