home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / genalloc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.2 KB  |  37 lines

  1. /*
  2.  * Basic general purpose allocator for managing special purpose memory
  3.  * not managed by the regular kmalloc/kfree interface.
  4.  * Uses for this includes on-device special memory, uncached memory
  5.  * etc.
  6.  *
  7.  * This source code is licensed under the GNU General Public License,
  8.  * Version 2.  See the file COPYING for more details.
  9.  */
  10.  
  11.  
  12. /*
  13.  *  General purpose special memory pool descriptor.
  14.  */
  15. struct gen_pool {
  16.     rwlock_t lock;
  17.     struct list_head chunks;    /* list of chunks in this pool */
  18.     int min_alloc_order;        /* minimum allocation order */
  19. };
  20.  
  21. /*
  22.  *  General purpose special memory pool chunk descriptor.
  23.  */
  24. struct gen_pool_chunk {
  25.     spinlock_t lock;
  26.     struct list_head next_chunk;    /* next chunk in pool */
  27.     unsigned long start_addr;    /* starting address of memory chunk */
  28.     unsigned long end_addr;        /* ending address of memory chunk */
  29.     unsigned long bits[0];        /* bitmap for allocating memory chunk */
  30. };
  31.  
  32. extern struct gen_pool *gen_pool_create(int, int);
  33. extern int gen_pool_add(struct gen_pool *, unsigned long, size_t, int);
  34. extern void gen_pool_destroy(struct gen_pool *);
  35. extern unsigned long gen_pool_alloc(struct gen_pool *, size_t);
  36. extern void gen_pool_free(struct gen_pool *, unsigned long, size_t);
  37.