25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen/*
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * CDDL HEADER START
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen *
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * The contents of this file are subject to the terms of the
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * Common Development and Distribution License (the "License").
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * You may not use this file except in compliance with the License.
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen *
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * or http://www.opensolaris.org/os/licensing.
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * See the License for the specific language governing permissions
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * and limitations under the License.
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen *
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * When distributing Covered Code, include this CDDL HEADER in each
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * If applicable, add the following below this CDDL HEADER, with the
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * fields enclosed by brackets "[]" replaced with your own identifying
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * information: Portions Copyright [yyyy] [name of copyright owner]
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen *
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * CDDL HEADER END
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen/*
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * Use is subject to license terms.
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen/*
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * etm_ckpt.h
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen *
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * Header file of checkpointing ereports for persistence
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen *
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#ifndef _ETM_CKPT_H
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#define _ETM_CKPT_H
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#ifdef __cplusplus
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyenextern "C" {
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#endif
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#include <fm/fmd_api.h>
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#define ETM_CKPT_VERSION 0x10
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#define ETM_CKPT_ERPT_PREFIX "ev"
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#define ETM_LINE_LEN 256
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen/*
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * Format of a named buffer that stores an ereport.
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyentypedef struct etm_ckpt_erpt_buf {
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint8_t eb_ver; /* version major.minor */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint8_t eb_rev; /* reserved field */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint16_t eb_len; /* size of packed ereport */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen /* nvlist packed erpt event */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen} etm_ckpt_erpt_buf_t;
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen/*
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * Ereport id
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * Each ereport, which is stored in a named buffer, is uniquely identified by
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * fields in the ereport. The named buffer name is derived from this struct
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * as following
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * ev_${ena}_${hash{class)}_${tod[1]}_${primary}
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyentypedef struct etm_ckpt_erpt_id {
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint64_t ei_ena; /* ereport ena */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint32_t ei_tod1; /* tod[1]: fractional second */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint16_t ei_hash; /* hash(ereport class name) */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint8_t ei_pri; /* primary field */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint8_t ei_rev; /* reserved field */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen} etm_ckpt_erpt_id_t;
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen/*
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * A circular list of ereport ids
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyentypedef struct etm_ckpt_id_list {
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint8_t il_ver; /* version major.minor */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint8_t il_rev1; /* reserve field */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint16_t il_max; /* max number of erpt ids in list */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint16_t il_cnt; /* number of valid ids in list */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint16_t il_head; /* head of the list */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint16_t il_tail; /* tail of the list */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint16_t il_ids_sz; /* size of the array of ids */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen uint32_t il_rev2; /* reserve field */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen /* array of ids */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen} etm_ckpt_id_list_t;
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#define ETM_CKPT_IL_BUF "idlist"
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#define ETM_CKPT_IL_MIN_SIZE 0x8
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen/*
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen * Checkpoint options
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen */
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#define ETM_CKPT_NOOP 0x0
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#define ETM_CKPT_SAVE 0x1
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#define ETM_CKPT_RESTORE 0x2
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyenvoid etm_ckpt_recover(fmd_hdl_t *hdl);
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyenint etm_ckpt_add(fmd_hdl_t *hdl, nvlist_t *evp);
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyenint etm_ckpt_delete(fmd_hdl_t *hdl, nvlist_t *evp);
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyenvoid etm_ckpt_init(fmd_hdl_t *hdl);
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyenvoid etm_ckpt_fini(fmd_hdl_t *hdl);
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#ifdef __cplusplus
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen}
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#endif
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen#endif /* _ETM_CKPT_H */