cmd_state.c revision c498d9365aa68b789215f4f356a9935f70b0fb3b
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * CDDL HEADER START
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * The contents of this file are subject to the terms of the
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * Common Development and Distribution License (the "License").
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * You may not use this file except in compliance with the License.
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * See the License for the specific language governing permissions
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * and limitations under the License.
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * When distributing Covered Code, include this CDDL HEADER in each
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * If applicable, add the following below this CDDL HEADER, with the
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * fields enclosed by brackets "[]" replaced with your own identifying
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * information: Portions Copyright [yyyy] [name of copyright owner]
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * CDDL HEADER END
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * Use is subject to license terms.
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock#pragma ident "%Z%%M% %I% %E% SMI"
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * Case management and saved state restoration
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock/* Must be in sync with cmd_ptrsubtype_t */
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockstatic cmd_case_closer_f *const cmd_case_closers[] = {
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockcmd_case_create(fmd_hdl_t *hdl, cmd_header_t *hdr, cmd_ptrsubtype_t ptrsubtype,
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock const char **uuidp)
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock cl = fmd_hdl_alloc(hdl, sizeof (cmd_case_closer_t), FMD_SLEEP);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock fmd_buf_write(hdl, cp, *uuidp, &ptr, sizeof (cmd_case_ptr_t));
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockcmd_case_redirect(fmd_hdl_t *hdl, fmd_case_t *cp, cmd_ptrsubtype_t newsubtype)
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock fmd_buf_read(hdl, cp, uuid, &ptr, sizeof (cmd_case_ptr_t));
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock fmd_hdl_debug(hdl, "redirecting case %s from %d to %d\n", uuid,
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock fmd_buf_write(hdl, cp, uuid, &ptr, sizeof (cmd_case_ptr_t));
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockcmd_case_fini(fmd_hdl_t *hdl, fmd_case_t *cp, int close)
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock cmd_case_closer_t *cl = fmd_case_getspecific(hdl, cp);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock/* Must be in sync with cmd_nodetype_t */
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockstatic cmd_case_restorer_f *const cmd_case_restorers[] = {
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock fmd_buf_read(hdl, cp, fmd_case_uuid(hdl, cp), &ptr,
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock fmd_hdl_debug(hdl, "Unable to restore case %s\n", uuid);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock cl = fmd_hdl_alloc(hdl, sizeof (cmd_case_closer_t), FMD_SLEEP);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * cmd_dp_page_validate() must be done before cmd_dp_validate()
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * and cmd_page_validate()
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock return (0);