Hi Abu.... BTW, guys, are we going OOT here? please warn us if I do so... > #define PAGE_SHIFT 12 > The page size appaers to be 4 K. OK, that means, you have 209*PAGE_SIZE = 836 KB. But i don't know, in what situation did you capture the output of buddyinfo...before the program (try-sound.c) was run? during the execution? after it is finished? > My purpose of doing this is that I want to reserve this much memory, > so that they are not taken into consideration when I am allocating > memory in another loop. OK. But still, you don't free() it as far as I can see, thus I don't know if this is really what you expect or not... > > So far I try to conclude: > > 1. You're experiencing memory fragmentation. This makes memory > > allocator works harder to satisfy memory allocation. > > Why so, as there is a request of just one page? try to limit the problem, in which line of your code the memory allocation actually failed? if it is inside a loop, in which iteration? > > 2. You're really lack of free memory. Especially, since looking > > that you're allocating 3600 kilobyte shortly after main() is > > executed. > > Yes. But again there is much space left, (Kernel + drivers(Is driver > memory is separate from Kernel memory?) + poarray) < 16 MB Please check the output of buddyinfo before you run the program, during the execution and after the execution. BTW, driver are loaded in kernel address space, thus it is not separated from kernel memory. regards, Mulyadi -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/