lkml.org 
[lkml]   [2003]   [Dec]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 11/12] Firmware_class update
    Date
    From
    - use a kernel thread instead of schedule_work() when waiting for the firmware upload to happen
    --- linux-2.5/drivers/base/firmware_class.c (revision 14117)
    +++ linux-2.5/drivers/base/firmware_class.c (working copy)
    @@ -415,18 +415,22 @@
    void (*cont)(const struct firmware *fw, void *context);
    };

    -static void
    +static int
    request_firmware_work_func(void *arg)
    {
    struct firmware_work *fw_work = arg;
    const struct firmware *fw;
    - if (!arg)
    - return;
    + if (!arg) {
    + WARN_ON(1);
    + return 0;
    + }
    + daemonize("%s/%s", "firmware", fw_work->name);
    request_firmware(&fw, fw_work->name, fw_work->device);
    fw_work->cont(fw, fw_work->context);
    release_firmware(fw);
    module_put(fw_work->module);
    kfree(fw_work);
    + return 0;
    }

    /**
    @@ -451,6 +455,8 @@
    {
    struct firmware_work *fw_work = kmalloc(sizeof (struct firmware_work),
    GFP_ATOMIC);
    + int ret;
    +
    if (!fw_work)
    return -ENOMEM;
    if (!try_module_get(module)) {
    @@ -465,9 +471,14 @@
    .context = context,
    .cont = cont,
    };
    - INIT_WORK(&fw_work->work, request_firmware_work_func, fw_work);

    - schedule_work(&fw_work->work);
    + ret = kernel_thread(request_firmware_work_func, fw_work,
    + CLONE_FS | CLONE_FILES);
    +
    + if (ret < 0) {
    + fw_work->cont(NULL, fw_work->context);
    + return ret;
    + }
    return 0;
    }

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:59    [W:0.023 / U:59.844 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site