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/