Lines Matching refs:ap
44 struct addr_pool *ap; in CreateAddressPool() local
50 ap = (addr_pool_t)calloc(1, sizeof(struct addr_pool)); in CreateAddressPool()
51 if (!ap) in CreateAddressPool()
56 ap->pool = (struct addr_entry *)calloc(num_entry, sizeof(struct addr_entry)); in CreateAddressPool()
57 if (!ap->pool) { in CreateAddressPool()
58 free(ap); in CreateAddressPool()
63 ap->mapper = (struct addr_map *)calloc(num_addr, sizeof(struct addr_map)); in CreateAddressPool()
64 if (!ap->mapper) { in CreateAddressPool()
65 free(ap->pool); in CreateAddressPool()
66 free(ap); in CreateAddressPool()
70 TAILQ_INIT(&ap->free_list); in CreateAddressPool()
71 TAILQ_INIT(&ap->used_list); in CreateAddressPool()
73 if (pthread_mutex_init(&ap->lock, NULL)) { in CreateAddressPool()
74 free(ap->pool); in CreateAddressPool()
75 free(ap); in CreateAddressPool()
79 pthread_mutex_lock(&ap->lock); in CreateAddressPool()
81 ap->addr_base = ntohl(addr_base); in CreateAddressPool()
82 ap->num_addr = num_addr; in CreateAddressPool()
86 addr_h = ap->addr_base + i; in CreateAddressPool()
89 ap->pool[cnt].addr.sin_addr.s_addr = addr; in CreateAddressPool()
90 ap->pool[cnt].addr.sin_port = htons(j); in CreateAddressPool()
91 ap->mapper[i].addrmap[j] = &ap->pool[cnt]; in CreateAddressPool()
93 TAILQ_INSERT_TAIL(&ap->free_list, &ap->pool[cnt], addr_link); in CreateAddressPool()
99 ap->num_entry = cnt; in CreateAddressPool()
100 ap->num_free = cnt; in CreateAddressPool()
101 ap->num_used = 0; in CreateAddressPool()
103 pthread_mutex_unlock(&ap->lock); in CreateAddressPool()
105 return ap; in CreateAddressPool()
112 struct addr_pool *ap; in CreateAddressPoolPerCore() local
120 ap = (addr_pool_t)calloc(1, sizeof(struct addr_pool)); in CreateAddressPoolPerCore()
121 if (!ap) in CreateAddressPoolPerCore()
126 ap->pool = (struct addr_entry *)calloc(num_entry, sizeof(struct addr_entry)); in CreateAddressPoolPerCore()
127 if (!ap->pool) { in CreateAddressPoolPerCore()
128 free(ap); in CreateAddressPoolPerCore()
133 ap->mapper = (struct addr_map *)calloc(num_addr, sizeof(struct addr_map)); in CreateAddressPoolPerCore()
134 if (!ap->mapper) { in CreateAddressPoolPerCore()
135 free(ap->pool); in CreateAddressPoolPerCore()
136 free(ap); in CreateAddressPoolPerCore()
140 TAILQ_INIT(&ap->free_list); in CreateAddressPoolPerCore()
141 TAILQ_INIT(&ap->used_list); in CreateAddressPoolPerCore()
143 if (pthread_mutex_init(&ap->lock, NULL)) { in CreateAddressPoolPerCore()
144 free(ap->pool); in CreateAddressPoolPerCore()
145 free(ap); in CreateAddressPoolPerCore()
149 pthread_mutex_lock(&ap->lock); in CreateAddressPoolPerCore()
151 ap->addr_base = ntohl(saddr_base); in CreateAddressPoolPerCore()
152 ap->num_addr = num_addr; in CreateAddressPoolPerCore()
159 saddr_h = ap->addr_base + i; in CreateAddressPoolPerCore()
171 ap->pool[cnt].addr.sin_addr.s_addr = saddr; in CreateAddressPoolPerCore()
172 ap->pool[cnt].addr.sin_port = htons(sport_h); in CreateAddressPoolPerCore()
173 ap->mapper[i].addrmap[j] = &ap->pool[cnt]; in CreateAddressPoolPerCore()
174 TAILQ_INSERT_TAIL(&ap->free_list, &ap->pool[cnt], addr_link); in CreateAddressPoolPerCore()
179 ap->num_entry = cnt; in CreateAddressPoolPerCore()
180 ap->num_free = cnt; in CreateAddressPoolPerCore()
181 ap->num_used = 0; in CreateAddressPoolPerCore()
183 if (ap->num_entry < g_config.mos->max_concurrency) { in CreateAddressPoolPerCore()
186 ap->num_entry, g_config.mos->max_concurrency); in CreateAddressPoolPerCore()
189 pthread_mutex_unlock(&ap->lock); in CreateAddressPoolPerCore()
191 return ap; in CreateAddressPoolPerCore()
195 DestroyAddressPool(addr_pool_t ap) in DestroyAddressPool() argument
197 if (!ap) in DestroyAddressPool()
200 if (ap->pool) { in DestroyAddressPool()
201 free(ap->pool); in DestroyAddressPool()
202 ap->pool = NULL; in DestroyAddressPool()
205 if (ap->mapper) { in DestroyAddressPool()
206 free(ap->mapper); in DestroyAddressPool()
207 ap->mapper = NULL; in DestroyAddressPool()
210 pthread_mutex_destroy(&ap->lock); in DestroyAddressPool()
212 free(ap); in DestroyAddressPool()
216 FetchAddress(addr_pool_t ap, int core, int num_queues, in FetchAddress() argument
223 if (!ap || !daddr || !saddr) in FetchAddress()
226 pthread_mutex_lock(&ap->lock); in FetchAddress()
228 walk = TAILQ_FIRST(&ap->free_list); in FetchAddress()
256 TAILQ_REMOVE(&ap->free_list, walk, addr_link); in FetchAddress()
257 TAILQ_INSERT_TAIL(&ap->used_list, walk, addr_link); in FetchAddress()
258 ap->num_free--; in FetchAddress()
259 ap->num_used++; in FetchAddress()
263 pthread_mutex_unlock(&ap->lock); in FetchAddress()
269 FetchAddressPerCore(addr_pool_t ap, int core, int num_queues, in FetchAddressPerCore() argument
275 if (!ap || !daddr || !saddr) in FetchAddressPerCore()
278 pthread_mutex_lock(&ap->lock); in FetchAddressPerCore()
281 walk = TAILQ_FIRST(&ap->free_list); in FetchAddressPerCore()
284 TAILQ_REMOVE(&ap->free_list, walk, addr_link); in FetchAddressPerCore()
285 TAILQ_INSERT_TAIL(&ap->used_list, walk, addr_link); in FetchAddressPerCore()
286 ap->num_free--; in FetchAddressPerCore()
287 ap->num_used++; in FetchAddressPerCore()
291 pthread_mutex_unlock(&ap->lock); in FetchAddressPerCore()
297 FreeAddress(addr_pool_t ap, const struct sockaddr_in *addr) in FreeAddress() argument
302 if (!ap || !addr) in FreeAddress()
305 pthread_mutex_lock(&ap->lock); in FreeAddress()
307 if (ap->mapper) { in FreeAddress()
310 int index = addr_h - ap->addr_base; in FreeAddress()
312 if (index >= 0 && index < ap->num_addr) { in FreeAddress()
313 walk = ap->mapper[addr_h - ap->addr_base].addrmap[port_h]; in FreeAddress()
319 walk = TAILQ_FIRST(&ap->used_list); in FreeAddress()
333 TAILQ_REMOVE(&ap->used_list, walk, addr_link); in FreeAddress()
334 TAILQ_INSERT_TAIL(&ap->free_list, walk, addr_link); in FreeAddress()
335 ap->num_free++; in FreeAddress()
336 ap->num_used--; in FreeAddress()
340 pthread_mutex_unlock(&ap->lock); in FreeAddress()