4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2000-2002 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
30 #pragma ident "%Z%%M% %I% %E% SMI"
41 #define LIBFRU_DS_VER 1
43 /* Tree handle specific to the datasource */
44 typedef uint64_t fru_treehdl_t
;
45 typedef uint64_t fru_treeseghdl_t
;
52 fru_errno_t (*initialize
)(int argc
, char **argv
);
53 fru_errno_t (*shutdown
)(void);
56 fru_errno_t (*get_root
)(fru_treehdl_t
*root
);
57 fru_errno_t (*get_child
)(fru_treehdl_t parent
, fru_treehdl_t
*child
);
58 fru_errno_t (*get_peer
)(fru_treehdl_t sibling
, fru_treehdl_t
*peer
);
59 fru_errno_t (*get_parent
)(fru_treehdl_t child
, fru_treehdl_t
*parent
);
62 fru_errno_t (*get_name_from_hdl
)(fru_treehdl_t node
, char **name
);
63 fru_errno_t (*get_node_type
)(fru_treehdl_t node
, fru_node_t
*type
);
66 fru_errno_t (*get_seg_list
)(fru_treehdl_t container
, fru_strlist_t
*list
);
67 fru_errno_t (*get_seg_def
)(fru_treehdl_t container
, const char *seg_name
,
69 fru_errno_t (*add_seg
)(fru_treehdl_t container
, fru_segdef_t
*def
);
70 fru_errno_t (*delete_seg
)(fru_treehdl_t container
, const char *seg_name
);
71 fru_errno_t (*for_each_segment
)(fru_treehdl_t node
,
72 int (*function
)(fru_treeseghdl_t segment
,
75 fru_errno_t (*get_segment_name
)(fru_treeseghdl_t segment
, char **name
);
78 fru_errno_t (*add_tag_to_seg
)(fru_treehdl_t container
, const char *seg_name
,
79 fru_tag_t tag
, uint8_t *data
, size_t data_len
);
80 fru_errno_t (*get_tag_list
)(fru_treehdl_t container
, const char *seg_name
,
81 fru_tag_t
**tags
, int *number
);
82 fru_errno_t (*get_tag_data
)(fru_treehdl_t container
, const char *seg_name
,
83 fru_tag_t tag
, int instance
,
84 uint8_t **data
, size_t *data_len
);
85 fru_errno_t (*set_tag_data
)(fru_treehdl_t container
, const char *seg_name
,
86 fru_tag_t tag
, int instance
,
87 uint8_t *data
, size_t data_len
);
88 fru_errno_t (*delete_tag
)(fru_treehdl_t container
, const char *seg_name
,
89 fru_tag_t tag
, int instance
);
90 fru_errno_t (*for_each_packet
)(fru_treeseghdl_t segment
,
91 int (*function
)(fru_tag_t
*tag
,
93 size_t length
, void *args
),
102 #endif /* _LIBFRUDS_H */