| /* { dg-do compile } */ |
| |
| struct Time { |
| long int sec; |
| long usec; |
| }; |
| struct Flow { |
| unsigned short iif; |
| struct Time mtime; |
| }; |
| struct NetFlow { |
| unsigned MaxFlows; |
| unsigned HeaderFields; |
| unsigned short *HeaderFormat; |
| }; |
| static struct NetFlow *netflow; |
| static struct Time start_time; |
| static unsigned char emit_packet[1500]; |
| inline long int cmpmtime(struct Time *t1, struct Time *t2) |
| { |
| return (t1->sec - t2->sec) * 1000 + (t1->usec - t2->usec) / 1000; |
| } |
| static void fill(int fields, unsigned short *format, |
| struct Flow *flow, void *p) |
| { |
| int i; |
| for (i = 0; i < fields; i++) |
| if (format[i] == 21) |
| { |
| unsigned int __v; |
| __v = cmpmtime(&flow->mtime, &start_time); |
| *((unsigned int *) p) = __v; |
| } |
| } |
| void emit_thread() |
| { |
| fill(netflow->HeaderFields, netflow->HeaderFormat, 0, &emit_packet); |
| } |