cfg_subsys_op - Perform a subsystem-specific operation
Configuration Management Library (libcfg.a)
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. Specifies the name of the subsystem for which you are requesting the subsystem-specific operation. Specifies the request code for the operation. The value of the code must be between the values of the CFG_OP_SUBSYS_MIN constant and the CFG_OP_SUBSYS_MAX constant. These constants are defined in <sys/sysconfig.h>. The value of this operation code and its meaning are defined by the subsystem. Specifies the input data needed by the operation. Specifies the size of the input data in bytes. Specifies the pre-allocated memory location to store any output from the operation. Specifies the size of the output data in bytes.
Use the cfg_subsys_op() routine to request that the system perform subsystem-specific operations. These operations are defined by the subsystem. The call allows each kernel subsystem (including loadable drivers) to define and implement their own operations. These operations can be viewed as channels between the subsystem's kernel functions and the subsystem's applications. The call provides subsystem-specific entries into the kernel from user applications.
When your application calls the cfg_subsys_op() routine, it passes the name of the subsystem and the operation to be performed on the subsystem. The application also passes any input data required by the operation and the size of that input data.
When the system receives the cfg_subsys_op() call, it packages the input data and sends that data to the subsystem. Once the subsystem has finished processing the request, control and possibly output data return to the cfg_subsys_op() routine. The routine collects any data output by the subsystem and returns it to your application.
Because your application must allocate memory to store the outdata parameter before it calls cfg_subsys_op(), the actual size of the output data can differ from the amount of memory allocated. When this situation occurs, the cfg_subsys_op() routine returns as much data as possible in the outdata parameter.
The following example illustrates the use of the cfg_subsys_op() routine: char indata[IN_SZ]; char outdata[OUT_SZ]; cfg_handle_t handle; cfg_status_t retval;
/***************************************************/ /* Call the cfg_subsys_op routine */
retval = cfg_subsys_op(&handle, "lvm", CLEAN_UP, indata,
IN_SZ, outdata, OUT_SZ);
if (retval != CFG_SUCCESS)
In this example, the application calls the cfg_subsys_op() routine with the CLEAN_UP operation code. The system passes the CLEAN_UP operation code and the input data, indata, to the subsystem. The subsystem then performs the tasks indicated by the CLEAN_UP operation code. The subsystem returns data, perhaps indicating the status of the CLEAN_UP operation, in the outdata parameter.
Upon successful completion, cfg_subsys_op() 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).
Commands: cfgmgr(8), sysconfig(8)
Routines: libcfg(3) delim off