X-Git-Url: http://rtime.felk.cvut.cz/gitweb/frescor/fwp.git/blobdiff_plain/c3498ec14e12f777c5a2f64890a9a24d7880b318..418df6f5d387f95f15379658005083418eab00af:/fwp/lib/fwp/fwp_vres.c diff --git a/fwp/lib/fwp/fwp_vres.c b/fwp/lib/fwp/fwp_vres.c index ad5bacb..3d593ef 100644 --- a/fwp/lib/fwp/fwp_vres.c +++ b/fwp/lib/fwp/fwp_vres.c @@ -58,7 +58,6 @@ static void* fwp_vres_tx_thread(void *_vres); typedef enum { - USED, UNTOUCHED, CHANGED, QUEUED, @@ -96,20 +95,6 @@ struct fwp_vres{ struct fwp_msgq msg_queue; }; -typedef -struct fwp_vres_table { - unsigned int max_vres; - fwp_vres_t *entry; - pthread_mutex_t lock; -} fwp_vres_table_t; - -/* Global variable - vres table */ -static fwp_vres_table_t fwp_vres_table = { - .max_vres = 0, - .entry = NULL, - .lock = PTHREAD_MUTEX_INITIALIZER, -}; - /**< mapping priority to ac*/ static const int prio_to_ac[8] = {2,3,3,2,1,1,0,0}; /**< IP tos for AC_VI, AC_VO, AC_BE, AC_BK */ @@ -160,19 +145,7 @@ static inline void clear_all_flags(fwp_vres_t *vres) static inline void fwp_vres_free(fwp_vres_t *vres) { - /* Clear USED flag */ - clear_all_flags(vres); -} - -static inline int fwp_vres_is_valid(fwp_vres_t *vres) -{ - int id = vres - fwp_vres_table.entry; - - if ((id < 0) || (id > fwp_vres_table.max_vres - 1) || - (!get_flag(vres, USED))) - return 0; - - return 1; + free(vres); } /*inline int fwp_vres_get(fwp_vres_id_t vres_id, fwp_vres_t **vres ) @@ -184,19 +157,6 @@ static inline int fwp_vres_is_valid(fwp_vres_t *vres) } */ -int fwp_vres_table_init(unsigned int max_vres) -{ - unsigned int table_size = max_vres * sizeof(fwp_vres_t); - - fwp_vres_table.entry = (fwp_vres_t*) malloc(table_size); - if (!fwp_vres_table.entry) - return -1; /* Errno is set by malloc */ - - memset((void*) fwp_vres_table.entry, 0, table_size); - fwp_vres_table.max_vres = max_vres; - return 0; -} - /** * Allocate vres * @@ -204,28 +164,10 @@ int fwp_vres_table_init(unsigned int max_vres) */ fwp_vres_t *fwp_vres_alloc() { - int i; - unsigned int max_vres; - - /* find free vres id */ - pthread_mutex_lock(&fwp_vres_table.lock); - i = 0; - max_vres = fwp_vres_table.max_vres; - while ((i < max_vres) && - (get_flag(&fwp_vres_table.entry[i], USED))) { - i++; - } - - if (i == max_vres) { - pthread_mutex_unlock(&fwp_vres_table.lock); - errno = ENOBUFS; - return NULL; - } - - FWP_DEBUG("Allocated vres id = %d\n",i); - set_flag(&fwp_vres_table.entry[i], USED); - pthread_mutex_unlock(&fwp_vres_table.lock); - return (&fwp_vres_table.entry[i]); + fwp_vres_t *vres = malloc(sizeof(fwp_vres_t)); + if (vres) + FWP_DEBUG("Allocated vres\n"); + return vres; } static int apply_params(fwp_vres_t *vres) @@ -255,7 +197,7 @@ int fwp_vres_set_params(fwp_vres_t *vres, fwp_vres_params_t *params) { int rv = 0; - if (!fwp_vres_is_valid(vres)) { + if (!vres) { errno = EINVAL; return -1; } @@ -335,7 +277,7 @@ err: */ int fwp_vres_destroy(fwp_vres_t *vres) { - if (!fwp_vres_is_valid(vres)) { + if (!vres) { errno = EINVAL; return -1; } @@ -511,7 +453,7 @@ int fwp_vres_bind(fwp_vres_t *vres, struct fwp_endpoint *ep, int sockd, struct i { int rv = 0; - if (!fwp_vres_is_valid(vres)) { + if (!vres) { errno = EINVAL; rv = -1; goto err; @@ -535,7 +477,7 @@ err: int fwp_vres_unbind(fwp_vres_t *vres) { - if (!fwp_vres_is_valid(vres)) { + if (!vres) { errno = EINVAL; return -1; }