Lines Matching +full:- +full:s

1 // SPDX-License-Identifier: GPL-2.0
31 * seq_buf_can_fit - can the new data fit in the current buffer?
32 * @s: the seq_buf descriptor
35 * Returns: true if there's enough unused space in the seq_buf buffer
38 static bool seq_buf_can_fit(struct seq_buf *s, size_t len) in seq_buf_can_fit() argument
40 return s->len + len <= s->size; in seq_buf_can_fit()
44 * seq_buf_print_seq - move the contents of seq_buf into a seq_file
46 * @s: the seq_buf descriptor that is the source.
48 * Returns: zero on success, non-zero otherwise.
50 int seq_buf_print_seq(struct seq_file *m, struct seq_buf *s) in seq_buf_print_seq() argument
52 unsigned int len = seq_buf_used(s); in seq_buf_print_seq()
54 return seq_write(m, s->buffer, len); in seq_buf_print_seq()
58 * seq_buf_vprintf - sequence printing of information.
59 * @s: seq_buf descriptor
65 * Returns: zero on success, -1 on overflow.
67 int seq_buf_vprintf(struct seq_buf *s, const char *fmt, va_list args) in seq_buf_vprintf() argument
71 WARN_ON(s->size == 0); in seq_buf_vprintf()
73 if (s->len < s->size) { in seq_buf_vprintf()
74 len = vsnprintf(s->buffer + s->len, s->size - s->len, fmt, args); in seq_buf_vprintf()
75 if (s->len + len < s->size) { in seq_buf_vprintf()
76 s->len += len; in seq_buf_vprintf()
80 seq_buf_set_overflow(s); in seq_buf_vprintf()
81 return -1; in seq_buf_vprintf()
85 * seq_buf_printf - sequence printing of information
86 * @s: seq_buf descriptor
91 * Returns: zero on success, -1 on overflow.
93 int seq_buf_printf(struct seq_buf *s, const char *fmt, ...) in seq_buf_printf() argument
99 ret = seq_buf_vprintf(s, fmt, ap); in seq_buf_printf()
107 * seq_buf_do_printk - printk() seq_buf line by line
108 * @s: seq_buf descriptor
111 * printk()-s a multi-line sequential buffer line by line. The function
112 * makes sure that the buffer in @s is NUL-terminated and safe to read
115 void seq_buf_do_printk(struct seq_buf *s, const char *lvl) in seq_buf_do_printk() argument
119 if (s->size == 0 || s->len == 0) in seq_buf_do_printk()
122 start = seq_buf_str(s); in seq_buf_do_printk()
124 int len = lf - start + 1; in seq_buf_do_printk()
126 printk("%s%.*s", lvl, len, start); in seq_buf_do_printk()
131 if (start < s->buffer + s->len) in seq_buf_do_printk()
132 printk("%s%s\n", lvl, start); in seq_buf_do_printk()
138 * seq_buf_bprintf - Write the printf string from binary arguments
139 * @s: seq_buf descriptor
152 * Returns: zero on success, -1 on overflow.
154 int seq_buf_bprintf(struct seq_buf *s, const char *fmt, const u32 *binary) in seq_buf_bprintf() argument
156 unsigned int len = seq_buf_buffer_left(s); in seq_buf_bprintf()
159 WARN_ON(s->size == 0); in seq_buf_bprintf()
161 if (s->len < s->size) { in seq_buf_bprintf()
162 ret = bstr_printf(s->buffer + s->len, len, fmt, binary); in seq_buf_bprintf()
163 if (s->len + ret < s->size) { in seq_buf_bprintf()
164 s->len += ret; in seq_buf_bprintf()
168 seq_buf_set_overflow(s); in seq_buf_bprintf()
169 return -1; in seq_buf_bprintf()
174 * seq_buf_puts - sequence printing of simple string
175 * @s: seq_buf descriptor
180 * Returns: zero on success, -1 on overflow.
182 int seq_buf_puts(struct seq_buf *s, const char *str) in seq_buf_puts() argument
186 WARN_ON(s->size == 0); in seq_buf_puts()
191 if (seq_buf_can_fit(s, len)) { in seq_buf_puts()
192 memcpy(s->buffer + s->len, str, len); in seq_buf_puts()
194 s->len += len - 1; in seq_buf_puts()
197 seq_buf_set_overflow(s); in seq_buf_puts()
198 return -1; in seq_buf_puts()
203 * seq_buf_putc - sequence printing of simple character
204 * @s: seq_buf descriptor
209 * Returns: zero on success, -1 on overflow.
211 int seq_buf_putc(struct seq_buf *s, unsigned char c) in seq_buf_putc() argument
213 WARN_ON(s->size == 0); in seq_buf_putc()
215 if (seq_buf_can_fit(s, 1)) { in seq_buf_putc()
216 s->buffer[s->len++] = c; in seq_buf_putc()
219 seq_buf_set_overflow(s); in seq_buf_putc()
220 return -1; in seq_buf_putc()
225 * seq_buf_putmem - write raw data into the sequence buffer
226 * @s: seq_buf descriptor
234 * Returns: zero on success, -1 on overflow.
236 int seq_buf_putmem(struct seq_buf *s, const void *mem, unsigned int len) in seq_buf_putmem() argument
238 WARN_ON(s->size == 0); in seq_buf_putmem()
240 if (seq_buf_can_fit(s, len)) { in seq_buf_putmem()
241 memcpy(s->buffer + s->len, mem, len); in seq_buf_putmem()
242 s->len += len; in seq_buf_putmem()
245 seq_buf_set_overflow(s); in seq_buf_putmem()
246 return -1; in seq_buf_putmem()
253 * seq_buf_putmem_hex - write raw memory into the buffer in ASCII hex
254 * @s: seq_buf descriptor
262 * Returns: zero on success, -1 on overflow.
264 int seq_buf_putmem_hex(struct seq_buf *s, const void *mem, argument
272 WARN_ON(s->size == 0);
281 for (i = start_len-1, j = 0; i >= 0; i--) {
292 seq_buf_putmem(s, hex, j);
293 if (seq_buf_has_overflowed(s))
294 return -1;
296 len -= start_len;
303 * seq_buf_path - copy a path into the sequence buffer
304 * @s: seq_buf descriptor
310 * Returns: the number of written bytes on success, -1 on overflow.
312 int seq_buf_path(struct seq_buf *s, const struct path *path, const char *esc) argument
315 size_t size = seq_buf_get_buf(s, &buf);
316 int res = -1;
318 WARN_ON(s->size == 0);
325 res = end - buf;
328 seq_buf_commit(s, res);
334 * seq_buf_to_user - copy the sequence buffer to user space
335 * @s: seq_buf descriptor
342 * or until it reaches the end of the content in the buffer (@s->len),
349 * On failure it returns -EBUSY if all of the content in the
351 * sequence (@s->len == @start).
353 * Returns -EFAULT if the copy to userspace fails.
355 int seq_buf_to_user(struct seq_buf *s, char __user *ubuf, size_t start, int cnt) argument
363 len = seq_buf_used(s);
366 return -EBUSY;
368 len -= start;
371 ret = copy_to_user(ubuf, s->buffer + start, cnt);
373 return -EFAULT;
375 return cnt - ret;
379 * seq_buf_hex_dump - print formatted hex dump into the sequence buffer
380 * @s: seq_buf descriptor
394 * 32 * 3 - maximum bytes per line, each printed into 2 chars + 1 for
396 * 2 - spaces separating hex dump and ASCII representation
397 * 32 - ASCII representation
398 * 1 - terminating '\0'
400 * Returns: zero on success, -1 on overflow.
402 int seq_buf_hex_dump(struct seq_buf *s, const char *prefix_str, int prefix_type, argument
416 remaining -= rowsize;
423 ret = seq_buf_printf(s, "%s%p: %s\n",
427 ret = seq_buf_printf(s, "%s%.8x: %s\n",
431 ret = seq_buf_printf(s, "%s%s\n", prefix_str, linebuf);