xref: /illumos-gate/usr/src/man/man3pool/pool_value_alloc.3pool (revision 66582b606a8194f7f3ba5b3a3a6dca5b0d346361)
te
Copyright (c) 2003, 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]
POOL_VALUE_ALLOC 3POOL "Sep 23, 2003"
NAME
pool_value_alloc, pool_value_free, pool_value_get_bool, pool_value_get_double, pool_value_get_int64, pool_value_get_name, pool_value_get_string, pool_value_get_type, pool_value_get_uint64, pool_value_set_bool, pool_value_set_double, pool_value_set_int64, pool_value_set_name, pool_value_set_string, pool_value_set_uint64 - resource pool property value manipulation functions
SYNOPSIS

cc [ flag.\|.\|. ] file.\|.\|. -lpool [ library.\|.\|. ]
#include <pool.h>

pool_value_t *pool_value_alloc(void);

void pool_value_free(pool_value_t *value);

pool_value_class_t pool_value_get_type(
 const pool_value_t *value);

int pool_value_get_bool(const pool_value_t *value,
 uchar_t *bool);

int pool_value_get_double(const pool_value_t *value,
 double *d);

int pool_value_get_int64(const pool_value_t *value,
 int64_t *i64);

int pool_value_get_string(const pool_value_t *value,
 const char **strp);

int pool_value_get_uint64(const pool_value_t *value,
 uint64_t *ui64);

void pool_value_set_bool(const pool_value_t *value,
 uchar_t bool);

void pool_value_set_double(const pool_value_t *value,
 double d);

void pool_value_set_int64(const pool_value_t *value,
 int64_t i64);

int pool_value_set_string(const pool_value_t *value,
 const char *strp);

void pool_value_set_uint64(const pool_value_t *value,
 uint64_t ui64);

const char *pool_value_get_name(const pool_value_t *value);

int pool_value_set_name(const pool_value_t *value,
 const char *name);
DESCRIPTION

A pool_value_t is an opaque type representing the typed value portion of a pool property. For a list of the types supported by a pool_value_t, see pool_get_property(3POOL).

The pool_value_alloc() function allocates and returns an opaque container for a pool property value. The pool_value_free() function must be called explicitly for allocated property values.

The pool_value_get_bool(), pool_value_get_double(), pool_value_get_int64(), pool_value_get_string(), and pool_value_get_uint64() functions retrieve the value contained in the pool_value_t pointed to by value to the location pointed to by the second argument. If the type of the value does not match that expected by the function, an error value is returned. The string retrieved by pool_value_get_string() is freed by the library when the value is overwritten or pool_value_free() is called on the pool property value.

The pool_value_get_type() function returns the type of the data contained by a pool_value_t. If the value is unused then a type of POC_INVAL is returned.

The pool_value_set_bool(), pool_value_set_double(), pool_value_set_int64(), pool_value_set_string(), and pool_value_set_uint64() functions set the value and type of the property value to the provided values. The pool_value_set_string() function copies the string passed in and returns -1 if the memory allocation fails.

Property values can optionally have names. These names are used to describe properties as name=value pairs in the various query functions (see pool_query_resources(3POOL)). A copy of the string passed to pool_value_set_name() is made by the library, and the value returned by pool_value_get_name() is freed when the pool_value_t is deallocated or overwritten.

RETURN VALUES

Upon successful completion, pool_value_alloc() returns a pool property value with type initialized to PVC_INVAL. Otherwise, NULL is returned and pool_error() returns the pool-specific error value.

Upon successful completion, pool_value_get_type() returns the type contained in the property value passed in as an argument. Otherwise, POC_INVAL is returned and pool_error() returns the pool-specific error value.

Upon successful completion, pool_value_get_bool(), pool_value_get_double(), pool_value_get_int64(), pool_value_get_string(), and pool_value_get_uint64() return 0. Otherwise -1 is returned and pool_error(3POOL) returns the pool-specific error value.

Upon successful completion, pool_value_set_string() and pool_value_set_name() return 0. If the memory allocation failed, -1 is returned and pool_error() returns the pool-specific error value.

ERRORS

The pool_value_alloc() function will fail if: POE_SYSTEM

A system error has occurred. Check the system error code for more details.

The pool_value_get_bool(), pool_value_get_double(), pool_value_get_int64(), pool_value_get_string(), and pool_value_get_uint64() functions will fail if: POE_BADPARAM

The supplied value does not match the type of the requested operation.

The pool_value_set_string() function will fail if: POE_SYSTEM

A system error has occurred. Check the system error code for more details.

The pool_value_set_name() function will fail if: POE_SYSTEM

A system error has occurred. Check the system error code for more details.

ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
CSI Enabled
Interface Stability Unstable
MT-Level Safe
SEE ALSO

libpool(3LIB), pool_error(3POOL), attributes(5)