]> rtime.felk.cvut.cz Git - frescor/fna.git/blobdiff - src_frescan/frescan_servers.c
add get budget and period
[frescor/fna.git] / src_frescan / frescan_servers.c
index f1cc09d769d40fd5892b74ed9eab050d715a1def..8f8d3bfc100e0fc0049caeef23a43c2b69354d7d 100644 (file)
@@ -71,6 +71,7 @@
 #include "frescan_servers.h"
 #include "frescan_servers_replenishments.h" // frescan_replenishments_xxx
 #include "frescan_debug.h"
+#include "frescan_packets.h"
 #include "frescan_data.h"
 #include <signal.h>
 #include <time.h>
@@ -89,11 +90,11 @@ int frescan_servers_init(frescan_network_t net)
 
         DEBUG(FRESCAN_SERVERS_ENABLE_DEBUG, "initializing servers\n");
 
-        ret = freelist_init(&the_servers_pool_freelist[net], FRESCAN_MX_IDS);
+        ret = freelist_init(&frescan_data[net].ss_id_freelist, FRESCAN_MX_IDS);
         if (ret != 0) return ret;
 
         for (i=0; i<FRESCAN_MX_NETWORKS; i++) {
-                INIT_LIST_HEAD(&the_active_servers[net].servers_list);
+                INIT_LIST_HEAD(&frescan_data[net].ss_active_head.servers_list);
         }
 
         ret = frescan_replenishments_init(net);
@@ -120,12 +121,12 @@ int frescan_servers_create(frescan_network_t net,
 {
         int i, ret, pos;
         struct sigevent evp;
-        frescan_server_data_t *server;
+        frescan_ss_data_t *server;
         frescan_repl_op_t *repl;
 
-        FRESCAN_ACQUIRE_LOCK(&the_networks[net].lock);
-        pos = freelist_alloc(&the_servers_pool_freelist[net]);
-        FRESCAN_RELEASE_LOCK(&the_networks[net].lock);
+        FRESCAN_ACQUIRE_LOCK(&frescan_data[net].lock);
+        pos = freelist_alloc(&frescan_data[net].ss_id_freelist);
+        FRESCAN_RELEASE_LOCK(&frescan_data[net].lock);
 
         if (pos == -1) {
                 FRESCAN_ERROR("could not allocate servers\n");
@@ -134,14 +135,14 @@ int frescan_servers_create(frescan_network_t net,
 
         *id = (frescan_ss_t)pos;
 
-        server = &the_servers_pool[net][*id];
+        server = &frescan_data[net].ss_data[*id];
 
         server->net = net;
         server->id  = *id;
-        server->committed_params  = *params;
+        server->committed_params = *params;
         server->perceived_params = server->committed_params;
         server->current_priority = params->prio;
-        server->pending_packets = 0;
+        server->pending_packets  = 0;
 
         // the first act_time is set to the server creation time
         clock_gettime (CLOCK_MONOTONIC, &server->act_time);
@@ -191,7 +192,7 @@ int frescan_servers_set_perceived(frescan_network_t net,
                                   const frescan_server_params_t *params,
                                   frescan_ss_t id)
 {
-        the_servers_pool[net][id].perceived_params = *params;
+        frescan_data[net].ss_data[id].perceived_params = *params;
         return 0;
 }
 
@@ -209,12 +210,12 @@ int frescan_servers_commit_perceived(frescan_network_t net,
                                      frescan_ss_t id)
 {
         int i, ret;
-        frescan_server_data_t *server;
+        frescan_ss_data_t *server;
         int budget_variation;
-        frescan_repl_op_t *repl;
+        frescan_repl_op_t *repl = NULL;
         struct list_head *pos;
 
-        server = &the_servers_pool[net][id];
+        server = &frescan_data[net].ss_data[id];
         budget_variation = server->perceived_params.budget -
                            server->committed_params.budget;
 
@@ -286,9 +287,9 @@ int frescan_servers_destroy(frescan_network_t net, frescan_ss_t id)
         int ret;
         frescan_repl_op_t *repl;
         frescan_packet_t *packet;
-        frescan_server_data_t *server;
+        frescan_ss_data_t *server;
 
-        server = &the_servers_pool[net][id];
+        server = &frescan_data[net].ss_data[id];
 
         ret = timer_delete (server->repl_timer);
         if (ret != 0) {
@@ -317,10 +318,10 @@ int frescan_servers_destroy(frescan_network_t net, frescan_ss_t id)
         }
         INIT_LIST_HEAD(&server->replenishments.repl_list);
 
-        FRESCAN_ACQUIRE_LOCK(&the_networks[net].lock);
+        FRESCAN_ACQUIRE_LOCK(&frescan_data[net].lock);
         list_del(&server->servers_list);
-        ret = freelist_free(&the_servers_pool_freelist[net], id);
-        FRESCAN_RELEASE_LOCK(&the_networks[net].lock);
+        ret = freelist_free(&frescan_data[net].ss_id_freelist, id);
+        FRESCAN_RELEASE_LOCK(&frescan_data[net].lock);
 
         if (ret != 0) {
                 FRESCAN_ERROR("could not free server data from pool\n");
@@ -343,7 +344,7 @@ int frescan_servers_get_data(frescan_network_t net,
                              frescan_server_params_t *params,
                              frescan_ss_t id)
 {
-        *params = the_servers_pool[net][id].perceived_params;
+        *params = frescan_data[net].ss_data[id].perceived_params;
         return 0;
 }
 
@@ -369,10 +370,10 @@ int frescan_servers_get_current_budget(frescan_network_t net,
 {
         struct timespec now;
         frescan_repl_op_t *repl;
-        frescan_server_data_t *server;
+        frescan_ss_data_t *server;
         int count;
 
-        server = &the_servers_pool[net][id];
+        server = &frescan_data[net].ss_data[id];
 
         // first we get the current real budget in the capacity queue
         clock_gettime (CLOCK_MONOTONIC, &now);
@@ -417,16 +418,17 @@ int frescan_servers_get_highest_prio(frescan_network_t net,
                                      frescan_ss_t *id,
                                      frescan_prio_t *prio)
 {
-        frescan_server_data_t *server;
+        frescan_ss_data_t *server;
 
-        if (list_empty(&the_active_servers->servers_list)) {
+        if (list_empty(&frescan_data[net].ss_active_head.servers_list)) {
                 DEBUG(FRESCAN_SERVERS_ENABLE_DEBUG, "server list is empty\n");
                 *id = FRESCAN_MX_IDS;
                 return 0;
         }
 
         *prio = 0;
-        list_for_each_entry(server, &the_active_servers[net].servers_list,
+        list_for_each_entry(server,
+                            &frescan_data[net].ss_active_head.servers_list,
                             servers_list) {
                 if (server->current_priority >= *prio) {
                         *id = server->id;
@@ -461,9 +463,9 @@ int frescan_servers_frame_sent(frescan_network_t net,
 {
         int ret;
         struct timespec *repl_time;
-        frescan_server_data_t *server;
+        frescan_ss_data_t *server;
 
-        server = &the_servers_pool[net][id];
+        server = &frescan_data[net].ss_data[id];
 
         if (server->current_priority != FRESCAN_BACKGROUND_PRIO) {
                 if (smaller_timespec(packet->timestamp, server->act_time)) {