Merged,
Maxim.

On 09/13/16 15:46, Christophe Milard wrote:
Hi Bill, and thanks for your review/comments:
I don't think that there any reason (at this time, at least) to worry about
table alignment: The server is -hopefully- used only at non critical times
(such as init...). It is based on socket communications which will be dead
slow compared to the alignment gain anyway.
So I don't think there is much to gain with the alignment.

Christophe.

On 13 September 2016 at 14:02, Bill Fischofer <bill.fischo...@linaro.org>
wrote:

This looks good now. Only question is whether you need to worry about
cache-aligning the table, but that's a tuning option that can be considered
later if needed.

On Tue, Sep 13, 2016 at 7:40 AM, Christophe Milard <
christophe.mil...@linaro.org> wrote:

The table containing the saved file-descriptors<->{context, key} couples
is
now dynamically malloc'd in the fd server process, hence avoiding
the memory waste which happened in other process when the table was
staticaly reserved in all processes.

Signed-off-by: Christophe Milard <christophe.mil...@linaro.org>

Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org>


---
  platform/linux-generic/_fdserver.c | 14 +++++++++++++-
  1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/platform/linux-generic/_fdserver.c
b/platform/linux-generic/_fdserver.c
index bf36eb2..5cef806 100644
--- a/platform/linux-generic/_fdserver.c
+++ b/platform/linux-generic/_fdserver.c
@@ -73,7 +73,7 @@ typedef struct fdentry_s {
         uint64_t key;
         int  fd;
  } fdentry_t;
-static fdentry_t fd_table[FDSERVER_MAX_ENTRIES];
+static fdentry_t *fd_table;
  static int fd_table_nb_entries;

  /*
@@ -622,8 +622,20 @@ int _odp_fdserver_init_global(void)
                 /* TODO: pin the server on appropriate service cpu mask */
                 /* when (if) we can agree on the usage of service mask  */

+               /* allocate the space for the file descriptor<->key
table: */
+               fd_table = malloc(FDSERVER_MAX_ENTRIES *
sizeof(fdentry_t));
+               if (!fd_table) {
+                       ODP_ERR("maloc failed!\n");
+                       exit(1);
+               }
+
+               /* wait for clients requests */
                 wait_requests(sock); /* Returns when server is stopped  */
                 close(sock);
+
+               /* release the file descriptor table: */
+               free(fd_table);
+
                 exit(0);
         }

--
2.7.4



Reply via email to