 |
Index for Section 3 |
|
 |
Alphabetical listing for C |
|
 |
Bottom of page |
|
cfg_subsys_reconfig(3)
NAME
cfg_subsys_reconfig - Reconfigure attribute values for a subsystem
LIBRARY
Configuration Management Library (libcfg.a)
SYNOPSIS
#include <cfg.h>
cfg_status_t cfg_subsys_reconfig(
cfg_handle_t *handle,
caddr_t subsys,
cfg_attr_t *attributes,
int nattributes);
PARAMETERS
handle Structure identifying the means of communication between your
application and the configuration management server. For local
requests, pass NULL in this parameter. For remote requests, pass
the value returned from the cfg_connect() routine.
subsys Specifies the name of the subsystem for which you are modifying
attribute values.
attributes
On input, contains a list of attributes whose value you want to
modify. For each attribute, the list includes the attribute
name, data type, and the new value.
On return, contains a status for each attribute. The status
indicates whether the system was able to make the modification
and, if not, what problem caused the error.
nattributes
The number of attributes whose values you are changing.
DESCRIPTION
Use the cfg_subsys_reconfig() routine to modify attribute values for a
subsystem. The modifications made by this routine take effect immediately
because they are made to the in-memory copy of the subsystem. Neither the
kernel nor the subsystem stores a copy of the modifications, so if the
system is rebooted or the subsystem is unconfigured the modifications are
lost. When the subsystem is once again configured into the kernel, the
value of its attributes are retrieved from the /etc/sysconfigtab database
and the subsystem code.
To make permanent changes to attribute values, store the new attribute
values in the /etc/sysconfigtab database. See sysconfigtab(4) for
information about that database.
When your application calls the cfg_subsys_reconfig() routine, it passes a
list of attribute names and values. The application passes this
information in an array of structures of type cfg_attr_t. For information
about this structure, see libcfg(3). The following list describes the
information that is passed to the system by your application:
Attribute data type
Attributes can be integer, string, or binary data. To specify the
data type of your attribute you pass one of these attribute data
types: CFG_ATTR_STRTYPE, CFG_ATTR_INTTYPE, CFG_ATTR_UNITTYPE,
CFG_ATTR_LONGTYPE, CFG_ATTR_ULONGTYPE, CFG_ATTR_BINTYPE
Index For attributes that are themselves a structure, your application
must pass the index for the attribute whose value you want to
modify.
Attribute value
The attribute value specifies the new value for the attribute.
Be aware that the system updates attributes in the order in which
you specify them in the attribute list. This order can be
important when one attribute is validated based on another
attribute's current setting. On return, the system supplies the
status for each attribute. The status is returned in the
attribute parameter, which is normally an array of structures of
the type cfg_attr_t. For information about this structure, see
libcfg(3). The following table describes the status values your
application might receive from the cfg_subsys_reconfig() routine:
___________________________________________________
Status Code Meaning
___________________________________________________
CFG_ATTR_SUCCESS Successful operation
CFG_ATTR_EEXISTS No attribute by that name exists
CFG_ATTR_EOP
Attribute does not support the
reconfigure operation
CFG_ATTR_ESUBSYS
Subsystem failure (code within
the subsystem returned an error)
CFG_ATTR_EINDEX
The index for an indexed
attribute is out of range
CFG_ATTR_ELARGE
The new attribute value or
length is too large
CFG_ATTR_ESMALL
The new attribute value or
length is too small
___________________________________________________
EXAMPLES
The following example illustrates the use of the cfg_subsys_reconfig()
routine:
cfg_attr_t attributes[1];
cfg_status_t retval;
cfg_handle_t handle;
int i;
int nattributes;
/*****************************************************/
/* Initialize attribute names for the request */
strcpy (attributes[0].name, "max-vnodes");
attributes[0].type = CFG_ATTR_INTTYPE;
attributes[0].attr.num.val = 20000;
nattributes = 1;
/***************************************************/
/* Call the cfg_subsys_reconfig() routine */
retval = cfg_subsys_reconfig(&handle, "vfs", attributes, nattributes);
if (retval != CFG_SUCCESS)
print_error (retval);
else {
for (i=0; i<1; i++) {
if (attributes[i].status != CFG_ATTR_SUCCESS) {
printf("%s:", attributes[i].name);
switch (attributes[i].status){
case CFG_ATTR_EEXISTS:
printf("unknown attribute\n");
break;
case CFG_ATTR_EOP:
printf("attribute does not allow this operation\n");
break;
.
.
.
default:
printf("unknown error\n");
break;
}
}
}
}
In this example, the application attempts to modify the value of the max-
vnodes attribute. This attribute, which is part of the vfs subsystem is
being set to the value 20000.
On return the application checks the status of the request as a whole and
of the attribute itself. If the request and attribute status both indicate
success, the application continues. Otherwise, an error is displayed.
RETURN VALUES
Upon successful completion, cfg_subsys_reconfig() returns CFG_SUCCESS.
Other return values indicate that an error has occurred. For information
about handling return values from routines in the configuration management
library, see libcfg(3).
RELATED INFORMATION
Commands: cfgmgr(8), sysconfig(8)
Routines: libcfg(3)
 |
Index for Section 3 |
|
 |
Alphabetical listing for C |
|
 |
Top of page |
|