SCF_INSTANCE_CREATE(3SCF) Service Configuration Facility Library Functions
NAME
scf_instance_create, scf_instance_handle, scf_instance_destroy,
scf_instance_get_parent, scf_instance_get_name,
scf_service_get_instance, scf_service_add_instance,
scf_instance_delete - create and manipulate instance handles and
instances in the Service Configuration Facility
SYNOPSIS
cc [
flag... ]
file...
-lscf [
library... ]
#include <libscf.h>
scf_instance_t *scf_instance_create(
scf_handle_t *handle);
scf_handle_t *scf_instance_handle(
scf_instance_t *inst);
void scf_instance_destroy(
scf_instance_t *inst);
int scf_instance_get_parent(
const scf_instance_t *inst,
scf_service_t *svc);
ssize_t scf_instance_get_name(
const scf_instance_t *inst,
char *name,
size_t size);
int scf_service_get_instance(
const scf_service_t *svc,
const char *name,
scf_instance_t *inst);
int scf_service_add_instance(
const scf_service_t *svc,
const char *name,
scf_instance_t *inst);
int scf_instance_delete(
scf_instance_t *inst);
DESCRIPTION
Instances form the bottom layer of the Service Configuration Facility
repository tree. An instance is the child of a service and has two
sets of children:
Property Groups These hold configuration information specific to
this instance. See
scf_pg_create(3SCF),
scf_iter_instance_pgs(3SCF), and
scf_iter_instance_pgs_typed(3SCF).
Snapshots These are complete configuration snapshots that
hold unchanging copies of all of the property
groups necessary to run the instance. See
scf_snapshot_create(3SCF) and
scf_iter_instance_snapshots(3SCF).
See
smf(7) for information about instances.
An
scf_instance_t is an opaque handle that can be set to a single
instance at any given time. The
scf_instance_create() function
allocates and initializes a new
scf_instance_t bound to
handle. The
scf_instance_destroy() function destroys and frees
inst.
The
scf_instance_handle() function retrieves the handle to which
inst is bound.
The
scf_inst_get_parent() function sets
svc to the service that is
the parent of
inst.
The
scf_instance_get_name() function retrieves the name of the
instance to which
inst is set.
The
scf_service_get_instance() function sets
inst to the child
instance of the service
svc specified by
name.
The
scf_service_add_instance() function sets
inst to a new child
instance of the service
svc specified by
name.
The
scf_instance_delete() function deletes the instance to which
inst is set, as well all of the children of the instance.
RETURN VALUES
Upon successful completion,
scf_instance_create() returns a new
scf_instance_t. Otherwise it returns
NULL.
Upon successful completion,
scf_instance_handle() returns the handle
to which
inst is bound. Otherwise, it returns
NULL.
Upon successful completion,
scf_instance_get_name() returns the
length of the string written, not including the terminating null
character. Otherwise it returns -1.
Upon successful completion,
scf_instance_get_parent(),
scf_service_get_instance(),
scf_service_add_instance(), and
scf_instance_delete() functions return 0. Otherwise, they return -1.
ERRORS
The
scf_instance_create() function will fail if:
SCF_ERROR_HANDLE_DESTROYED An object was bound to a destroyed handle.
SCF_ERROR_INTERNAL An internal error occurred.
SCF_ERROR_INVALID_ARGUMENT The
handle argument is
NULL.
SCF_ERROR_NO_MEMORY There is not enough memory to allocate an
scf_instance_t.
SCF_ERROR_NO_RESOURCES The server does not have adequate resources for a new instance
handle.
The
scf_instance_handle() function will fail if:
SCF_ERROR_HANDLE_DESTROYED The handle associated with
inst has been destroyed.
The
scf_instance_get_name(),
scf_instance_get_parent(), and
scf_instance_delete() functions will fail if:
SCF_ERROR_DELETED The instance has been deleted.
SCF_ERROR_NOT_SET The instance is not set.
SCF_ERROR_NOT_BOUND The repository handle is not bound.
SCF_ERROR_CONNECTION_BROKEN The connection to the repository was lost.
The
scf_service_add_instance() function will fail if:
SCF_ERROR_EXISTS An instance named
name already exists.
SCF_ERROR_INTERNAL An internal error occurred.
SCF_ERROR_NO_RESOURCES The server does not have the resources to complete the request.
SCF_ERROR_NOT_BOUND The handle is not bound.
The
scf_service_get_instance() function will fail if:
SCF_ERROR_BACKEND_ACCESS The storage mechanism that the
repository server (
svc.configd(8)) chose
for the operation denied access.
SCF_ERROR_INTERNAL An internal error occurred.
SCF_ERROR_NOT_BOUND The handle is not bound.
SCF_ERROR_NOT_FOUND No instance specified by
name was found.
SCF_ERROR_NO_RESOURCES The repository server is out of
resources.
The
scf_service_add_instance() and
scf_service_get_instance() functions will fail if:
SCF_ERROR_NOT_SET The service is not set.
SCF_ERROR_DELETED The service has been deleted.
SCF_ERROR_INVALID_ARGUMENT The
name argument is not a valid instance name.
SCF_ERROR_HANDLE_MISMATCH The service and instance are not derived from the same handle.
SCF_ERROR_CONNECTION_BROKEN The connection to the repository was lost.
The
scf_instance_get_parent() function will fail if:
SCF_ERROR_HANDLE_MISMATCH The
service and
instance arguments are not derived from the same
handle.
The
scf_service_add_instance() and
scf_instance_delete() functions
will fail if:
SCF_ERROR_PERMISSION_DENIED The user does not have sufficient privileges to create or delete
an instance.
SCF_ERROR_BACKEND_READONLY The repository backend is read-only.
SCF_ERROR_BACKEND_ACCESS The repository backend refused the modification.
The
scf_instance_delete() function will fail if:
SCF_ERROR_NO_RESOURCES The server does not have adequate resources
for a new instance handle.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+
SEE ALSO
libscf(3LIB),
scf_error(3SCF),
scf_iter_instance_pgs(3SCF),
scf_iter_instance_pgs_typed(3SCF),
scf_iter_instance_snapshots(3SCF),
scf_pg_create(3SCF),
scf_snapshot_create(3SCF),
attributes(7),
smf(7)NOTES
Instance names are of the form:
[
domain,]
identifier where
domain is either a stock ticker symbol such as SUNW or a Java-
style reversed domain name such as
com.sun. Identifiers begin with a
letter or underscore and contain only letters, digits, underscores,
and dashes.
September 24, 2007 SCF_INSTANCE_CREATE(3SCF)