lkml.org 
[lkml]   [2010]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] Staging: memrar: Moved memrar_allocator struct to memrar_allocator.c
    Date
    Forward declared memrar_allocator structure in memrar_allocator.h and
    moved the definition to memrar_allocator.c. Implemented
    memrar_allocator_capacity() and memrar_allocator_largest_free_area().

    Signed-off-by: Henri Häkkinen <henuxd@gmail.com>
    ---
    drivers/staging/memrar/memrar_allocator.c | 43 ++++++++++++++++++++++++++
    drivers/staging/memrar/memrar_allocator.h | 48 ++++++++++++-----------------
    2 files changed, 63 insertions(+), 28 deletions(-)

    diff --git a/drivers/staging/memrar/memrar_allocator.c b/drivers/staging/memrar/memrar_allocator.c
    index a4f8c58..cb74e3c 100644
    --- a/drivers/staging/memrar/memrar_allocator.c
    +++ b/drivers/staging/memrar/memrar_allocator.c
    @@ -41,6 +41,36 @@
    #include <linux/kernel.h>


    +/**
    + * struct memrar_allocator - encapsulation of the memory allocator state
    + * @lock: Lock used to synchronize access to the memory
    + * allocator state.
    + * @base: Base (start) address of the allocator memory
    + * space.
    + * @capacity: Size of the allocator memory space in bytes.
    + * @block_size: The size in bytes of individual blocks within
    + * the allocator memory space.
    + * @largest_free_area: Largest free area of memory in the allocator
    + * in bytes.
    + * @allocated_list: List of allocated memory block address
    + * ranges.
    + * @free_list: List of free address ranges.
    + *
    + * This structure contains all memory allocator state, including the
    + * base address, capacity, free list, lock, etc.
    + */
    +struct memrar_allocator {
    +/* private: internal use only */
    + struct mutex lock;
    + unsigned long base;
    + size_t capacity;
    + size_t block_size;
    + size_t largest_free_area;
    + struct memrar_address_ranges allocated_list;
    + struct memrar_address_ranges free_list;
    +};
    +
    +
    struct memrar_allocator *memrar_create_allocator(unsigned long base,
    size_t capacity,
    size_t block_size)
    @@ -423,6 +453,19 @@ exit_memrar_free:
    return 0;
    }

    +size_t memrar_allocator_largest_free_area(struct memrar_allocator *allocator)
    +{
    + if (allocator == NULL)
    + return 0;
    + return allocator->largest_free_area;
    +}
    +
    +size_t memrar_allocator_capacity(struct memrar_allocator *allocator)
    +{
    + if (allocator == NULL)
    + return 0;
    + return allocator->capacity;
    +}


    /*
    diff --git a/drivers/staging/memrar/memrar_allocator.h b/drivers/staging/memrar/memrar_allocator.h
    index 0b80dea..49dbc6e 100644
    --- a/drivers/staging/memrar/memrar_allocator.h
    +++ b/drivers/staging/memrar/memrar_allocator.h
    @@ -50,34 +50,10 @@ struct memrar_address_ranges {
    struct memrar_address_range range;
    };

    -/**
    - * struct memrar_allocator - encapsulation of the memory allocator state
    - * @lock: Lock used to synchronize access to the memory
    - * allocator state.
    - * @base: Base (start) address of the allocator memory
    - * space.
    - * @capacity: Size of the allocator memory space in bytes.
    - * @block_size: The size in bytes of individual blocks within
    - * the allocator memory space.
    - * @largest_free_area: Largest free area of memory in the allocator
    - * in bytes.
    - * @allocated_list: List of allocated memory block address
    - * ranges.
    - * @free_list: List of free address ranges.
    - *
    - * This structure contains all memory allocator state, including the
    - * base address, capacity, free list, lock, etc.
    - */
    -struct memrar_allocator {
    -/* private: internal use only */
    - struct mutex lock;
    - unsigned long base;
    - size_t capacity;
    - size_t block_size;
    - size_t largest_free_area;
    - struct memrar_address_ranges allocated_list;
    - struct memrar_address_ranges free_list;
    -};
    +
    +/* Forward declaration */
    +struct memrar_allocator;
    +

    /**
    * memrar_create_allocator() - create a memory allocator
    @@ -139,6 +115,22 @@ unsigned long memrar_allocator_alloc(struct memrar_allocator *allocator,
    long memrar_allocator_free(struct memrar_allocator *allocator,
    unsigned long address);

    +/**
    + * memrar_allocator_largest_area() - largest free area of memory
    + * @allocator: The allocator instance the free area is returned for.
    + *
    + * Return the largest free area of memory in the allocator in bytes.
    + */
    +size_t memrar_allocator_largest_free_area(struct memrar_allocator *allocator);
    +
    +/**
    + * memrar_allocator_capacity() - size of the allocator memory
    + * @allocator: The allocator instance the capicity is returned for.
    + *
    + * Return the size of the allocator memory space in bytes.
    + */
    +size_t memrar_allocator_capacity(struct memrar_allocator *allocator);
    +
    #endif /* MEMRAR_ALLOCATOR_H */


    --
    1.7.1
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2010-06-24 09:13    [W:0.027 / U:1.404 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site