/* * netsniff-ng - the packet sniffing beast * Copyright 2009 - 2013 Daniel Borkmann. * Subject to the GPL, version 2. */ #ifndef DISSECTOR_H #define DISSECTOR_H #include #include #include "ring.h" #include "tprintf.h" #include "pcap_io.h" #include "built_in.h" #define PRINT_NORM 0 #define PRINT_LESS 1 #define PRINT_HEX 2 #define PRINT_ASCII 3 #define PRINT_HEX_ASCII 4 #define PRINT_NONE 5 static const char * const packet_types[256]={ "<", /* Incoming */ "B", /* Broadcast */ "M", /* Multicast */ "P", /* Promisc */ ">", /* Outgoing */ "?", /* Unknown */ }; extern char *if_indextoname(unsigned ifindex, char *ifname); static inline const char *__show_ts_source(uint32_t status) { if (status & TP_STATUS_TS_RAW_HARDWARE) return "(raw hw ts)"; else if (status & TP_STATUS_TS_SYS_HARDWARE) return "(sys hw ts)"; else if (status & TP_STATUS_TS_SOFTWARE) return "(sw ts)"; else return ""; } static inline void show_frame_hdr(struct frame_map *hdr, int mode) { char tmp[IFNAMSIZ]; if (mode == PRINT_NONE) return; switch (mode) { case PRINT_LESS: tprintf("%s %s %u", packet_types[hdr->s_ll.sll_pkttype] ? : "?", if_indextoname(hdr->s_ll.sll_ifindex, tmp) ? : "?", hdr->tp_h.tp_len); break; default: tprintf("%s %s %u %us.%uns %s\n", packet_types[hdr->s_ll.sll_pkttype] ? : "?", if_indextoname(hdr->s_ll.sll_ifindex, tmp) ? : "?", hdr->tp_h.tp_len, hdr->tp_h.tp_sec, hdr->tp_h.tp_nsec, __show_ts_source(hdr->tp_h.tp_status)); break; } } extern void dissector_init_all(int fnttype); extern void dissector_entry_point(uint8_t *packet, size_t len, int linktype, int mode); extern void dissector_cleanup_all(void); extern int dissector_set_print_type(void *ptr, int type); #endif /* DISSECTOR_H */ on/devicetree/bindings/iio'>logtreecommitdiff
diff options
context:
space:
mode:
authorMinfei Huang <mnghuan@gmail.com>2016-05-27 14:17:10 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2016-06-27 15:12:14 +0200
commit749d088b8e7f4b9826ede02b9a043e417fa84aa1 (patch)
tree03a21cc3d1eb86ecc2e0a45c889e63a1cb366a3f /Documentation/devicetree/bindings/iio
parent4c2e07c6a29e0129e975727b9f57eede813eea85 (diff)
pvclock: Add CPU barriers to get correct version value
Protocol for the "version" fields is: hypervisor raises it (making it uneven) before it starts updating the fields and raises it again (making it even) when it is done. Thus the guest can make sure the time values it got are consistent by checking the version before and after reading them. Add CPU barries after getting version value just like what function vread_pvclock does, because all of callees in this function is inline. Fixes: 502dfeff239e8313bfbe906ca0a1a6827ac8481b Cc: stable@vger.kernel.org Signed-off-by: Minfei Huang <mnghuan@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'Documentation/devicetree/bindings/iio')