mirror of
				https://github.com/go-delve/delve.git
				synced 2025-10-31 10:47:27 +08:00 
			
		
		
		
	 64d5ce26d6
			
		
	
	64d5ce26d6
	
	
	
		
			
			* Remove standard C headers since we have vmlinux.h already * Simplify get_goroutine_id() implementation, this reduces a map and thus reduces runtime memory comsumption. While at it, unify all indention using 4 spaces. Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com>
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // function_parameter stores information about a single parameter to a function.
 | |
| typedef struct function_parameter {
 | |
|     // Type of the parameter as defined by the reflect.Kind enum.
 | |
|     unsigned int kind;
 | |
|     // Size of the variable in bytes.
 | |
|     unsigned int size;
 | |
| 
 | |
|     // Offset from stack pointer. This should only be set from the Go side.
 | |
|     int offset;
 | |
| 
 | |
|     // If true, the parameter is passed in a register.
 | |
|     bool in_reg;
 | |
|     // The number of register pieces the parameter is passed in.
 | |
|     int n_pieces;
 | |
|     // If in_reg is true, this represents the registers that the parameter is passed in.
 | |
|     // This is an array because the number of registers may vary and the parameter may be
 | |
|     // passed in multiple registers.
 | |
|     int reg_nums[6];
 | |
| 
 | |
|     // The following are filled in by the eBPF program.
 | |
|     size_t daddr;   // Data address.
 | |
|     char val[0x30];       // Value of the parameter.
 | |
|     char deref_val[0x30]; // Dereference value of the parameter.
 | |
| } function_parameter_t;
 | |
| 
 | |
| // function_parameter_list holds info about the function parameters and
 | |
| // stores information on up to 6 parameters.
 | |
| typedef struct function_parameter_list {
 | |
|     unsigned int goid_offset; // Offset of the `goid` struct member.
 | |
|     long long g_addr_offset;  // Offset of the Goroutine struct from the TLS segment.
 | |
|     int goroutine_id;
 | |
| 
 | |
|     unsigned long long int fn_addr;
 | |
|     bool is_ret;
 | |
| 
 | |
|     unsigned int n_parameters;          // number of parameters.
 | |
|     function_parameter_t params[6];     // list of parameters.
 | |
| 
 | |
|     unsigned int n_ret_parameters;      // number of return parameters.
 | |
|     function_parameter_t ret_params[6]; // list of return parameters.
 | |
| } function_parameter_list_t;
 |