• Linus Torvalds's avatar
    Merge tag 'trace-ringbuffer-v6.10' of... · 53683e40
    Linus Torvalds authored
    Merge tag 'trace-ringbuffer-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace
    
    Pull tracing ring buffer updates from Steven Rostedt:
     "Add ring_buffer memory mappings.
    
      The tracing ring buffer was created based on being mostly used with
      the splice system call. It is broken up into page ordered sub-buffers
      and the reader swaps a new sub-buffer with an existing sub-buffer
      that's part of the write buffer. It then has total access to the
      swapped out sub-buffer and can do copyless movements of the memory
      into other mediums (file system, network, etc).
    
      The buffer is great for passing around the ring buffer contents in the
      kernel, but is not so good for when the consumer is the user space
      task itself.
    
      A new interface is added that allows user space to memory map the ring
      buffer. It will get all the write sub-buffers as well as reader
      sub-buffer (that is not written to). It can send an ioctl to change
      which sub-buffer is the new reader sub-buffer.
    
      The ring buffer is read only to user space. It only needs to call the
      ioctl when it is finished with a sub-buffer and needs a new sub-buffer
      that the writer will not write over.
    
      A self test program was also created for testing and can be used as an
      example for the interface to user space. The libtracefs (external to
      the kernel) also has code that interacts with this, although it is
      disabled until the interface is in a official release. It can be
      enabled by compiling the library with a special flag. This was used
      for testing applications that perform better with the buffer being
      mapped.
    
      Memory mapped buffers have limitations. The main one is that it can
      not be used with the snapshot logic. If the buffer is mapped,
      snapshots will be disabled. If any logic is set to trigger snapshots
      on a buffer, that buffer will not be allowed to be mapped"
    
    * tag 'trace-ringbuffer-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
      ring-buffer: Add cast to unsigned long addr passed to virt_to_page()
      ring-buffer: Have mmapped ring buffer keep track of missed events
      ring-buffer/selftest: Add ring-buffer mapping test
      Documentation: tracing: Add ring-buffer mapping
      tracing: Allow user-space mapping of the ring-buffer
      ring-buffer: Introducing ring-buffer mapping functions
      ring-buffer: Allocate sub-buffers with __GFP_COMP
    53683e40
trace.c 258 KB