cregit-Linux how code gets into the kernel

Release 4.12 include/linux/trace_seq.h

Directory: include/linux
#ifndef _LINUX_TRACE_SEQ_H

#define _LINUX_TRACE_SEQ_H

#include <linux/seq_buf.h>

#include <asm/page.h>

/*
 * Trace sequences are used to allow a function to call several other functions
 * to create a string of data to use (up to a max of PAGE_SIZE).
 */


struct trace_seq {
	
unsigned char		buffer[PAGE_SIZE];
	
struct seq_buf		seq;
	
int			full;
};


static inline void trace_seq_init(struct trace_seq *s) { seq_buf_init(&s->seq, s->buffer, PAGE_SIZE); s->full = 0; }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt2784.38%266.67%
Johannes Berg515.62%133.33%
Total32100.00%3100.00%

/** * trace_seq_used - amount of actual data written to buffer * @s: trace sequence descriptor * * Returns the amount of data written to the buffer. * * IMPORTANT! * * Use this instead of @s->seq.len if you need to pass the amount * of data from the buffer to another buffer (userspace, or what not). * The @s->seq.len on overflow is bigger than the buffer size and * using it can cause access to undefined memory. */
static inline int trace_seq_used(struct trace_seq *s) { return seq_buf_used(&s->seq); }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt21100.00%1100.00%
Total21100.00%1100.00%

/** * trace_seq_buffer_ptr - return pointer to next location in buffer * @s: trace sequence descriptor * * Returns the pointer to the buffer where the next write to * the buffer will happen. This is useful to save the location * that is about to be written to and then return the result * of that write. */
static inline unsigned char * trace_seq_buffer_ptr(struct trace_seq *s) { return s->buffer + seq_buf_used(&s->seq); }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt27100.00%3100.00%
Total27100.00%3100.00%

/** * trace_seq_has_overflowed - return true if the trace_seq took too much * @s: trace sequence descriptor * * Returns true if too much data was added to the trace_seq and it is * now full and will not take anymore. */
static inline bool trace_seq_has_overflowed(struct trace_seq *s) { return s->full || seq_buf_has_overflowed(&s->seq); }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt25100.00%2100.00%
Total25100.00%2100.00%

/* * Currently only defined when tracing is enabled. */ #ifdef CONFIG_TRACING extern __printf(2, 3) void trace_seq_printf(struct trace_seq *s, const char *fmt, ...); extern __printf(2, 0) void trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args); extern void trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary); extern int trace_print_seq(struct seq_file *m, struct trace_seq *s); extern int trace_seq_to_user(struct trace_seq *s, char __user *ubuf, int cnt); extern void trace_seq_puts(struct trace_seq *s, const char *str); extern void trace_seq_putc(struct trace_seq *s, unsigned char c); extern void trace_seq_putmem(struct trace_seq *s, const void *mem, unsigned int len); extern void trace_seq_putmem_hex(struct trace_seq *s, const void *mem, unsigned int len); extern int trace_seq_path(struct trace_seq *s, const struct path *path); extern void trace_seq_bitmask(struct trace_seq *s, const unsigned long *maskp, int nmaskbits); #else /* CONFIG_TRACING */
static inline void trace_seq_printf(struct trace_seq *s, const char *fmt, ...) { }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt18100.00%2100.00%
Total18100.00%2100.00%


static inline void trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary) { }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt21100.00%2100.00%
Total21100.00%2100.00%


static inline void trace_seq_bitmask(struct trace_seq *s, const unsigned long *maskp, int nmaskbits) { }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt20100.00%2100.00%
Total20100.00%2100.00%


static inline int trace_print_seq(struct seq_file *m, struct trace_seq *s) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt20100.00%2100.00%
Total20100.00%2100.00%


static inline int trace_seq_to_user(struct trace_seq *s, char __user *ubuf, int cnt) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt23100.00%2100.00%
Total23100.00%2100.00%


static inline void trace_seq_puts(struct trace_seq *s, const char *str) { }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt16100.00%2100.00%
Total16100.00%2100.00%


static inline void trace_seq_putc(struct trace_seq *s, unsigned char c) { }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt15100.00%2100.00%
Total15100.00%2100.00%


static inline void trace_seq_putmem(struct trace_seq *s, const void *mem, unsigned int len) { }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt20100.00%3100.00%
Total20100.00%3100.00%


static inline void trace_seq_putmem_hex(struct trace_seq *s, const void *mem, unsigned int len) { }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt20100.00%3100.00%
Total20100.00%3100.00%


static inline int trace_seq_path(struct trace_seq *s, const struct path *path) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt2095.24%150.00%
Al Viro14.76%150.00%
Total21100.00%2100.00%

#endif /* CONFIG_TRACING */ #endif /* _LINUX_TRACE_SEQ_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Steven Rostedt51995.58%1168.75%
Joe Perches101.84%16.25%
Johannes Berg81.47%16.25%
Wu Zhangjin30.55%16.25%
Al Viro20.37%16.25%
Jiri Olsa10.18%16.25%
Total543100.00%16100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.