another couple questions regarding wait queues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  while i'm immersed in the code, might as well toss out a couple more
questions, these related to some code in drivers/mtd/mtdblock.c:

=====
static int erase_write (struct mtd_info *mtd, unsigned long pos,
                        int len, const char *buf)
{
        struct erase_info erase;
        DECLARE_WAITQUEUE(wait, current);
        wait_queue_head_t wait_q;
        size_t retlen;
        int ret;

        /*
         * First, let's erase the flash block.
         */

        init_waitqueue_head(&wait_q);
	... snip ...
=====

  this code seems a bit confusing. there are two ways to define both
wait queue heads and wait queues -- at compile time, and at run time.
above, the wait queue is defined at compile time with:

DECLARE_WAITQUEUE(wait, current);

which seems fine, but the wait queue head itself uses the *run-time*
declaration, which seems unnecessary -- why couldn't that have been
declared at compile time as well? is there something subtle going on
that i'm just not seeing? wait.h provides:

#define DECLARE_WAIT_QUEUE_HEAD(name) \
        wait_queue_head_t name = __WAIT_QUEUE_HEAD_INITIALIZER(name)

and i don't see why that wouldn't have worked just fine. thoughts?

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux