diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2010-07-22 11:58:05 +0200 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2010-07-27 11:04:11 +0200 |
commit | 1bcc69fb6a48edb3ddf2e8c42f1d1c242196bf74 (patch) | |
tree | 0399ebe11dc5a153d22acef24c67c27aa85eb0ab /tools | |
parent | 9f6d3c4b76314c40c866a935d78c80fd284768bd (diff) | |
download | lwn-1bcc69fb6a48edb3ddf2e8c42f1d1c242196bf74.tar.gz lwn-1bcc69fb6a48edb3ddf2e8c42f1d1c242196bf74.zip |
tools/firewire: nosy-dump: fix it on x86-64
Replace 'unsigned long' and the (unaffected) 'unsigned int' by uint32_t
if they represent quadlets.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/firewire/decode-fcp.c | 12 | ||||
-rw-r--r-- | tools/firewire/nosy-dump.c | 37 | ||||
-rw-r--r-- | tools/firewire/nosy-dump.h | 272 |
3 files changed, 112 insertions, 209 deletions
diff --git a/tools/firewire/decode-fcp.c b/tools/firewire/decode-fcp.c index cb9a31b37530..b6b372537618 100644 --- a/tools/firewire/decode-fcp.c +++ b/tools/firewire/decode-fcp.c @@ -158,12 +158,12 @@ static const struct avc_opcode_info opcode_info[256] = { }; struct avc_frame { - unsigned int operand0 : 8; - unsigned int opcode : 8; - unsigned int subunit_id : 3; - unsigned int subunit_type : 5; - unsigned int ctype : 4; - unsigned int cts : 4; + uint32_t operand0:8; + uint32_t opcode:8; + uint32_t subunit_id:3; + uint32_t subunit_type:5; + uint32_t ctype:4; + uint32_t cts:4; }; static void diff --git a/tools/firewire/nosy-dump.c b/tools/firewire/nosy-dump.c index 64e5ea438928..0bad0a42d772 100644 --- a/tools/firewire/nosy-dump.c +++ b/tools/firewire/nosy-dump.c @@ -46,7 +46,7 @@ enum { }; static void -print_packet(unsigned long *data, size_t length); +print_packet(uint32_t *data, size_t length); static void decode_link_packet(struct link_packet *packet, size_t length, int include_flags, int exclude_flags); @@ -151,7 +151,7 @@ sigint_handler(int signal_num) } struct subaction * -subaction_create(unsigned long *data, size_t length) +subaction_create(uint32_t *data, size_t length) { struct subaction *sa; @@ -247,9 +247,9 @@ handle_transaction(struct link_transaction *t) if (option_verbose) { list_for_each_entry(sa, &t->request_list, link) - print_packet((unsigned long *) &sa->packet, sa->length); + print_packet((uint32_t *) &sa->packet, sa->length); list_for_each_entry(sa, &t->response_list, link) - print_packet((unsigned long *) &sa->packet, sa->length); + print_packet((uint32_t *) &sa->packet, sa->length); } printf("\r\n"); @@ -506,7 +506,7 @@ static struct packet_info packet_info[] = { }; int -handle_packet(unsigned long *data, size_t length) +handle_packet(uint32_t *data, size_t length) { if (length == 0) { printf("bus reset\r\n"); @@ -642,8 +642,8 @@ handle_packet(unsigned long *data, size_t length) unsigned int get_bits(struct link_packet *packet, int offset, int width) { - unsigned long *data = (unsigned long *) packet; - unsigned long index, shift, mask; + uint32_t *data = (uint32_t *) packet; + uint32_t index, shift, mask; index = offset / 32 + 1; shift = 32 - (offset & 31) - width; @@ -703,7 +703,7 @@ decode_link_packet(struct link_packet *packet, size_t length, offset = f->offset; if (f->value_names != NULL) { - unsigned long bits; + uint32_t bits; bits = get_bits(packet, offset, f->width); printf("%s", f->value_names[bits]); @@ -741,18 +741,18 @@ decode_link_packet(struct link_packet *packet, size_t length, } static void -print_packet(unsigned long *data, size_t length) +print_packet(uint32_t *data, size_t length) { int i; - printf("%6lu ", data[0]); + printf("%6u ", data[0]); if (length == 4) printf("bus reset"); else if (length < sizeof(struct phy_packet)) { printf("short packet: "); for (i = 1; i < length / 4; i++) - printf("%s%08lx", i == 0 ? "[" : " ", data[i]); + printf("%s%08x", i == 0 ? "[" : " ", data[i]); printf("]"); } @@ -803,7 +803,7 @@ print_packet(unsigned long *data, size_t length) default: printf("unknown phy packet: "); for (i = 1; i < length / 4; i++) - printf("%s%08lx", i == 0 ? "[" : " ", data[i]); + printf("%s%08x", i == 0 ? "[" : " ", data[i]); printf("]"); break; } @@ -829,7 +829,7 @@ print_packet(unsigned long *data, size_t length) #define CLEAR "\033[H\033[2J" static void -print_stats(unsigned long *data, size_t length) +print_stats(uint32_t *data, size_t length) { static int bus_reset_count, short_packet_count, phy_packet_count; static int tcode_count[16]; @@ -959,8 +959,8 @@ int main(int argc, const char *argv[]) setvbuf(stdout, NULL, _IOLBF, BUFSIZ); if (1) { - unsigned long buf[128 * 1024]; - unsigned int filter; + uint32_t buf[128 * 1024]; + uint32_t filter; int length; filter = ~0; @@ -968,11 +968,10 @@ int main(int argc, const char *argv[]) filter &= ~(1 <<TCODE_ISO_DATA); if (!option_cycle_start) filter &= ~(1 << TCODE_CYCLE_START); - if (view == VIEW_STATS) - ioctl(fd, NOSY_IOC_FILTER, ~(1 << TCODE_CYCLE_START)); - else - ioctl(fd, NOSY_IOC_FILTER, filter); + filter = ~(1 << TCODE_CYCLE_START); + + ioctl(fd, NOSY_IOC_FILTER, filter); ioctl(fd, NOSY_IOC_START); diff --git a/tools/firewire/nosy-dump.h b/tools/firewire/nosy-dump.h index d8bcb61ab954..60cf556e228e 100644 --- a/tools/firewire/nosy-dump.h +++ b/tools/firewire/nosy-dump.h @@ -33,61 +33,63 @@ #define SPEED_200 0x1 #define SPEED_400 0x2 -struct phy_packet { - unsigned long timestamp; +#include <stdint.h> +struct phy_packet { + uint32_t timestamp; union { struct { - unsigned int zero : 24; - unsigned int phy_id : 6; - unsigned int identifier : 2; + uint32_t zero:24; + uint32_t phy_id:6; + uint32_t identifier:2; } common, link_on; + struct { - unsigned int zero : 16; - unsigned int gap_count : 6; - unsigned int set_gap_count : 1; - unsigned int set_root : 1; - unsigned int root_id : 6; - unsigned int identifier : 2; + uint32_t zero:16; + uint32_t gap_count:6; + uint32_t set_gap_count:1; + uint32_t set_root:1; + uint32_t root_id:6; + uint32_t identifier:2; } phy_config; + struct { - unsigned int more_packets : 1; - unsigned int initiated_reset : 1; - unsigned int port2 : 2; - unsigned int port1 : 2; - unsigned int port0 : 2; - unsigned int power_class : 3; - unsigned int contender : 1; - unsigned int phy_delay : 2; - unsigned int phy_speed : 2; - unsigned int gap_count : 6; - unsigned int link_active : 1; - unsigned int extended : 1; - unsigned int phy_id : 6; - unsigned int identifier : 2; + uint32_t more_packets:1; + uint32_t initiated_reset:1; + uint32_t port2:2; + uint32_t port1:2; + uint32_t port0:2; + uint32_t power_class:3; + uint32_t contender:1; + uint32_t phy_delay:2; + uint32_t phy_speed:2; + uint32_t gap_count:6; + uint32_t link_active:1; + uint32_t extended:1; + uint32_t phy_id:6; + uint32_t identifier:2; } self_id; struct { - unsigned int more_packets : 1; - unsigned int reserved1 : 1; - unsigned int porth : 2; - unsigned int portg : 2; - unsigned int portf : 2; - unsigned int porte : 2; - unsigned int portd : 2; - unsigned int portc : 2; - unsigned int portb : 2; - unsigned int porta : 2; - unsigned int reserved0 : 2; - unsigned int sequence : 3; - unsigned int extended : 1; - unsigned int phy_id : 6; - unsigned int identifier : 2; + uint32_t more_packets:1; + uint32_t reserved1:1; + uint32_t porth:2; + uint32_t portg:2; + uint32_t portf:2; + uint32_t porte:2; + uint32_t portd:2; + uint32_t portc:2; + uint32_t portb:2; + uint32_t porta:2; + uint32_t reserved0:2; + uint32_t sequence:3; + uint32_t extended:1; + uint32_t phy_id:6; + uint32_t identifier:2; } ext_self_id; }; - - unsigned long inverted; - unsigned long ack; + uint32_t inverted; + uint32_t ack; }; #define PHY_PACKET_CONFIGURATION 0x00 @@ -95,186 +97,88 @@ struct phy_packet { #define PHY_PACKET_SELF_ID 0x02 struct link_packet { - unsigned long timestamp; - + uint32_t timestamp; union { struct { - unsigned int priority : 4; - unsigned int tcode : 4; - unsigned int rt : 2; - unsigned int tlabel : 6; - unsigned int destination : 16; + uint32_t priority:4; + uint32_t tcode:4; + uint32_t rt:2; + uint32_t tlabel:6; + uint32_t destination:16; - unsigned int offset_high : 16; - unsigned int source : 16; + uint32_t offset_high:16; + uint32_t source:16; - unsigned long offset_low; + uint32_t offset_low; } common; struct { - unsigned int priority : 4; - unsigned int tcode : 4; - unsigned int rt : 2; - unsigned int tlabel : 6; - unsigned int destination : 16; - - unsigned int offset_high : 16; - unsigned int source : 16; - - unsigned long offset_low; - - unsigned long crc; + uint32_t common[3]; + uint32_t crc; } read_quadlet; struct { - unsigned int priority : 4; - unsigned int tcode : 4; - unsigned int rt : 2; - unsigned int tlabel : 6; - unsigned int destination : 16; - - unsigned int reserved0 : 12; - unsigned int rcode : 4; - unsigned int source : 16; - - unsigned long reserved1; - - unsigned long data; - - unsigned long crc; + uint32_t common[3]; + uint32_t data; + uint32_t crc; } read_quadlet_response; struct { - unsigned int priority : 4; - unsigned int tcode : 4; - unsigned int rt : 2; - unsigned int tlabel : 6; - unsigned int destination : 16; - - unsigned int offset_high : 16; - unsigned int source : 16; - - unsigned long offset_low; - - unsigned int extended_tcode : 16; - unsigned int data_length : 16; - - unsigned long crc; + uint32_t common[3]; + uint32_t extended_tcode:16; + uint32_t data_length:16; + uint32_t crc; } read_block; struct { - unsigned int priority : 4; - unsigned int tcode : 4; - unsigned int rt : 2; - unsigned int tlabel : 6; - unsigned int destination : 16; - - unsigned int reserved0 : 12; - unsigned int rcode : 4; - unsigned int source : 16; - - unsigned long reserved1; - - unsigned int extended_tcode : 16; - unsigned int data_length : 16; - - unsigned long crc; - - unsigned long data[0]; - + uint32_t common[3]; + uint32_t extended_tcode:16; + uint32_t data_length:16; + uint32_t crc; + uint32_t data[0]; /* crc and ack follows. */ - } read_block_response; struct { - unsigned int priority : 4; - unsigned int tcode : 4; - unsigned int rt : 2; - unsigned int tlabel : 6; - unsigned int destination : 16; - - unsigned int offset_high : 16; - unsigned int source : 16; - - unsigned long offset_low; - - unsigned long data; - - unsigned long crc; - + uint32_t common[3]; + uint32_t data; + uint32_t crc; } write_quadlet; struct { - unsigned int priority : 4; - unsigned int tcode : 4; - unsigned int rt : 2; - unsigned int tlabel : 6; - unsigned int destination : 16; - - unsigned int offset_high : 16; - unsigned int source : 16; - - unsigned int offset_low : 32; - - unsigned int extended_tcode : 16; - unsigned int data_length : 16; - - unsigned long crc; - unsigned long data[0]; - + uint32_t common[3]; + uint32_t extended_tcode:16; + uint32_t data_length:16; + uint32_t crc; + uint32_t data[0]; /* crc and ack follows. */ - } write_block; struct { - unsigned int priority : 4; - unsigned int tcode : 4; - unsigned int rt : 2; - unsigned int tlabel : 6; - unsigned int destination : 16; - - unsigned int reserved0 : 12; - unsigned int rcode : 4; - unsigned int source : 16; - - unsigned long reserved1; - - unsigned long crc; + uint32_t common[3]; + uint32_t crc; } write_response; struct { - unsigned int priority : 4; - unsigned int tcode : 4; - unsigned int rt : 2; - unsigned int tlabel : 6; - unsigned int destination : 16; - - unsigned int offset_high : 16; - unsigned int source : 16; - - unsigned long offset_low; - - unsigned long data; - - unsigned long crc; + uint32_t common[3]; + uint32_t data; + uint32_t crc; } cycle_start; struct { - unsigned int sy : 4; - unsigned int tcode : 4; - unsigned int channel : 6; - unsigned int tag : 2; - unsigned int data_length : 16; + uint32_t sy:4; + uint32_t tcode:4; + uint32_t channel:6; + uint32_t tag:2; + uint32_t data_length:16; - unsigned long crc; + uint32_t crc; } iso_data; - }; - }; struct subaction { - unsigned long ack; + uint32_t ack; size_t length; struct list link; struct link_packet packet; |