forked from mirrors/linux
		
	tools/libpf: Add offsetof/container_of macro in bpf_helpers.h
These two helpers will be used later in bpf_iter bpf program bpf_iter_netlink.c. Put them in bpf_helpers.h since they could be useful in other cases. Signed-off-by: Yonghong Song <yhs@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/bpf/20200509175919.2477104-1-yhs@fb.com
This commit is contained in:
		
							parent
							
								
									c09add2fbc
								
							
						
					
					
						commit
						5fbc220862
					
				
					 1 changed files with 14 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -36,6 +36,20 @@
 | 
			
		|||
#define __weak __attribute__((weak))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Helper macro to manipulate data structures
 | 
			
		||||
 */
 | 
			
		||||
#ifndef offsetof
 | 
			
		||||
#define offsetof(TYPE, MEMBER)  ((size_t)&((TYPE *)0)->MEMBER)
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef container_of
 | 
			
		||||
#define container_of(ptr, type, member)				\
 | 
			
		||||
	({							\
 | 
			
		||||
		void *__mptr = (void *)(ptr);			\
 | 
			
		||||
		((type *)(__mptr - offsetof(type, member)));	\
 | 
			
		||||
	})
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Helper structure used by eBPF C program
 | 
			
		||||
 * to describe BPF map attributes to libbpf loader
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue