hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/kernel/trace/trace_seq.c
....@@ -30,9 +30,6 @@
3030 /* How much buffer is left on the trace_seq? */
3131 #define TRACE_SEQ_BUF_LEFT(s) seq_buf_buffer_left(&(s)->seq)
3232
33
-/* How much buffer is written? */
34
-#define TRACE_SEQ_BUF_USED(s) seq_buf_used(&(s)->seq)
35
-
3633 /*
3734 * trace_seq should work with being initialized with 0s.
3835 */
....@@ -376,3 +373,33 @@
376373 return seq_buf_to_user(&s->seq, ubuf, cnt);
377374 }
378375 EXPORT_SYMBOL_GPL(trace_seq_to_user);
376
+
377
+int trace_seq_hex_dump(struct trace_seq *s, const char *prefix_str,
378
+ int prefix_type, int rowsize, int groupsize,
379
+ const void *buf, size_t len, bool ascii)
380
+{
381
+ unsigned int save_len = s->seq.len;
382
+
383
+ if (s->full)
384
+ return 0;
385
+
386
+ __trace_seq_init(s);
387
+
388
+ if (TRACE_SEQ_BUF_LEFT(s) < 1) {
389
+ s->full = 1;
390
+ return 0;
391
+ }
392
+
393
+ seq_buf_hex_dump(&(s->seq), prefix_str,
394
+ prefix_type, rowsize, groupsize,
395
+ buf, len, ascii);
396
+
397
+ if (unlikely(seq_buf_has_overflowed(&s->seq))) {
398
+ s->seq.len = save_len;
399
+ s->full = 1;
400
+ return 0;
401
+ }
402
+
403
+ return 1;
404
+}
405
+EXPORT_SYMBOL(trace_seq_hex_dump);