Re: Need to allocate memory always in interrupt handler which MUST succeed.

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

 



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/



[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