picl.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (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
* 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]
*
* CDDL HEADER END
*/
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _PICL_H
#define _PICL_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
/*
* PICL Interface
*/
#define PICL_VERSION_1 0x1
/*
* A PICL handle
*/
typedef uint64_t picl_nodehdl_t;
typedef uint64_t picl_prophdl_t;
/*
* Maximum length of a property name
*/
#define PICL_PROPNAMELEN_MAX 256
/*
* Maximum size of a property value
*/
/*
* PICL property access modes
*/
#define PICL_READ 0x1
#define PICL_WRITE 0x2
/* Not seen by clients */
#define PICL_VOLATILE 0x4
/*
* PICL error numbers
*/
typedef enum {
PICL_SUCCESS = 0x0,
PICL_FAILURE, /* general failure */
PICL_NORESPONSE, /* No response */
PICL_UNKNOWNSERVICE, /* unknown PICL service */
PICL_NOTINITIALIZED, /* interface not initialized */
PICL_INVALIDARG, /* invalid arguments passed */
PICL_VALUETOOBIG, /* value too big for buffer */
PICL_PROPNOTFOUND, /* property not found */
PICL_NOTTABLE, /* not a table */
PICL_NOTNODE, /* not a node */
PICL_NOTPROP, /* not a prop */
PICL_ENDOFLIST, /* end of list */
PICL_PROPEXISTS, /* prop already exists */
PICL_NOTWRITABLE, /* not writable */
PICL_PERMDENIED, /* permission denied */
PICL_INVALIDHANDLE, /* invalid handle */
PICL_STALEHANDLE, /* stale handle */
PICL_NOTSUPPORTED, /* version not supported */
PICL_TIMEDOUT, /* timed out */
PICL_CANTDESTROY, /* cannot destroy */
PICL_TREEBUSY, /* too busy to lock tree */
PICL_CANTPARENT, /* already has a parent */
PICL_RESERVEDNAME, /* property name is reserved */
PICL_INVREFERENCE, /* Invalid reference value */
PICL_WALK_CONTINUE, /* continue walking tree */
PICL_WALK_TERMINATE, /* stop walking tree */
PICL_NODENOTFOUND, /* node not found */
PICL_NOSPACE, /* not enough space available */
PICL_NOTREADABLE, /* property not readable */
PICL_PROPVALUNAVAILABLE /* property value unavailable */
} picl_errno_t;
/*
* PICL property types
*/
typedef enum {
PICL_PTYPE_UNKNOWN = 0x0,
PICL_PTYPE_VOID, /* exists or not */
PICL_PTYPE_INT, /* scalar */
PICL_PTYPE_UNSIGNED_INT, /* scalar */
PICL_PTYPE_FLOAT, /* scalar */
PICL_PTYPE_REFERENCE, /* reference handle */
PICL_PTYPE_TABLE, /* table handle */
PICL_PTYPE_TIMESTAMP, /* time stamp */
PICL_PTYPE_BYTEARRAY, /* array of bytes */
PICL_PTYPE_CHARSTRING /* nul terminated array of chars */
typedef struct {
unsigned int accessmode; /* always == PICL_READ */
char name[PICL_PROPNAMELEN_MAX];
/*
* -------------------------------------
* Function prototypes of PICL Interface
* -------------------------------------
*/
extern int picl_initialize(void);
extern int picl_shutdown(void);
picl_prophdl_t *ph);
extern char *picl_strerror(int err);
/*
* Standard PICL names: properties and nodes
*/
#define PICL_NODE_ROOT "/"
#define PICL_NODE_PLATFORM "platform"
#define PICL_NODE_OBP "obp"
#define PICL_NODE_FRUTREE "frutree"
#define PICL_PROP_NAME "name"
#define PICL_PROP_CLASSNAME "_class"
#define PICL_PROP_PARENT "_parent"
#define PICL_PROP_CHILD "_child"
#define PICL_PROP_PEER "_peer"
#define PICL_CLASS_PICL "picl"
#ifdef __cplusplus
}
#endif
#endif /* _PICL_H */