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)

tribblix@gmail.com :: GitHub :: Privacy