preemptive kernel

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

 



howdy,

suppose I have a (character) driver code,

does the following piece of code break under preemptive
kernel option enabled?  -- is there any pointer regarding
precisely when kernel preemption can take place?

TIA
kenji

--
int busy = 0;
wait_queue_head_t q;
some_resource res; /* data structure shared between processes */

ssize_t my_write(struct file * file, const char * buf,
                       size_t count, loff_t *ppos)
{
    while (busy) {    /* grab exclusive access */
      interruptible_sleep_on(&q);  
    }

    <do something assuming exclusive access to resources>

    busy = 0;        /* release exclusive access */
    wake_up_interruptible(&q);
    return retval;
}

ssize_t my_read(struct file * file, char * buf,
                      size_t count, loff_t *ppos)
{
    while (busy) {    /* grab exclusive access */
      interruptible_sleep_on(&q);  
    }

    <do something assuming exclusive access to resources>

    busy = 0;        /* release exclusive access */
    wake_up_interruptible(&q);
    return retval;
}

int __init my_init(void)
{
  busy = 0;
  init_waitqueue_head(&q);
}
--
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/



[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