• Home
  • Raw
  • Download

Lines Matching refs:seq

43 static void bpf_iter_inc_seq_num(struct seq_file *seq)  in bpf_iter_inc_seq_num()  argument
47 iter_priv = container_of(seq->private, struct bpf_iter_priv_data, in bpf_iter_inc_seq_num()
52 static void bpf_iter_dec_seq_num(struct seq_file *seq) in bpf_iter_dec_seq_num() argument
56 iter_priv = container_of(seq->private, struct bpf_iter_priv_data, in bpf_iter_dec_seq_num()
61 static void bpf_iter_done_stop(struct seq_file *seq) in bpf_iter_done_stop() argument
65 iter_priv = container_of(seq->private, struct bpf_iter_priv_data, in bpf_iter_done_stop()
83 struct seq_file *seq = file->private_data; in bpf_seq_read() local
88 mutex_lock(&seq->lock); in bpf_seq_read()
90 if (!seq->buf) { in bpf_seq_read()
91 seq->size = PAGE_SIZE << 3; in bpf_seq_read()
92 seq->buf = kvmalloc(seq->size, GFP_KERNEL); in bpf_seq_read()
93 if (!seq->buf) { in bpf_seq_read()
99 if (seq->count) { in bpf_seq_read()
100 n = min(seq->count, size); in bpf_seq_read()
101 err = copy_to_user(buf, seq->buf + seq->from, n); in bpf_seq_read()
106 seq->count -= n; in bpf_seq_read()
107 seq->from += n; in bpf_seq_read()
112 seq->from = 0; in bpf_seq_read()
113 p = seq->op->start(seq, &seq->index); in bpf_seq_read()
118 seq->op->stop(seq, p); in bpf_seq_read()
119 seq->count = 0; in bpf_seq_read()
123 err = seq->op->show(seq, p); in bpf_seq_read()
128 bpf_iter_dec_seq_num(seq); in bpf_seq_read()
129 seq->count = 0; in bpf_seq_read()
130 } else if (err < 0 || seq_has_overflowed(seq)) { in bpf_seq_read()
133 seq->op->stop(seq, p); in bpf_seq_read()
134 seq->count = 0; in bpf_seq_read()
139 loff_t pos = seq->index; in bpf_seq_read()
142 offs = seq->count; in bpf_seq_read()
143 p = seq->op->next(seq, p, &seq->index); in bpf_seq_read()
144 if (pos == seq->index) { in bpf_seq_read()
147 seq->op->next); in bpf_seq_read()
148 seq->index++; in bpf_seq_read()
155 bpf_iter_inc_seq_num(seq); in bpf_seq_read()
157 if (seq->count >= size) in bpf_seq_read()
163 seq->op->stop(seq, p); in bpf_seq_read()
169 err = seq->op->show(seq, p); in bpf_seq_read()
171 bpf_iter_dec_seq_num(seq); in bpf_seq_read()
172 seq->count = offs; in bpf_seq_read()
173 } else if (err < 0 || seq_has_overflowed(seq)) { in bpf_seq_read()
174 seq->count = offs; in bpf_seq_read()
178 seq->op->stop(seq, p); in bpf_seq_read()
185 offs = seq->count; in bpf_seq_read()
187 seq->op->stop(seq, p); in bpf_seq_read()
189 if (!seq_has_overflowed(seq)) { in bpf_seq_read()
190 bpf_iter_done_stop(seq); in bpf_seq_read()
192 seq->count = offs; in bpf_seq_read()
200 n = min(seq->count, size); in bpf_seq_read()
201 err = copy_to_user(buf, seq->buf, n); in bpf_seq_read()
207 seq->count -= n; in bpf_seq_read()
208 seq->from = n; in bpf_seq_read()
214 mutex_unlock(&seq->lock); in bpf_seq_read()
242 struct seq_file *seq; in iter_release() local
244 seq = file->private_data; in iter_release()
245 if (!seq) in iter_release()
248 iter_priv = container_of(seq->private, struct bpf_iter_priv_data, in iter_release()
252 iter_priv->seq_info->fini_seq_private(seq->private); in iter_release()
255 seq->private = iter_priv; in iter_release()
394 struct seq_file *seq) in bpf_iter_link_show_fdinfo() argument
400 seq_printf(seq, in bpf_iter_link_show_fdinfo()
406 show_fdinfo(&iter_link->aux, seq); in bpf_iter_link_show_fdinfo()
549 struct seq_file *seq; in prepare_seq_file() local
574 seq = file->private_data; in prepare_seq_file()
575 seq->private = priv_data->target_private; in prepare_seq_file()
626 struct seq_file *seq; in bpf_iter_get_info() local
629 seq = meta->seq; in bpf_iter_get_info()
630 if (seq->file->f_op != &bpf_iter_fops) in bpf_iter_get_info()
633 seq_priv = seq->private; in bpf_iter_get_info()