• Main Page
  • Data Structures
  • Files
  • File List
  • Globals

storage.c

Go to the documentation of this file.
00001 
00012 #include <linux/module.h>
00013 #include <linux/slab.h>
00014 
00015 #include "storage.h"
00016 #include "cache.h"
00017 
00018 
00019 
00024 struct mumufs_storage *  mumufs_allocate_storage( void )
00025 {
00026     struct mumufs_storage *        new = kmem_cache_alloc( mumufs_storage_cache,
00027                                                            GFP_KERNEL );
00028 
00029     if ( new != NULL )
00030     {
00031             /* Initialise semaphore. No errors could be here */
00032         init_rwsem( & new->buffer_lock );
00033 
00034             /* Set buffer to zero                            */
00035         new->buffer = NULL;
00036         new->buffer_size = 0;
00037 
00038             /* Initialise buffer version to 0                */
00039         new->buffer_version = 0;
00040 
00041             /* Initialise a wait queue for the readers       */
00042         init_waitqueue_head( & new->blocked_readers );
00043     }
00044 
00045     return new;
00046 }
00047 
00048 
00049 
00054 void mumufs_free_storage( struct mumufs_storage *  element )
00055 {
00056     if ( element->buffer != NULL )
00057     {
00058         kfree( element->buffer );
00059         element->buffer = NULL;
00060     }
00061     kmem_cache_free( mumufs_storage_cache, element );
00062     return;
00063 }
00064