Copyright (c) 2007, Sun Microsystems Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
cc [ flag... ] file... -ltsalarm [ library... ] #include <tsalarm.h> int tsalarm_get(uint32_t alarm_type, uint32_t *alarm_state);
int tsalarm_set(uint32_t alarm_type, uint32_t alarm_state);
alarm_type
The alarm type whose state is retrieved or set. Valid settings are:
TSALARM_CRITICAL
critical
TSALARM_MAJOR
major
TSALARM_MINOR
minor
TSALARM_USER
user
alarm_state
The state of the alarm. Valid settings are:
TSALARM_STATE_ON
The alarm state needs to be changed to "on", or is returned as "on".
TSALARM_STATE_OFF
The alarm state needs to be changed to "off", or is returned as "off".
TSALARM_STATE_UNKNOWN
The alarm state is returned as unknown.
The TSALARM interface provides functions through which alarm relays can be controlled. The set of functions and data structures of this interface are defined in the <tsalarm.h> header.
There are four alarm relays that are controlled by ILOM. Each alarm can be set to "on" or "off" by using tsalarm interfaces provided from the host. The four alarms are labeled as critical, major, minor, and user. The user alarm is set by a user application depending on system condition. LEDs in front of the box provide a visual indication of the four alarms. The number of alarms and their meanings and labels can vary across platforms.
The tsalarm_get() function gets the state of alarm_type and returnsit in alarm_state. If successful, the function returns 0.
The tsalarm_set() function sets the state of alarm_type to the value in alarm_state. If successful, the function returns 0.
The following structures are defined in <tsalarm.h>:
typedef struct tsalarm_req { uint32_t alarm_id; uint32_t alarm_action; } tsalarm_req_t;
typedef struct tsalarm_resp { uint32_t status; uint32_t alarm_id; uint32_t alarm_state; } tsalarm_resp_t;
The tsalarm_get() and tsalarm_set() functions return the following values:
TSALARM_CHANNEL_INIT_FAILURE
Channel initialization failed.
TSALARM_COMM_FAILURE
Channel communication failed.
TSALARM_NULL_REQ_DATA
Allocating memory for request data failed.
TSALARM_SUCCESS
Successful completion.
TSALARM_UNBOUND_PACKET_RECVD
An incorrect packet was received.
The tsalarm_get() function returns the following value:
TSALARM_GET_ERROR
An error occurred while getting the alarm state.
The tsalarm_set() function returns the following value:
TSALARM_SET_ERROR
An error occurred while setting the alarm state.
Example 1 Get and set an alarm state.
The following example demonstrates how to get and set an alarm state.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <tsalarm.h> void help(char *name) { printf("Syntax: %s [get <type> | set <type> <state>]\en\en", name); printf(" type = { critical, major, minor, user }\en"); printf(" state = { on, off }\en\en"); exit(0); } int main(int argc, char **argv) { uint32_t alarm_type, alarm_state; if (argc < 3) help(argv[0]); if (strncmp(argv[2], "critical", 1) == 0) alarm_type = TSALARM_CRITICAL; else if (strncmp(argv[2], "major", 2) == 0) alarm_type = TSALARM_MAJOR; else if (strncmp(argv[2], "minor", 2) == 0) alarm_type = TSALARM_MINOR; else if (strncmp(argv[2], "user", 1) == 0) alarm_type = TSALARM_USER; else help(argv[0]); if (strncmp(argv[1], "get", 1) == 0) { tsalarm_get(alarm_type, &alarm_state); printf("alarm = %d\etstate = %d\en", alarm_type, alarm_state); } else if (strncmp(argv[1], "set", 1) == 0) { if (strncmp(argv[3], "on", 2) == 0) alarm_state = TSALARM_STATE_ON; else if (strncmp(argv[3], "off", 2) == 0) alarm_state = TSALARM_STATE_OFF; else help(argv[0]); tsalarm_set(alarm_type, alarm_state); } else { help(argv[0]); } return 0; }
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Uncommitted |
MT-Level | Safe |
libtsalarm(3LIB), attributes(5)