[PATCH] Staging: memrar: Moved memrar_allocator struct into memrar_allocator.c

Previous thread: 2.6.35-rc3 - WARNING:iwl_set_dynamic_key by Mario Guenterberg on Monday, June 14, 2010 - 4:55 am. (3 messages)

Next thread: Re: FIGETBSZ ioctl conflict by Johannes Stezenbach on Monday, June 14, 2010 - 5:36 am. (7 messages)
From: =?UTF-8?q?Henri=20H=C3=A4kkinen?=
Date: Monday, June 14, 2010 - 4:54 am

Forward declared memrar_allocator in memrar_allocator.h and moved it
to memrar_allocator.c file.  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 |   42 +++++++++++++++++++++++++
 drivers/staging/memrar/memrar_allocator.h |   48 ++++++++++++-----------------
 2 files changed, 62 insertions(+), 28 deletions(-)

diff --git a/drivers/staging/memrar/memrar_allocator.c b/drivers/staging/memrar/memrar_allocator.c
index a4f8c58..00703c2 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,7 +453,19 @@ exit_memrar_free:
 	return 0;
 }
 
+size_t memrar_allocator_largest_free_area(struct memrar_allocator *allocator)
+{
+	if (allocator ...
From: Greg KH
Date: Tuesday, June 22, 2010 - 3:00 pm

Um, did you try building the code after this patch?  It fails in bad
ways:

  CC [M]  drivers/staging/memrar/memrar_handler.o
drivers/staging/memrar/memrar_handler.c: In function ‘memrar_init_rar_resources’:
drivers/staging/memrar/memrar_handler.c:352:2: error: dereferencing pointer to incomplete type
drivers/staging/memrar/memrar_handler.c: In function ‘memrar_get_stat’:
drivers/staging/memrar/memrar_handler.c:548:25: error: dereferencing pointer to incomplete type
drivers/staging/memrar/memrar_handler.c:550:23: error: dereferencing pointer to incomplete type
drivers/staging/memrar/memrar_handler.c:551:35: error: dereferencing pointer to incomplete type
drivers/staging/memrar/memrar_handler.c:552:25: error: dereferencing pointer to incomplete type

Please always build the patches you send out.  I can't take
this one obviously :(

Care to fix it up?

thanks,

greg k-h
--

Previous thread: 2.6.35-rc3 - WARNING:iwl_set_dynamic_key by Mario Guenterberg on Monday, June 14, 2010 - 4:55 am. (3 messages)

Next thread: Re: FIGETBSZ ioctl conflict by Johannes Stezenbach on Monday, June 14, 2010 - 5:36 am. (7 messages)