#ifndef __ORDERED_EVENTS_H #define __ORDERED_EVENTS_H #include struct perf_sample; struct ordered_event { u64 timestamp; u64 file_offset; union perf_event *event; struct list_head list; }; enum oe_flush { OE_FLUSH__NONE, OE_FLUSH__FINAL, OE_FLUSH__ROUND, OE_FLUSH__HALF, }; struct ordered_events; typedef int (*ordered_events__deliver_t)(struct ordered_events *oe, struct ordered_event *event); struct ordered_events { u64 last_flush; u64 next_flush; u64 max_timestamp; u64 max_alloc_size; u64 cur_alloc_size; struct list_head events; struct list_head cache; struct list_head to_free; struct ordered_event *buffer; struct ordered_event *last; ordered_events__deliver_t deliver; int buffer_idx; unsigned int nr_events; enum oe_flush last_flush_type; u32 nr_unordered_events; bool copy_on_queue; }; int ordered_events__queue(struct ordered_events *oe, union perf_event *event, struct perf_sample *sample, u64 file_offset); void ordered_events__delete(struct ordered_events *oe, struct ordered_event *event); int ordered_events__flush(struct ordered_events *oe, enum oe_flush how); void ordered_events__init(struct ordered_events *oe, ordered_events__deliver_t deliver); void ordered_events__free(struct ordered_events *oe); void ordered_events__reinit(struct ordered_events *oe); static inline void ordered_events__set_alloc_size(struct ordered_events *oe, u64 size) { oe->max_alloc_size = size; } static inline void ordered_events__set_copy_on_queue(struct ordered_events *oe, bool copy) { oe->copy_on_queue = copy; } #endif /* __ORDERED_EVENTS_H */ /cgit.cgi/linux/net-next.git/log/'>logtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-12-15 18:13:41 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2016-12-15 18:13:41 -0800
commited3c5a0be38c180ab0899a0f52719e81f36b87a1 (patch)
tree684eb66d1e8513b4584c680e157f3887c04c58ba
parent66d466722c39f663b2bbeb44ba4f9419a548fa23 (diff)
parent6bdf1e0efb04a1716373646cb6f35b73addca492 (diff)
Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
Pull virtio updates from Michael Tsirkin: "virtio, vhost: new device, fixes, speedups This includes the new virtio crypto device, and fixes all over the place. In particular enabling endian-ness checks for sparse builds found some bugs which this fixes. And it appears that everyone is in agreement that disabling endian-ness sparse checks shouldn't be necessary any longer. So this enables them for everyone, and drops the __CHECK_ENDIAN__ and __bitwise__ APIs. IRQ handling in virtio has been refactored somewhat, the larger switch to IRQ_SHARED will have to wait as it proved too aggressive" * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (34 commits) Makefile: drop -D__CHECK_ENDIAN__ from cflags fs/logfs: drop __CHECK_ENDIAN__ Documentation/sparse: drop __CHECK_ENDIAN__ linux: drop __bitwise__ everywhere checkpatch: replace __bitwise__ with __bitwise Documentation/sparse: drop __bitwise__ tools: enable endian checks for all sparse builds linux/types.h: enable endian checks for all sparse builds virtio_mmio: Set dev.release() to avoid warning vhost: remove unused feature bit virtio_ring: fix description of virtqueue_get_buf vhost/scsi: Remove unused but set variable tools/virtio: use {READ,WRITE}_ONCE() in uaccess.h vringh: kill off ACCESS_ONCE() tools/virtio: fix READ_ONCE() crypto: add virtio-crypto driver vhost: cache used event for better performance vsock: lookup and setup guest_cid inside vhost_vsock_lock virtio_pci: split vp_try_to_find_vqs into INTx and MSI-X variants virtio_pci: merge vp_free_vectors into vp_del_vqs ...