mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +00:00 
			
		
		
		
	this is an atempt to make the export of functions typesafe. I replaced the jumptable void ** by a struct (jt_funcs) with function pointers. The EXPORT_FUNC macro now has 3 fixed parameters and one variadic parameter The first is the name of the exported function, the rest of the parameters are used to format a functionpointer in the jumptable, the EXPORT_FUNC macros are expanded three times, 1. to declare the members of the struct 2. to initialize the structmember pointers 3. to call the functions in stubs.c Signed-off-by: Martin Dorwig <dorwig@tetronik.com> Acked-by: Simon Glass <sjg@chromium.org> Signed-off-by: Simon Glass <sjg@chromium.org> (resending to the list since my tweaks are not quite trivial)
		
			
				
	
	
		
			24 lines
		
	
	
		
			358 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			358 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <common.h>
 | |
| #include <exports.h>
 | |
| #include <spi.h>
 | |
| #include <i2c.h>
 | |
| 
 | |
| DECLARE_GLOBAL_DATA_PTR;
 | |
| 
 | |
| __attribute__((unused)) static void dummy(void)
 | |
| {
 | |
| }
 | |
| 
 | |
| unsigned long get_version(void)
 | |
| {
 | |
| 	return XF_VERSION;
 | |
| }
 | |
| 
 | |
| #define EXPORT_FUNC(f, a, x, ...)  gd->jt->x = f;
 | |
| 
 | |
| void jumptable_init(void)
 | |
| {
 | |
| 	gd->jt = malloc(sizeof(struct jt_funcs));
 | |
| #include <_exports.h>
 | |
| }
 |