| /* Copyright 2006 Fabric7 Systems, Inc */ | 
 |  | 
 | #include <stdio.h> | 
 | #include <stdlib.h> | 
 | #include "ethtool-util.h" | 
 |  | 
 | struct regs_line { | 
 | 		u32	addr; | 
 | 		u32	data; | 
 | }; | 
 |  | 
 | #define VIOC_REGS_LINE_SIZE	sizeof(struct regs_line) | 
 |  | 
 | int vioc_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs) | 
 | { | 
 | 	unsigned int	i; | 
 | 	unsigned int	num_regs; | 
 | 	struct regs_line *reg_info = (struct regs_line *) regs->data; | 
 |  | 
 | 	printf("ethtool_regs\n" | 
 | 		"%-20s = %04x\n" | 
 | 		"%-20s = %04x\n", | 
 | 		"cmd", regs->cmd, | 
 | 		"version", regs->version); | 
 |  | 
 | 	num_regs = regs->len/VIOC_REGS_LINE_SIZE; | 
 |  | 
 | 	for (i = 0; i < num_regs; i++){ | 
 | 		printf("%08x = %08x\n", reg_info[i].addr, reg_info[i].data); | 
 | 	} | 
 |  | 
 | 	return 0; | 
 | } |