tracing: provide trace_seq_reserve()
trace_seq_reserve() allows a caller to reserve space in a trace_seq and write directly into it. This makes it easier to export binary data to userspace via the tracing interface, by simply filling in a struct. Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
							parent
							
								
									2a4efa4245
								
							
						
					
					
						commit
						bdd6df6af9
					
				| @ -167,6 +167,19 @@ int trace_seq_putmem_hex(struct trace_seq *s, void *mem, size_t len) | ||||
| 	return trace_seq_putmem(s, hex, j); | ||||
| } | ||||
| 
 | ||||
| void *trace_seq_reserve(struct trace_seq *s, size_t len) | ||||
| { | ||||
| 	void *ret; | ||||
| 
 | ||||
| 	if (len > ((PAGE_SIZE - 1) - s->len)) | ||||
| 		return NULL; | ||||
| 
 | ||||
| 	ret = s->buffer + s->len; | ||||
| 	s->len += len; | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| int trace_seq_path(struct trace_seq *s, struct path *path) | ||||
| { | ||||
| 	unsigned char *p; | ||||
|  | ||||
| @ -33,6 +33,7 @@ int trace_seq_puts(struct trace_seq *s, const char *str); | ||||
| int trace_seq_putc(struct trace_seq *s, unsigned char c); | ||||
| int trace_seq_putmem(struct trace_seq *s, void *mem, size_t len); | ||||
| int trace_seq_putmem_hex(struct trace_seq *s, void *mem, size_t len); | ||||
| void *trace_seq_reserve(struct trace_seq *s, size_t len); | ||||
| int trace_seq_path(struct trace_seq *s, struct path *path); | ||||
| int seq_print_userip_objs(const struct userstack_entry *entry, | ||||
| 			  struct trace_seq *s, unsigned long sym_flags); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user