• P
    perf_counter: new output ABI - part 1 · 7b732a75
    Peter Zijlstra 提交于
    Impact: Rework the perfcounter output ABI
    
    use sys_read() only for instant data and provide mmap() output for all
    async overflow data.
    
    The first mmap() determines the size of the output buffer. The mmap()
    size must be a PAGE_SIZE multiple of 1+pages, where pages must be a
    power of 2 or 0. Further mmap()s of the same fd must have the same
    size. Once all maps are gone, you can again mmap() with a new size.
    
    In case of 0 extra pages there is no data output and the first page
    only contains meta data.
    
    When there are data pages, a poll() event will be generated for each
    full page of data. Furthermore, the output is circular. This means
    that although 1 page is a valid configuration, its useless, since
    we'll start overwriting it the instant we report a full page.
    
    Future work will focus on the output format (currently maintained)
    where we'll likey want each entry denoted by a header which includes a
    type and length.
    
    Further future work will allow to splice() the fd, also containing the
    async overflow data -- splice() would be mutually exclusive with
    mmap() of the data.
    Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Paul Mackerras <paulus@samba.org>
    Orig-LKML-Reference: <20090323172417.470536358@chello.nl>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    7b732a75
perf_counter.c 60.0 KB