1 POOL_GET_BINDING(3POOL) Pool Configuration Manipulation Library Functions 2 3 4 5 NAME 6 pool_get_binding, pool_set_binding, pool_get_resource_binding - set and 7 query process to resource pool bindings 8 9 SYNOPSIS 10 cc [ flag... ] file... -lpool [ library... ] 11 #include <pool.h> 12 13 char *pool_get_binding(pid_t pid); 14 15 16 int pool_set_binding(const char *pool, idtype_t idtype, 17 id_t id); 18 19 20 char *pool_get_resource_binding(const char *type, pid_t pid); 21 22 23 DESCRIPTION 24 The pool_get_binding() function returns the name of the pool on the 25 running system that contains the set of resources to which the given 26 process is bound. If no such pool exists on the system or the search 27 returns more than one pool (since the set of resources is referred to 28 by more than one pool), NULL is returned and the pool error value is 29 set to POE_INVALID_SEARCH. 30 31 32 It is possible that one of the resources to which the given process is 33 bound is not associated with a pool. This could occur if a processor 34 set was created with one of the pset_() functions and the process was 35 then bound to that set. It could also occur if the process was bound to 36 a resource set not currently associated with a pool, since resources 37 can exist that are not associated with a pool. 38 39 40 The pool_set_binding() function binds the processes matching idtype and 41 id to the resources associated with pool on the running system. This 42 function requires the privilege required by the underlying resource 43 types referenced by the pool; generally, this requirement is equivalent 44 to requiring superuser privilege. 45 46 47 The idtype parameter can be one of the following types: 48 49 P_PID 50 The id parameter is a pid. 51 52 53 P_TASKID 54 The id parameter is a taskid. 55 56 57 P_PROJID 58 The id parameter is a project ID. All currently running 59 processes belonging to the given project will be bound to 60 the pool's resources. 61 62 63 64 The pool_get_resource_binding() function returns the name of the 65 resource of the supplied type to which the supplied process is bound. 66 67 68 The application must explicitly free the memory allocated for the 69 return values for pool_get_binding() and pool_get_resource_binding(). 70 71 RETURN VALUES 72 Upon successful completion, pool_get_binding() returns the name of the 73 pool to which the process is bound. Otherwise it returns NULL and 74 pool_error(3POOL) returns the pool-specific error value. 75 76 77 Upon successful completion, pool_set_binding() returns PO_SUCCESS. 78 Otherwise, it returns PO_FAIL and pool_error() returns the pool- 79 specific error value. 80 81 82 Upon successful completion, pool_get_resource_binding() returns the 83 name of the resource of the specified type to which the process is 84 bound. Otherwise it returns NULL and pool_error() returns the pool- 85 specific error value. 86 87 ERRORS 88 The pool_get_binding() function will fail if: 89 90 POE_INVALID_CONF 91 The configuration is invalid. 92 93 94 POE_INVALID_SEARCH 95 It is not possible to determine the binding for 96 this target due to the overlapping nature of the 97 pools configured for this system, or the pool 98 could not be located. 99 100 101 POE_SYSTEM 102 A system error has occurred. Check the system 103 error code for more details. 104 105 106 107 The pool_set_binding() function will fail if: 108 109 POE_INVALID_SEARCH 110 The pool could not be found. 111 112 113 POE_INVALID_CONF 114 The configuration is invalid. 115 116 117 POE_SYSTEM 118 A system error has occurred. Check the system 119 error code for more details. 120 121 122 123 The pool_get_resource_binding() function will fail if: 124 125 POE_INVALID_CONF 126 The configuration is invalid. 127 128 129 POE_INVALID_SEARCH 130 The target is not bound to a resource of the 131 specified type. 132 133 134 POE_SYSTEM 135 A system error has occurred. Check the system 136 error code for more details. 137 138 139 EXAMPLES 140 Example 1 Bind the current process to the pool named "target". 141 142 #include <sys/types.h> 143 #include <pool.h> 144 #include <unistd.h> 145 146 ... 147 148 id_t pid = getpid(); 149 150 ... 151 152 if (pool_set_binding("target", P_PID, pid) == PO_FAIL) 153 (void) fprintf(stderr, "pool binding failed (%d)\n", 154 pool_error()); 155 156 157 158 ATTRIBUTES 159 See attributes(5) for descriptions of the following attributes: 160 161 162 163 164 +--------------------+-----------------+ 165 | ATTRIBUTE TYPE | ATTRIBUTE VALUE | 166 +--------------------+-----------------+ 167 |CSI | Enabled | 168 +--------------------+-----------------+ 169 |Interface Stability | Unstable | 170 +--------------------+-----------------+ 171 |MT-Level | Safe | 172 +--------------------+-----------------+ 173 174 SEE ALSO 175 libpool(3LIB), pool_error(3POOL), attributes(5) 176 177 178 179 January 18, 2020 POOL_GET_BINDING(3POOL)