pool_impl.h revision 2
2N/A * The contents of this file are subject to the terms of the 2N/A * Common Development and Distribution License, Version 1.0 only 2N/A * (the "License"). You may not use this file except in compliance 2N/A * See the License for the specific language governing permissions 2N/A * and limitations under the License. 2N/A * When distributing Covered Code, include this CDDL HEADER in each 2N/A * If applicable, add the following below this CDDL HEADER, with the 2N/A * fields enclosed by brackets "[]" replaced with your own identifying 2N/A * information: Portions Copyright [yyyy] [name of copyright owner] 2N/A * Copyright 2003 Sun Microsystems, Inc. All rights reserved. 2N/A * Use is subject to license terms. 2N/A#
pragma ident "%Z%%M% %I% %E% SMI" 2N/A * This file contains the definitions of types and supporting 2N/A * functions to implement the libpool generic data manipulation 2N/A * used may be easily replaced without affecting core functionality. 2N/A * A libpool configuration is connected to a particular data 2N/A * type. When a configuration is opened (see pool_conf_open) the 2N/A * libpool implementation allocates a specific data manipulation type 2N/A * and initialises it. For instance, see pool_xml_connection_alloc. 2N/A * This function represents a cross-over point and all routines used 2N/A * allocated connection. 2N/A * Currently, there are two implemented methods of access. Data may be 2N/A * retrieved from the kernel, using the pool_knl_connection_t 2N/A * function. This implementation relies on a private interface 2N/A * provided by a driver, /dev/pool, and presents data retrieved from 2N/A * the kernel via the standard libpool interface. Alternatively, data 2N/A * may be retrieved from an XML file, via pool_xml_connection_t, and 2N/A * presented through the standard libpool interface. For details of 2N/A * In addition to defining a specific connection type for a desired 2N/A * be defined to allow manipulation of configuration elements. 2N/A * Configuration elements are represented as pool_elem_t instances, or 2N/A * as sub-types of this generic type (such as pool_t, which represents 2N/A * a pool element) with groups (or sets) of these instances available 2N/A * for manipulation via the pool_result_set_t type. 2N/A * For more information on the implementation of these types, read the 2N/A * detailed comments above each structure definition. 2N/A * The pool_elem_t is used to represent a configuration element.The 2N/A * class of the element is stored within the structure along with a 2N/A * pointer to the containing configuration and a pointer to the 2N/A * element's specific subtype. 2N/A * The function pointers are initialised when the element is allocated 2N/A * to use the specific functions provided by the concrete data 2N/A * The full set of operations that can be performed on an element 2N/A * which require special treatment from the data 2N/A * libpool performs many operations against a pool_elem_t. This basic 2N/A * type is extended to provide specific functionality and type safety 2N/A * for each of the different types of element supported by 2N/A * libpool. There are four types of element: 2N/A * - pool_system_t, represents an entire configuration 2N/A * - pool_t, represents a single pool 2N/A * - pool_resource_t, represents a single resource 2N/A * - pool_component_t, represents a single resource component 2N/A * pool_system_t is an internal structure, the other structures are 2N/A * externally visible and form a major part of the libpool interface. 2N/A * Specific to pool_t 2N/A * Specific to pool_resource_t 2N/A * The pool_result_set_t is used to represent a collection (set) of 2N/A * configuration elements. The configuration to which this result set 2N/A * applies is stored along with an indicator as to whether the result 2N/A * set is still in use. 2N/A * The function pointers are initialised when the element is allocated 2N/A * to use the specific functions provided by the concrete data 2N/A * The full set of operations that can be performed on an element 2N/A * which require special treatment from the data 2N/A * The pool_connection_t is used to represent a connection between a 2N/A * libpool configuration and a particular implementation of the 2N/A * The name of the storage medium is stored along with the type of the 2N/A * The function pointers are initialised when the element is allocated 2N/A * to use the specific functions provided by the concrete data 2N/A * The full set of operations that can be performed on an element 2N/A * which require special treatment from the data 2N/A * pool_conf represents a resource management configuration. The 2N/A * configuration location is stored in the pc_location member with the 2N/A * state of the configuration stored in pc_state. 2N/A * for the configuration since all access to data is performed through 2N/A * Convert a pool_elem_t to it's appropriate sub-type. 2N/A * Convert a pool_system_t to a pool_elem_t. 2N/A * Get/Set an element's "pair" element. A pair element is a temporary 2N/A * association at commit between an element in the dynamic 2N/A * configuration and an element in the static configuration. This 2N/A * relationship is stored in the pe_pair member of the element. 2N/A * Result Set Manipulation 2N/A * General Purpose Query 2N/A#
endif /* _POOL_IMPL_H */