Lines Matching defs:iter

3115 static int bpf_iter_udp_realloc_batch(struct bpf_udp_iter_state *iter,
3119 struct bpf_udp_iter_state *iter = seq->private;
3120 struct udp_iter_state *state = &iter->state;
3129 resume_offset = iter->offset;
3132 if (iter->st_bucket_done)
3145 iter->cur_sk = 0;
3146 iter->end_sk = 0;
3147 iter->st_bucket_done = false;
3156 iter->offset = 0;
3164 iter->offset < resume_offset) {
3165 ++iter->offset;
3168 if (iter->end_sk < iter->max_sk) {
3170 iter->batch[iter->end_sk++] = sk;
3177 if (iter->end_sk)
3182 if (!iter->end_sk)
3185 if (iter->end_sk == batch_sks) {
3189 iter->st_bucket_done = true;
3192 if (!resized && !bpf_iter_udp_realloc_batch(iter, batch_sks * 3 / 2)) {
3200 return iter->batch[0];
3205 struct bpf_udp_iter_state *iter = seq->private;
3208 /* Whenever seq_next() is called, the iter->cur_sk is
3209 * done with seq_show(), so unref the iter->cur_sk.
3211 if (iter->cur_sk < iter->end_sk) {
3212 sock_put(iter->batch[iter->cur_sk++]);
3213 ++iter->offset;
3216 /* After updating iter->cur_sk, check if there are more sockets
3219 if (iter->cur_sk < iter->end_sk)
3220 sk = iter->batch[iter->cur_sk];
3231 /* bpf iter does not support lseek, so it always
3282 static void bpf_iter_udp_put_batch(struct bpf_udp_iter_state *iter)
3284 while (iter->cur_sk < iter->end_sk)
3285 sock_put(iter->batch[iter->cur_sk++]);
3290 struct bpf_udp_iter_state *iter = seq->private;
3301 if (iter->cur_sk < iter->end_sk) {
3302 bpf_iter_udp_put_batch(iter);
3303 iter->st_bucket_done = false;
3538 static int bpf_iter_udp_realloc_batch(struct bpf_udp_iter_state *iter,
3548 bpf_iter_udp_put_batch(iter);
3549 kvfree(iter->batch);
3550 iter->batch = new_batch;
3551 iter->max_sk = new_batch_sz;
3560 struct bpf_udp_iter_state *iter = priv_data;
3567 ret = bpf_iter_udp_realloc_batch(iter, INIT_BATCH_SZ);
3576 struct bpf_udp_iter_state *iter = priv_data;
3579 kvfree(iter->batch);