lkml.org 
[lkml]   [2011]   [Jul]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/8] hwmon: ibmaem: convert idr to ida and use ida_simple_get
    Date
    A straightforward looking use of idr for a device id.

    Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
    ---
    Note I have even build tested this one so will definitely
    want an Ack from someone who has.

    drivers/hwmon/ibmaem.c | 47 ++++++++---------------------------------------
    1 files changed, 8 insertions(+), 39 deletions(-)

    diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c
    index 1a409c5..058e0ae 100644
    --- a/drivers/hwmon/ibmaem.c
    +++ b/drivers/hwmon/ibmaem.c
    @@ -88,8 +88,7 @@
    #define AEM_MIN_POWER_INTERVAL 200
    #define UJ_PER_MJ 1000L

    -static DEFINE_IDR(aem_idr);
    -static DEFINE_SPINLOCK(aem_idr_lock);
    +static DEFINE_IDA(aem_ida);

    static struct platform_driver aem_driver = {
    .driver = {
    @@ -356,38 +355,6 @@ static void aem_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data)
    complete(&data->read_complete);
    }

    -/* ID functions */
    -
    -/* Obtain an id */
    -static int aem_idr_get(int *id)
    -{
    - int i, err;
    -
    -again:
    - if (unlikely(!idr_pre_get(&aem_idr, GFP_KERNEL)))
    - return -ENOMEM;
    -
    - spin_lock(&aem_idr_lock);
    - err = idr_get_new(&aem_idr, NULL, &i);
    - spin_unlock(&aem_idr_lock);
    -
    - if (unlikely(err == -EAGAIN))
    - goto again;
    - else if (unlikely(err))
    - return err;
    -
    - *id = i & MAX_ID_MASK;
    - return 0;
    -}
    -
    -/* Release an object ID */
    -static void aem_idr_put(int id)
    -{
    - spin_lock(&aem_idr_lock);
    - idr_remove(&aem_idr, id);
    - spin_unlock(&aem_idr_lock);
    -}
    -
    /* Sensor support functions */

    /* Read a sensor value */
    @@ -525,7 +492,7 @@ static void aem_delete(struct aem_data *data)
    ipmi_destroy_user(data->ipmi.user);
    platform_set_drvdata(data->pdev, NULL);
    platform_device_unregister(data->pdev);
    - aem_idr_put(data->id);
    + ida_simple_remove(&aem_ida, data->id);
    kfree(data);
    }

    @@ -582,7 +549,8 @@ static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle)
    data->power_period[i] = AEM_DEFAULT_POWER_INTERVAL;

    /* Create sub-device for this fw instance */
    - if (aem_idr_get(&data->id))
    + data->id = ida_simple_get(&aem_ida, 0, 0, GFP_KERNEL);
    + if (data->id < 0)
    goto id_err;

    data->pdev = platform_device_alloc(DRVNAME, data->id);
    @@ -633,7 +601,7 @@ ipmi_err:
    platform_set_drvdata(data->pdev, NULL);
    platform_device_unregister(data->pdev);
    dev_err:
    - aem_idr_put(data->id);
    + ida_simple_remove(&aem_ida, data->id);
    id_err:
    kfree(data);

    @@ -715,7 +683,8 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe,
    data->power_period[i] = AEM_DEFAULT_POWER_INTERVAL;

    /* Create sub-device for this fw instance */
    - if (aem_idr_get(&data->id))
    + data->id = ida_simple_get(&aem_ida, 0, 0, GFP_KERNEL);
    + if (data->id < 0)
    goto id_err;

    data->pdev = platform_device_alloc(DRVNAME, data->id);
    @@ -766,7 +735,7 @@ ipmi_err:
    platform_set_drvdata(data->pdev, NULL);
    platform_device_unregister(data->pdev);
    dev_err:
    - aem_idr_put(data->id);
    + ida_simple_remove(&aem_ida, data->id);
    id_err:
    kfree(data);

    --
    1.7.3.4


    \
     
     \ /
      Last update: 2011-07-22 18:47    [W:4.155 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site