lkml.org 
[lkml]   [2009]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [PATCH 3/5] perf_counter: rework ioctl()s
    From
    Date
    On Tue, 2009-05-12 at 08:27 +0200, Peter Zijlstra wrote:
    > On Tue, 2009-05-12 at 16:22 +1000, Paul Mackerras wrote:
    > > Peter Zijlstra writes:
    > >
    > > > Hmm, are you saying that the 3rd argument to unlocked_ioctl is actually
    > > > (void __user *) instead of unsigned long?
    > >
    > > He's saying (correctly) that using _IOR or _IOW implies that the ioctl
    > > is going to read or write the memory location pointed to by the 3rd
    > > argument to unlocked_ioctl. If the 3rd argument is just a number, not
    > > an address, I believe you should use _IO.
    >
    > Oh, somewhat confusing all this. Would be good to spell out these things
    > somewhere. Documentation/ioctl/ seems less than helpful.

    Ah, so _IO() gets an unsigned long 3rd argument.
    _IOW() treats the 3rd arg as a (type __user *) and copies the bits over
    _IOR() copies the bits back out to userspace
    _IORW() does both

    In which case the below should fix things up, no?

    ---
    diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h
    index 614f921..6a9cebc 100644
    --- a/include/linux/perf_counter.h
    +++ b/include/linux/perf_counter.h
    @@ -159,10 +159,10 @@ struct perf_counter_hw_event {
    /*
    * Ioctls that can be done on a perf counter fd:
    */
    -#define PERF_COUNTER_IOC_ENABLE _IOW('$', 0, u32)
    -#define PERF_COUNTER_IOC_DISABLE _IOW('$', 1, u32)
    -#define PERF_COUNTER_IOC_REFRESH _IOW('$', 2, u32)
    -#define PERF_COUNTER_IOC_RESET _IOW('$', 3, u32)
    +#define PERF_COUNTER_IOC_ENABLE _IO('$', 0)
    +#define PERF_COUNTER_IOC_DISABLE _IO('$', 1)
    +#define PERF_COUNTER_IOC_REFRESH _IO('$', 2)
    +#define PERF_COUNTER_IOC_RESET _IO('$', 3)

    enum perf_counter_ioc_flags {
    PERF_IOC_FLAG_GROUP = 1U << 0,


    \
     
     \ /
      Last update: 2009-05-12 09:15    [W:3.590 / U:0.660 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site