Re: [PATCH] request_firmware() private workqueue (was: Re: Using firmware_class with recent 2.6 kernels)

From: Manuel Estrada Sainz (ranty@debian.org)
Date: Sat Jul 26 2003 - 10:59:52 EST


On Sat, Jul 26, 2003 at 12:18:18PM +0200, Manuel Estrada Sainz wrote:
> On Mon, Jul 21, 2003 at 01:41:11PM +0200, Michael Hunold wrote:
[snip]
> About the attached patch:
>
> - use a private workqueue so we can sleep without interfering
> with other subsystems.

 Oops, as usuall I forgot to attach the patch, It is attached now.

 Sorry

         Manuel

-- 
--- Manuel Estrada Sainz <ranty@debian.org>
                         <ranty@bigfoot.com>
			 <ranty@users.sourceforge.net>
------------------------ <manuel.estrada@hispalinux.es> -------------------
Let us have the serenity to accept the things we cannot change, courage to
change the things we can, and wisdom to know the difference.

Index: firmware_class.c =================================================================== RCS file: /home/cvs/linux-2.5/drivers/base/firmware_class.c,v retrieving revision 1.3 diff -u -r1.3 firmware_class.c --- firmware_class.c 4 Jul 2003 02:21:18 -0000 1.3 +++ firmware_class.c 26 Jul 2003 08:38:07 -0000 @@ -22,6 +22,8 @@ MODULE_LICENSE("GPL"); static int loading_timeout = 10; /* In seconds */ +static struct workqueue_struct *firmware_wq; + struct firmware_priv { char fw_id[FIRMWARE_NAME_MAX]; @@ -467,7 +469,7 @@ }; INIT_WORK(&fw_work->work, request_firmware_work_func, fw_work); - schedule_work(&fw_work->work); + queue_work(firmware_wq, &fw_work->work); return 0; } @@ -485,12 +487,20 @@ __FUNCTION__); class_unregister(&firmware_class); } + firmware_wq = create_workqueue("firmware"); + if (!firmware_wq) { + printk(KERN_ERR "%s: create_workqueue failed\n", __FUNCTION__); + class_remove_file(&firmware_class, &class_attr_timeout); + class_unregister(&firmware_class); + error = -EIO; + } return error; } static void __exit firmware_class_exit(void) { + destroy_workqueue(firmware_wq); class_remove_file(&firmware_class, &class_attr_timeout); class_unregister(&firmware_class); }

- 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/



This archive was generated by hypermail 2b29 : Thu Jul 31 2003 - 22:00:29 EST