X-Git-Url: https://rtime.felk.cvut.cz/gitweb/frescor/fna.git/blobdiff_plain/092fd6e4c2a533a301527d9f6aff037d9550d512:/src_frescan/frescan_requests.c..5ac29d6d0804a77ef8f795b2006723b6b71d3566:/src_frescan/frescan_bwres_requests.c diff --git a/src_frescan/frescan_requests.c b/src_frescan/frescan_bwres_requests.c similarity index 56% rename from src_frescan/frescan_requests.c rename to src_frescan/frescan_bwres_requests.c index 0ac95f3..b21db88 100644 --- a/src_frescan/frescan_requests.c +++ b/src_frescan/frescan_bwres_requests.c @@ -1,7 +1,7 @@ /*! - * @file frescan_requests.c + * @file frescan_bwres_requests.c * - * @brief FRESCAN requests + * @brief FRESCAN bandwith reservation layer: requests * * This module contains an operation to create the queue, an operation to * enqueue a message (with a request), and an operation to @@ -18,7 +18,7 @@ #include #include #include "frescan.h" -#include "frescan_requests.h" +#include "frescan_bwres_requests.h" #include "frescan_config.h" #include "frescan_debug.h" #include "fosa_mutexes_and_condvars.h" @@ -33,13 +33,8 @@ static bool is_initialized = false; **/ struct request_t { - frescan_req_type_t type; - frescan_robj_id_t reply; - frescan_contract_t *contract; - frescan_ss_t ss; - frescan_node_t src; - void *return_info; - struct list_head request_list; + frescan_request_data_t request_data; + struct list_head request_list; int pool_pos; }; @@ -48,6 +43,7 @@ static fosa_cond_t requests_cond; static struct request_t the_requests_pool[FRESCAN_MX_REQUESTS]; static freelist_t freelist; + static struct request_t the_requests_list; /** @@ -77,13 +73,13 @@ int frescan_requests_init(int max_ceiling) } /** - * frescan_request_alloc() + * frescan_requests_alloc() * * Allocate a request with the mutex locked * **/ -int frescan_request_alloc(frescan_request_id_t *id) +int frescan_requests_alloc(frescan_request_id_t *req) { int err, pos; @@ -98,8 +94,8 @@ int frescan_request_alloc(frescan_request_id_t *id) err = fosa_mutex_unlock(&requests_mutex); if (err != 0) return err; - *id = (unsigned int)pos; - the_requests_pool[*id].pool_pos = pos; + *req = (unsigned int)pos; + the_requests_pool[*req].pool_pos = pos; return 0; @@ -109,13 +105,13 @@ locked_error: } /** - * frescan_request_free() + * frescan_requests_free() * * free the request from the pool * **/ -int frescan_request_free(frescan_request_id_t id) +int frescan_requests_free(frescan_request_id_t req) { int err; @@ -124,7 +120,7 @@ int frescan_request_free(frescan_request_id_t id) err = fosa_mutex_lock(&requests_mutex); if (err != 0) return err; - err = freelist_free(&freelist, id); + err = freelist_free(&freelist, req); if (err != 0) goto locked_error; err = fosa_mutex_unlock(&requests_mutex); @@ -138,139 +134,24 @@ locked_error: } /** - * frescan_request_set_type() - * - **/ - -int frescan_request_set_type(frescan_request_id_t id, frescan_req_type_t type) -{ - DEBUG(FRESCAN_REQUESTS_ENABLE_DEBUG, "id:%d, type:%d\n", id, type); - the_requests_pool[id].type = type; - return 0; -} - -/** - * frescan_request_set_reply() - * - **/ - -int frescan_request_set_reply(frescan_request_id_t id, frescan_robj_id_t reply) -{ - the_requests_pool[id].reply = reply; - return 0; -} - -/** - * frescan_request_set_contract() - * - **/ - -int frescan_request_set_contract(frescan_request_id_t id, - const frescan_contract_t *contract) -{ - the_requests_pool[id].contract = (frescan_contract_t *)contract; - return 0; -} - -/** - * frescan_request_set_ss() + * frescan_requests_get_data() - gets the data of the request * - **/ - -int frescan_request_set_ss(frescan_request_id_t id, - frescan_ss_t ss) -{ - the_requests_pool[id].ss = ss; - return 0; -} - -/** - * frescan_request_set_src() - * - **/ - -int frescan_request_set_src(frescan_request_id_t id, frescan_node_t src) -{ - the_requests_pool[id].src = src; - return 0; -} - -/** - * frescan_request_set_return_info() - * - **/ - -int frescan_request_set_return_info(frescan_request_id_t id, - void *return_info) -{ - the_requests_pool[id].return_info = return_info; - return 0; -} - -/** - * frescan_request_get_type() - * - **/ - -int frescan_request_get_type(frescan_request_id_t id, frescan_req_type_t *type) -{ - *type = the_requests_pool[id].type; - DEBUG(FRESCAN_REQUESTS_ENABLE_DEBUG, "id:%d, type:%d\n", id, *type); - return 0; -} - -/** - * frescan_request_get_reply() - * - **/ - -int frescan_request_get_reply(frescan_request_id_t id, frescan_robj_id_t *reply) -{ - *reply = the_requests_pool[id].reply; - return 0; -} - -/** - * frescan_request_get_contract() - * - **/ - -int frescan_request_get_contract(frescan_request_id_t id, - frescan_contract_t **contract) -{ - *contract = the_requests_pool[id].contract; - return 0; -} - -/** - * frescan_request_get_src() - * - **/ - -int frescan_request_get_src(frescan_request_id_t id, frescan_node_t *src) -{ - *src = the_requests_pool[id].src; - return 0; -} - -/** - * frescan_request_get_return_info() - * - **/ + */ -int frescan_request_get_return_info(frescan_request_id_t id, - void **return_info) +int frescan_requests_get_data(frescan_request_id_t req, + frescan_request_data_t **data) { - *return_info = the_requests_pool[id].return_info; + DEBUG(FRESCAN_REQUESTS_ENABLE_DEBUG, "request id:%d\n", req); + *data = &the_requests_pool[req].request_data; return 0; } /** - * frescan_requestqueue_enqueue() + * frescan_requests_enqueue() * **/ -int frescan_requestqueue_enqueue(frescan_request_id_t id) +int frescan_requests_enqueue(frescan_request_id_t req) { int err; @@ -281,7 +162,7 @@ int frescan_requestqueue_enqueue(frescan_request_id_t id) "is list empty A? %d\n", list_empty(&the_requests_list.request_list)); - list_add_tail(&the_requests_pool[id].request_list, + list_add_tail(&the_requests_pool[req].request_list, &the_requests_list.request_list); DEBUG(FRESCAN_REQUESTS_ENABLE_DEBUG, @@ -306,7 +187,7 @@ locked_error: * **/ -int frescan_requestqueue_dequeue(frescan_request_id_t *id) +int frescan_requests_dequeue(frescan_request_id_t *req) { int err; struct list_head *pos; @@ -332,7 +213,7 @@ int frescan_requestqueue_dequeue(frescan_request_id_t *id) list_del(&request->request_list); - *id = request->pool_pos; + *req = request->pool_pos; DEBUG(FRESCAN_REQUESTS_ENABLE_DEBUG, "is list empty now? %d\n",