On Thu, 2006-10-12 at 02:35 -0700, Parav Pandit wrote: > Point is, Need to allocate memory from the interrupt handler in > non-blocking manner GFP_ATOMIC is non-blocking > > There is a possibility that thread doesn't get schedule and interrupts > are keep coming on. I am keeping limit of 1MB (4096 interrupts * 256 > bytes per intr) You need to do ptr = kmalloc(256, GFP_ATOMIC) and pass ptr to your thread > > What kmalloc does for "kmalloc tries its best "? As I told you, if kmalloc cannot allocate memory without blocking, then it will use the reserve pool for GFP_ATOMIC. > > Regards, > Parav Pandit > > > Amol Lad <amol@xxxxxxxxxxxxxxxxxxx> wrote: > On Thu, 2006-10-12 at 01:40 -0700, Parav Pandit wrote: > > Hi, > > > > I need to allocate some 256 bytes of memory in the interrupt > handler > > each time when I get the interrupt. Size varies from 8 bytes > to 256 > > bytes. > > There are various options such as > > (a) kmalloc(GFP_ATOMIC), > > (b) kmem_cache_alloc > > (c) mempool_alloc > > My driver need to support, at max 4096 * 256 = 1MByte > buffer. I don’t > > need DMA support. > > > > How can I use above APIs so that I always get the memory in > the > > interrupt handler? > > You can use kmalloc(GFP_ATOMIC). However, remember to check > the return > value. For GFP_ATOMIC, kmalloc tries its best to give you the > requested > memory. There is a reserve pool of memory which is used for > GFP_ATOMIC > if kmalloc cannot allocate memory from regular pool. > > Be sure to kfree() the memory also after use.. > > > > > > ______________________________________________________________________ > > Yahoo! Messenger with Voice. Make PC-to-Phone Calls to the > US (and 30+ > > countries) for 2¢/min or less. > > > > > > ______________________________________________________________________ > Do you Yahoo!? > Everyone is raving about the all-new Yahoo! Mail. -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/