1 POOL_RESOURCE_CREATE(3POOL) Pool Configuration Manipulation Library Functions 2 3 4 5 NAME 6 pool_resource_create, pool_resource_destroy, pool_resource_info, 7 pool_query_resource_components, pool_resource_transfer, 8 pool_resource_xtransfer - resource pool resource manipulation functions 9 10 SYNOPSIS 11 cc [ flag... ] file... -lpool [ library... ] 12 #include <pool.h> 13 14 pool_resource_t *pool_resource_create(pool_conf_t *conf, 15 const char *type, const char *name); 16 17 18 int pool_resource_destroy(pool_conf_t *conf, 19 pool_resource_t *resource); 20 21 22 const char *pool_resource_info(pool_conf_t *conf 23 pool_resource_t *resource, int flags); 24 25 26 pool_component_t **pool_query_resource_components( 27 pool_conf_t *conf, pool_resource_t *resource, 28 uint_t *nelem, pool_value_t **props); 29 30 31 int pool_resource_transfer(pool_conf_t *conf, 32 pool_resource_t *source, pool_resource_t *target, 33 uint64_t size); 34 35 36 int pool_resource_xtransfer(pool_conf_t *conf, 37 pool_resource_t *source, pool_resource_t *target, 38 pool_component_t **components); 39 40 41 DESCRIPTION 42 The pool_resource_create() function creates and returns a new resource 43 of the given name and type in the provided configuration. If there is 44 already a resource of the given name, the operation will fail. 45 46 47 The pool_resource_destroy() function removes the specified resource 48 from its configuration file. 49 50 51 The pool_resource_info() function returns a string describing the given 52 resource. The string is allocated with malloc(3C). The caller is 53 responsible for freeing the returned string. If the flags argument is 54 non-zero, the string returned also describes the components (if any) 55 contained in the resource. 56 57 58 The pool_query_resource_components() function returns a null-terminated 59 array of the components (if any) that comprise the given resource. 60 61 62 The pool_resource_transfer() function transfers size basic units from 63 the source resource to the target. Both resources must be of the same 64 type for the operation to succeed. Transferring component resources, 65 such as processors, is always performed as series of 66 pool_resource_xtransfer() operations, since discrete resources must be 67 identified for transfer. 68 69 70 The pool_resource_xtransfer() function transfers the specific 71 components from the source resource to the target. Both resources must 72 be of the same type, and of a type that contains components (such as 73 processor sets). The components argument is a null-terminated list of 74 pool_component_t. 75 76 77 The conf argument for each function refers to the target configuration 78 to which the operation applies. 79 80 RETURN VALUES 81 Upon successful completion, pool_resource_create() returns a new 82 pool_resource_t with default properties initialized. Otherwise, NULL is 83 returned and pool_error(3POOL) returns the pool-specific error value. 84 85 86 Upon successful completion, pool_resource_destroy() returns 0. 87 Otherwise, -1 is returned and pool_error() returns the pool-specific 88 error value. 89 90 91 Upon successful completion, pool_resource_info() returns a string 92 describing the given resource (and optionally its components). 93 Otherwise, NULL is returned and pool_error() returns the pool-specific 94 error value. 95 96 97 Upon successful completion, pool_query_resource_components() returns a 98 null-terminated array of pool_component_t * that match the provided 99 null-terminated property list and are contained in the given resource. 100 Otherwise, NULL is returned and pool_error() returns the pool-specific 101 error value. 102 103 104 Upon successful completion, pool_resource_transfer() and 105 pool_resource_xtransfer() return 0. Otherwise -1 is returned and 106 pool_error() returns the pool-specific error value. 107 108 ERRORS 109 The pool_resource_create() function will fail if: 110 111 POE_BADPARAM 112 The supplied configuration's status is not 113 POF_VALID or name is in use for this resource type. 114 115 116 POE_INVALID_CONF 117 The resource element could not be created because 118 the configuration would be invalid. 119 120 121 POE_PUTPROP 122 One of the supplied properties could not be set. 123 124 125 POE_SYSTEM 126 A system error has occurred. Check the system 127 error code for more details. 128 129 130 131 The pool_resource_destroy() function will fail if: 132 133 POE_BADPARAM 134 The supplied configuration's status is not POF_VALID. 135 136 137 138 The pool_resource_info() function will fail if: 139 140 POE_BADPARAM 141 The supplied configuration's status is not 142 POF_VALID or the flags parameter is neither 0 nor 143 1. 144 145 146 POE_INVALID_CONF 147 The configuration is invalid. 148 149 150 POE_SYSTEM 151 A system error has occurred. Check the system error 152 code for more details. 153 154 155 156 The pool_query_resource_components() function will fail if: 157 158 POE_BADPARAM 159 The supplied configuration's status is not 160 POF_VALID. 161 162 163 POE_INVALID_CONF 164 The configuration is invalid. 165 166 167 POE_SYSTEM 168 A system error has occurred. Check the system error 169 code for more details. 170 171 172 173 The pool_resource_transfer() function will fail if: 174 175 POE_BADPARAM 176 The supplied configuration's status is not POF_VALID, 177 the two resources are not of the same type, or the 178 transfer would cause either of the resources to exceed 179 their min and max properties. 180 181 182 POE_SYSTEM 183 A system error has occurred. Check the system error 184 code for more details. 185 186 187 188 The pool_resource_xtransfer() function will fail if: 189 190 POE_BADPARAM 191 The supplied configuration's status is not 192 POF_VALID, the two resources are not of the same 193 type, or the supplied resources do not belong to 194 the source. 195 196 197 POE_INVALID_CONF 198 The transfer operation failed and the configuration 199 may be invalid. 200 201 202 POE_SYSTEM 203 A system error has occurred. Check the system error 204 code for more details. 205 206 207 EXAMPLES 208 Example 1 Create a new resource of type pset named foo. 209 210 #include <pool.h> 211 #include <stdio.h> 212 213 ... 214 215 pool_conf_t *conf; 216 pool_resource_t *resource; 217 ... 218 219 if ((resource = pool_resource_create(conf, "pset", 220 "foo")) == NULL) { 221 (void) fprintf(stderr, "Cannot create resource\n"); 222 ... 223 } 224 225 226 ATTRIBUTES 227 See attributes(5) for descriptions of the following attributes: 228 229 230 231 232 +--------------------+-----------------+ 233 | ATTRIBUTE TYPE | ATTRIBUTE VALUE | 234 +--------------------+-----------------+ 235 |CSI | Enabled | 236 +--------------------+-----------------+ 237 |Interface Stability | Unstable | 238 +--------------------+-----------------+ 239 |MT-Level | Safe | 240 +--------------------+-----------------+ 241 242 SEE ALSO 243 libpool(3LIB), pool_error(3POOL), attributes(5) 244 245 246 247 January 18, 2020 POOL_RESOURCE_CREATE(3POOL)