Set Config Option
Purpose
A set of subcommand calls (that are configuration operations) that set the current value for a particular configuration setting. Each one sets the configuration setting from input specified as a character string.
The following Format and Example use the CFGOP_ADM_THREADS subcommand. The other set subcommands (see Table 1) operate similarly. That is, each sets the configuration setting from the character string in the co_string field.
Format
syscall_parmlist
opcode int 150 CFGOP_ADM_THREADS
parms[0] int offset to CFG_OPTION
parms[1] int offset to system name (optional)
parms[2] int 0
parms[3] int 0
parms[4] int 0
parms[5] int 0
parms[6] int 0
CFG_OPTION
co_eye char[4] "CFOP"
co_len short sizeof(CFG_OPTION)
co_ver char 1
co_string char[81] "15" (New value for adm_threads)
co_value_reserved int 4 (reserved)
co_reserved char[24] 0
systemname char[9]
Return_value 0 if request is successful, -1 if it is not successful
Return_code
EBUSY Aggregate could not be quiesced
EINTR ZFS is shutting down
EMVSERR Internal error using an osi service
ENOENT Aggregate is not attached
EPERM Permission denied to perform request
Reason_code
0xEFnnxxxx See z/OS Distributed File Service Messages and Codes
Usage notes
- Reserved fields and undefined flags must be set to binary zeros.
- Specify the new value as a null terminated string in co_string.
Privilege required
The issuer must be logged in as root or must have READ authority to the SUPERUSER.FILESYS.PFSCTL resource in the z/OS® UNIXPRIV class.
Related services
- Query Config Option
Restrictions
None.
Examples
#pragma linkage(BPX1PCT, OS)
#pragma LANGLVL(EXTENDED)
extern void BPX1PCT(char *, int, int, char *, int *, int *, int *);
#include <stdio.h>
#define ZFSCALL_CONFIG 0x40000006
#define CFGOP_ADM_THREADS 150 /* Set number of admin threads */
typedef struct syscall_parmlist_t {
int opcode; /* Operation code to perform */
int parms[7]; /* Specific to type of operation, */
/* provides access to the parms */
/* parms[4]-parms[6] are currently unused*/
} syscall_parmlist;
typedef struct config_option_t {
char co_eye[4]; /* Eye catcher */
#define CFGO_EYE "CFOP"
short co_len; /* Length of structure */
char co_ver; /* Version of structure */
#define CO_VER_INITIAL 1 /* Initial version */
#define CO_SLEN 80 /* Sizeof string */
char co_string[CO_SLEN+1]; /* String value for option must be 0 terminated*/
int co_value[4]; /* Place for integer values */
char co_reserved[24]; /* Reserved for future use */
} CFG_OPTION;
struct parmstruct {
syscall_parmlist myparms;
CFG_OPTION co;
char system[9];
} myparmstruct;
char new_adm_threads[CO_SLEN+1] = "20"; /* New adm_threads value */
int main(int argc, char **argv)
{
int bpxrv;
int bpxrc;
int bpxrs;
CFG_OPTION *coptr = &(myparmstruct.co);
/* This next field should only be set if parms[1] is non-zero */
/* strcpy(myparmstruct.system,"DCEIMGVN"); */ /* set system to change */
myparmstruct.myparms.opcode = CFGOP_ADM_THREADS;
myparmstruct.myparms.parms[0] = sizeof(syscall_parmlist);
myparmstruct.myparms.parms[1] = 0;
/* Only specify a non-zero offset for the next field (parms[1]) if */
/* you are running z/OS 1.7 and above, and */
/* you want to configquery to a different system */
/* myparmstruct.myparms.parms[1] = sizeof(syscall_parmlist) */
/* + sizeof(CFG_OPTION); */
myparmstruct.myparms.parms[2] = 0;
myparmstruct.myparms.parms[3] = 0;
myparmstruct.myparms.parms[4] = 0;
myparmstruct.myparms.parms[5] = 0;
myparmstruct.myparms.parms[6] = 0;
memset(coptr, 0, sizeof(CFG_OPTION));
memcpy(coptr->co_eye, CFGO_EYE, 4);
coptr->co_ver = CO_VER_INITIAL;
coptr->co_len = (int)sizeof(CFG_OPTION);
strcpy(coptr->co_string, new_adm_threads);/*set new adm_thread value*/
BPX1PCT("ZFS ",
ZFSCALL_CONFIG, /* Config operation */
sizeof(myparmstruct), /* Length of Argument */
(char *)&myparmstruct, /* Pointer to Argument */
&bpxrv, /* Pointer to Return_value */
&bpxrc, /* Pointer to Return_code */
&bpxrs); /* Pointer to Reason_code */
if (bpxrv < 0)
{
printf("Error setting config -adm_threads, "
"BPXRV = %d BPXRC = %d BPXRS = %x\n",
bpxrv, bpxrc, bpxrs);
return bpxrc;
}
else
printf("Config -adm_threads = %s\n", myparmstruct.co.co_string);
return 0;
}