i am trying to write a chardev..module for major 254. i do the register_chrdev(major, "modulename"); in the init_module .. in fileoperations i used a function for examle "my_write" for writing, "my_read" for reading. and so on.. in my_open function. i register the devices with the minor numbers. every thing is normal.. but when specifying whether the device opened for writing, i used semaphore for it. like this.. if(down_interruptable(&dev->semaphore)) { return -ERESTARTSYS; } . . . up(&dev->semaphore); everything is ok unless i use these block. in case i use with semaphore, that is what i should when writing in shared mem, Paging ooopss outcome. there is no problem with the compilation gcc -c -D__KERNEL__ -D__MODULE__ my_module.c i use these flags and no need to use __SMP__ flag.. if there is any kind of help, it is welcomed.. At the beginning of module writing steps, to face such a problem is discouraging.. sincereley --------------------------------------- This message was sent by Postaci Webmail. See www.trlinux.com for details.