8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / man / man3scf / scf_service_create.3scf
blob9776694f760a227102e9f1a8103c5e1787f51c6f
1 '\" te
2 .\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
3 .\" 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.
4 .\" 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.
5 .\" 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]
6 .TH SCF_SERVICE_CREATE 3SCF "Aug 27, 2007"
7 .SH NAME
8 scf_service_create, scf_service_handle, scf_service_destroy,
9 scf_service_get_parent, scf_service_get_name, scf_scope_get_service,
10 scf_scope_add_service, scf_service_delete \- create and manipulate service
11 handles and services in the Service Configuration Facility
12 .SH SYNOPSIS
13 .LP
14 .nf
15 cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-lscf\fR [ \fIlibrary\fR\&.\|.\|. ]
16 #include <libscf.h>
18 \fBscf_service_t *\fR\fBscf_service_create\fR(\fBscf_handle_t *\fR\fIhandle\fR);
19 .fi
21 .LP
22 .nf
23 \fBscf_handle_t *\fR\fBscf_service_handle\fR(\fBscf_service_t *\fR\fIsvc\fR);
24 .fi
26 .LP
27 .nf
28 \fBvoid\fR \fBscf_service_destroy\fR(\fBscf_service_t *\fR\fIsvc\fR);
29 .fi
31 .LP
32 .nf
33 \fBint\fR \fBscf_service_get_parent\fR(\fBscf_service_t *\fR\fIsvc\fR, \fBscf_scope_t *\fR\fIsc\fR);
34 .fi
36 .LP
37 .nf
38 \fBssize_t\fR \fBscf_service_get_name\fR(\fBconst scf_service_t *\fR\fIsvc\fR, \fBchar *\fR\fIbuf\fR,
39      \fBsize_t\fR \fIsize\fR);
40 .fi
42 .LP
43 .nf
44 \fBint\fR \fBscf_scope_get_service\fR(\fBconst scf_scope_t *\fR\fIsc\fR, \fBconst char *\fR\fIname\fR,
45      \fBscf_service_t *\fR\fIsvc\fR);
46 .fi
48 .LP
49 .nf
50 \fBint\fR \fBscf_scope_add_service\fR(\fBconst scf_scope_t *\fR\fIsc\fR, \fBconst char *\fR\fIname\fR,
51      \fBscf_service_t *\fR\fIsvc\fR);
52 .fi
54 .LP
55 .nf
56 \fBint\fR \fBscf_service_delete\fR(\fBscf_service_t *\fR\fIsvc\fR);
57 .fi
59 .SH DESCRIPTION
60 .sp
61 .LP
62 Services form the middle layer of the Service Configuration Facility repository
63 tree. Services are children of a scope (see \fBscf_scope_create\fR(3SCF)) and
64 have three sets of children:
65 .sp
66 .ne 2
67 .na
68 \fBProperty groups\fR
69 .ad
70 .RS 19n
71 These hold configuration information shared by all of the instances of the
72 service. See \fBscf_pg_create\fR(3SCF), \fBscf_iter_service_pgs\fR(3SCF), and
73 \fBscf_iter_service_pgs_typed\fR(3SCF).
74 .RE
76 .sp
77 .ne 2
78 .na
79 \fBInstances\fR
80 .ad
81 .RS 19n
82 A particular instantiation of the service. See \fBscf_instance_create\fR(3SCF).
83 .RE
85 .sp
86 .LP
87 A service groups one or more related instances and provides a shared
88 configuration for them.
89 .sp
90 .LP
91 An \fBscf_service_t\fR is an opaque handle that can be set to a single service
92 at any given time. The \fBscf_service_create()\fR function allocates and
93 initializes a new \fBscf_service_t\fR bound to \fIhandle\fR. The
94 \fBscf_service_destroy()\fR function destroys and frees svc.
95 .sp
96 .LP
97 The \fBscf_service_handle()\fR function retrieves the handle to which \fIsvc\fR
98 is bound.
99 .sp
101 The \fBscf_service_get_parent()\fR function sets \fIsc\fR to the scope that is
102 the parent of \fIsvc\fR.
105 The \fBscf_service_get_name()\fR function retrieves the name of the service to
106 which \fIsvc\fR is set.
109 The \fBscf_scope_get_service()\fR function sets \fIsvc\fR to the service
110 specified by \fIname\fR in the scope specified by \fIsc\fR.
113 The \fBscf_scope_add_service()\fR function sets \fIsvc\fR to a new service
114 specified by \fIname\fR in the scope specified by \fIsc\fR.
117 The \fBscf_service_delete()\fR function deletes the service to which \fIsvc\fR
118 is set, as well as all of its children.
119 .SH RETURN VALUES
122 Upon successful completion, \fBscf_service_create()\fR returns a new
123 \fBscf_service_t\fR. Otherwise, it returns \fINULL\fR.
126 Upon successful completion, \fBscf_service_handle()\fR returns the handle to
127 which svc is bound. Otherwise, it returns \fINULL\fR.
130 Upon successful completion, \fBscf_service_get_name()\fR returns the length of
131 the string written, not including the terminating null byte. Otherwise, it
132 returns -1.
135 Upon successful completion, \fBscf_service_get_parent()\fR,
136 \fBscf_scope_get_service()\fR, \fBscf_scope_add_service()\fR, and
137 \fBscf_service_delete()\fR return 0. Otherwise, it returns -1.
138 .SH ERRORS
141 The \fBscf_service_create()\fR function will fail if:
143 .ne 2
145 \fB\fBSCF_ERROR_INVALID_ARGUMENT\fR\fR
147 .RS 30n
148 The value of the \fIhandle\fR argument is \fINULL\fR.
152 .ne 2
154 \fB\fBSCF_ERROR_NO_MEMORY\fR\fR
156 .RS 30n
157 There is not enough memory to allocate an \fBscf_service_t\fR.
161 .ne 2
163 \fB\fBSCF_ERROR_NO_RESOURCES\fR\fR
165 .RS 30n
166 The server does not have adequate resources for a new scope handle.
171 The \fBscf_service_handle()\fR function will fail if:
173 .ne 2
175 \fB\fBSCF_ERROR_HANDLE_DESTROYED\fR\fR
177 .RS 30n
178 The handle associated with \fIsvc\fR has been destroyed.
183 The \fBscf_service_get_name()\fR, \fBscf_service_get_parent()\fR, and
184 \fBscf_service_delete()\fR functions will fail if:
186 .ne 2
188 \fB\fBSCF_ERROR_DELETED\fR\fR
190 .sp .6
191 .RS 4n
192 The service has been deleted by someone else.
196 .ne 2
198 \fB\fBSCF_ERROR_NOT_SET\fR\fR
200 .sp .6
201 .RS 4n
202 The service is not set.
206 .ne 2
208 \fB\fBSCF_ERROR_NOT_BOUND\fR\fR
210 .sp .6
211 .RS 4n
212 The handle is not bound.
216 .ne 2
218 \fB\fBSCF_ERROR_CONNECTION_BROKEN\fR\fR
220 .sp .6
221 .RS 4n
222 The connection to the repository was lost.
227 The \fBscf_service_delete()\fR function will fail if:
229 .ne 2
231 \fB\fBSCF_ERROR_EXISTS\fR\fR
233 .RS 26n
234 The service contains instances.
238 .ne 2
240 \fB\fBSCF_ERROR_NO_RESOURCES\fR\fR
242 .RS 26n
243 The server does not have adequate resources for a new scope handle.
248 The \fBscf_scope_add_service()\fR function will fail if:
250 .ne 2
252 \fB\fBSCF_ERROR_EXISTS\fR\fR
254 .RS 20n
255 A {service,instance,property group} named \fIname\fR already exists.
260 The \fBscf_scope_get_service()\fR function will fail if:
262 .ne 2
264 \fB\fBSCF_ERROR_BACKEND_ACCESS\fR\fR
266 .RS 28n
267 The  storage  mechanism  that  the   repository server (\fBsvc.configd\fR(1M))
268 chose for the operation denied access.
272 .ne 2
274 \fB\fBSCF_ERROR_INTERNAL\fR\fR
276 .RS 28n
277 An internal error occurred.
282 The \fBscf_scope_add_service()\fR and \fBscf_scope_get_service()\fR functions
283 will fail if:
285 .ne 2
287 \fB\fBSCF_ERROR_CONNECTION_BROKEN\fR\fR
289 .sp .6
290 .RS 4n
291 The connection to the repository was lost.
295 .ne 2
297 \fB\fBSCF_ERROR_DELETED\fR\fR
299 .sp .6
300 .RS 4n
301 The parent entity has been deleted.
305 .ne 2
307 \fB\fBSCF_ERROR_HANDLE_MISMATCH\fR\fR
309 .sp .6
310 .RS 4n
311 The scope and service are not derived from the same handle.
315 .ne 2
317 \fB\fBSCF_ERROR_INVALID_ARGUMENT\fR\fR
319 .sp .6
320 .RS 4n
321 The value of the \fIname\fR argument is not a valid service name.
325 .ne 2
327 \fB\fBSCF_ERROR_NO_RESOURCES\fR\fR
329 .sp .6
330 .RS 4n
331 The server does not have the resources to complete the request.
335 .ne 2
337 \fB\fBSCF_ERROR_NOT_BOUND\fR\fR
339 .sp .6
340 .RS 4n
341 The handle is not bound.
345 .ne 2
347 \fB\fBSCF_ERROR_NOT_FOUND\fR\fR
349 .sp .6
350 .RS 4n
351 The service specified by \fIname\fR was not found.
355 .ne 2
357 \fB\fBSCF_ERROR_NOT_SET\fR\fR
359 .sp .6
360 .RS 4n
361 The scope is not set.
366 The \fBscf_scope_add_service()\fR and \fBscf_service_delete()\fR functions will
367 fail if:
369 .ne 2
371 \fB\fBSCF_ERROR_PERMISSION_DENIED\fR\fR
373 .sp .6
374 .RS 4n
375 The user does not have sufficient privileges to create or delete a service.
379 .ne 2
381 \fB\fBSCF_ERROR_BACKEND_READONLY\fR\fR
383 .sp .6
384 .RS 4n
385 The repository backend is read-only.
389 .ne 2
391 \fB\fBSCF_ERROR_BACKEND_ACCESS\fR\fR
393 .sp .6
394 .RS 4n
395 The repository backend refused the modification.
400 The \fBscf_error\fR(3SCF) function can be used to retrieve the error value.
401 .SH ATTRIBUTES
404 See \fBattributes\fR(5) for descriptions of the following attributes:
409 box;
410 c | c
411 l | l .
412 ATTRIBUTE TYPE  ATTRIBUTE VALUE
414 Interface Stability     Committed
416 MT-Level        Safe
419 .SH SEE ALSO
422 \fBlibscf\fR(3LIB), \fBscf_error\fR(3SCF), \fBscf_handle_decode_fmri\fR(3SCF),
423 \fBscf_iter_service_pgs\fR(3SCF), \fBscf_iter_service_pgs_typed\fR(3SCF),
424 \fBscf_instance_create\fR(3SCF), \fBscf_pg_create\fR(3SCF),
425 \fBscf_scope_create\fR(3SCF), \fBscf_service_to_fmri\fR(3SCF),
426 \fBattributes\fR(5), \fBsmf\fR(5)