4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * CDDL HEADER START
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * The contents of this file are subject to the terms of the
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * Common Development and Distribution License (the "License").
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * You may not use this file except in compliance with the License.
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * See the License for the specific language governing permissions
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * and limitations under the License.
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * When distributing Covered Code, include this CDDL HEADER in each
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * If applicable, add the following below this CDDL HEADER, with the
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * fields enclosed by brackets "[]" replaced with your own identifying
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * information: Portions Copyright [yyyy] [name of copyright owner]
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * CDDL HEADER END
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * Telco-alarm library, which communicates through libpcp to set/get
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard/* Message Types */
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard#define TSALARM_SERVICE_NAME "SUNW,sun4v-telco-alarm"
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willardtsalarm_get(uint32_t alarm_type, uint32_t *alarm_state)
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard /* initialize virtual channel */
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard for (retries = 1; retries <= TSALARM_MAX_RETRIES; retries++) {
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard if ((chnl_fd = pcp_init(TSALARM_SERVICE_NAME)) < 0) {
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard /* create request message data */
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * Send the request and receive the response.
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard /* we either timed out or erred; either way try again */
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough * verify that the Alarm action has taken place
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough if ((resp_ptr = (tsalarm_resp_t *)recv_msg.msg_data) == NULL)
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough * validate that this data was meant for us
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough if (recv_msg.msg_type != TSALARM_CONTROL_R) {
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard if (resp_ptr->alarm_state == TSALARM_STATE_UNKNOWN) {
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough /* free recv_msg.msg_data through pointer to make sure it is valid */
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard /* close virtual channel fd */
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willardtsalarm_set(uint32_t alarm_type, uint32_t alarm_state)
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard /* initialize virtual channel */
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard for (retries = 1; retries <= TSALARM_MAX_RETRIES; retries++) {
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard if ((chnl_fd = pcp_init(TSALARM_SERVICE_NAME)) < 0) {
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard /* create request message data */
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * Send the request and receive the response.
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard /* we either timed out or erred; either way try again */
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough * verify that the Alarm action has taken place
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough if ((resp_ptr = (tsalarm_resp_t *)recv_msg.msg_data) == NULL)
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough * validate that this data was meant for us
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough if (recv_msg.msg_type != TSALARM_CONTROL_R) {
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard * ensure the Alarm action taken is the one requested
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard } else if ((req_ptr->alarm_action == TSALARM_ENABLE) &&
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard } else if (resp_ptr->alarm_state == TSALARM_STATE_UNKNOWN) {
dc5982c9e1ebe3315aac975f1c4f1ad46c83c2d2Carl Chesbrough /* free recv_msg.msg_data through pointer to make sure it is valid */
4a6822d07d6d3f9ffe6907ef5f10d11dcadd75c6willard /* close virtual channel fd */