RAR Handler (memrar) Driver TODO Items
======================================

Maintainer: Eugene Epshteyn <eugene.epshteyn@intel.com>

memrar.h
--------
1. This header exposes the driver's user space and kernel space
   interfaces.  It should be moved to <linux/rar/memrar.h>, or
   something along those lines, when this memrar driver is moved out
   of `staging'.
     a. It would be ideal if staging/rar_register/rar_register.h was
        moved to the same directory.

memrar_allocator.[ch]
---------------------
1. Address potential fragmentation issues with the memrar_allocator.

2. Hide struct memrar_allocator details/fields.  They need not be
   exposed to the user.
     a. Forward declare struct memrar_allocator.
     b. Move all three struct definitions to `memrar_allocator.c'
        source file.
     c. Add a memrar_allocator_largest_free_area() function, or
        something like that to get access to the value of the struct
        memrar_allocator "largest_free_area" field.  This allows the
        struct memrar_allocator fields to be completely hidden from
        the user.  The memrar_handler code really only needs this for
        statistic gathering on-demand.
     d. Do the same for the "capacity" field as the
        "largest_free_area" field.

3. Move memrar_allocator.* to kernel `lib' directory since it is HW
   neutral.
     a. Alternatively, use lib/genalloc.c instead.
     b. A kernel port of Doug Lea's malloc() implementation may also
        be an option.

memrar_handler.c
----------------
1. Split user space interface (ioctl code) from core/kernel code,
   e.g.:
     memrar_handler.c -> memrar_core.c, memrar_user.c
