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/util.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_UTIL_H
   27 #define _SYS_FM_UTIL_H
   28 
   29 #ifdef  __cplusplus
   30 extern "C" {
   31 #endif
   32 
   33 #include <sys/nvpair.h>
   34 #include <sys/zfs_file.h>
   35 
   36 /*
   37  * Shared user/kernel definitions for class length, error channel name,
   38  * and kernel event publisher string.
   39  */
   40 #define FM_MAX_CLASS 100
   41 #define FM_ERROR_CHAN   "com.sun:fm:error"
   42 #define FM_PUB          "fm"
   43 
   44 /*
   45  * ereport dump device transport support
   46  *
   47  * Ereports are written out to the dump device at a proscribed offset from the
   48  * end, similar to in-transit log messages.  The ereports are represented as a
   49  * erpt_dump_t header followed by ed_size bytes of packed native nvlist data.
   50  *
   51  * NOTE: All of these constants and the header must be defined so they have the
   52  * same representation for *both* 32-bit and 64-bit producers and consumers.
   53  */
   54 #define ERPT_MAGIC      0xf00d4eddU
   55 #define ERPT_MAX_ERRS   16
   56 #define ERPT_DATA_SZ    (6 * 1024)
   57 #define ERPT_EVCH_MAX   256
   58 #define ERPT_HIWAT      64
   59 
   60 typedef struct erpt_dump {
   61         uint32_t ed_magic;      /* ERPT_MAGIC or zero to indicate end */
   62         uint32_t ed_chksum;     /* checksum32() of packed nvlist data */
   63         uint32_t ed_size;       /* ereport (nvl) fixed buf size */
   64         uint32_t ed_pad;        /* reserved for future use */
   65         hrtime_t ed_hrt_nsec;   /* hrtime of this ereport */
   66         hrtime_t ed_hrt_base;   /* hrtime sample corresponding to ed_tod_base */
   67         struct {
   68                 uint64_t sec;   /* seconds since gettimeofday() Epoch */
   69                 uint64_t nsec;  /* nanoseconds past ed_tod_base.sec */
   70         } ed_tod_base;
   71 } erpt_dump_t;
   72 
   73 #ifdef _KERNEL
   74 
   75 #define ZEVENT_SHUTDOWN         0x1
   76 
   77 typedef void zevent_cb_t(nvlist_t *, nvlist_t *);
   78 
   79 typedef struct zevent_s {
   80         nvlist_t        *ev_nvl;        /* protected by the zevent_lock */
   81         nvlist_t        *ev_detector;   /* " */
   82         list_t          ev_ze_list;     /* " */
   83         list_node_t     ev_node;        /* " */
   84         zevent_cb_t     *ev_cb;         /* " */
   85         uint64_t        ev_eid;
   86 } zevent_t;
   87 
   88 typedef struct zfs_zevent {
   89         zevent_t        *ze_zevent;     /* protected by the zevent_lock */
   90         list_node_t     ze_node;        /* " */
   91         uint64_t        ze_dropped;     /* " */
   92 } zfs_zevent_t;
   93 
   94 extern void fm_init(void);
   95 extern void fm_fini(void);
   96 extern void zfs_zevent_post_cb(nvlist_t *nvl, nvlist_t *detector);
   97 extern int zfs_zevent_post(nvlist_t *, nvlist_t *, zevent_cb_t *);
   98 extern void zfs_zevent_drain_all(uint_t *);
   99 extern zfs_file_t *zfs_zevent_fd_hold(int, minor_t *, zfs_zevent_t **);
  100 extern void zfs_zevent_fd_rele(zfs_file_t *);
  101 extern int zfs_zevent_next(zfs_zevent_t *, nvlist_t **, uint64_t *, uint64_t *);
  102 extern int zfs_zevent_wait(zfs_zevent_t *);
  103 extern int zfs_zevent_seek(zfs_zevent_t *, uint64_t);
  104 extern void zfs_zevent_init(zfs_zevent_t **);
  105 extern void zfs_zevent_destroy(zfs_zevent_t *);
  106 
  107 extern void zfs_zevent_track_duplicate(void);
  108 extern void zfs_ereport_init(void);
  109 extern void zfs_ereport_fini(void);
  110 #else
  111 
  112 static inline void fm_init(void) { }
  113 static inline void fm_fini(void) { }
  114 
  115 #endif  /* _KERNEL */
  116 
  117 #ifdef  __cplusplus
  118 }
  119 #endif
  120 
  121 #endif /* _SYS_FM_UTIL_H */

Cache object: 58a1e9da37441f591abb7048749629fd


[ 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.