From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 8DF86282 for ; Tue, 14 Feb 2017 16:00:59 +0100 (CET) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Feb 2017 07:00:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.35,161,1484035200"; d="scan'208";a="44298179" Received: from silpixa00381631.ir.intel.com (HELO silpixa00381631.ger.corp.intel.com) ([10.237.222.122]) by orsmga002.jf.intel.com with ESMTP; 14 Feb 2017 07:00:56 -0800 From: Pablo de Lara To: john.mcnamara@intel.com Cc: dev@dpdk.org, Pablo de Lara Date: Tue, 14 Feb 2017 15:02:53 +0000 Message-Id: <1487084573-164914-1-git-send-email-pablo.de.lara.guarch@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [dpdk-dev] [PATCH] doc: add thread-safety information about EFD library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Feb 2017 15:00:59 -0000 Signed-off-by: Pablo de Lara --- doc/guides/prog_guide/efd_lib.rst | 15 +++++++++++++++ lib/librte_efd/rte_efd.h | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/doc/guides/prog_guide/efd_lib.rst b/doc/guides/prog_guide/efd_lib.rst index 5b8e4e3..3f90fa9 100644 --- a/doc/guides/prog_guide/efd_lib.rst +++ b/doc/guides/prog_guide/efd_lib.rst @@ -270,6 +270,11 @@ failed to find a suitable perfect hash or the group was full). The function will return ``EFD_UPDATE_NO_CHANGE (3)`` if there is no change to the EFD table (i.e, same value already exists). +.. Note:: + + This function is not multi-thread safe and should only be called + from one thread. + EFD Lookup ~~~~~~~~~~ @@ -285,6 +290,11 @@ lookup function. ``rte_efd_lookup_bulk()`` is the bulk lookup function, that looks up num_keys simultaneously stored in the key_list and the corresponding return values will be returned in the value_list. +.. Note:: + + This function is multi-thread safe, but there should not be other threads + writing in the EFD table, unless locks are used. + EFD Delete ~~~~~~~~~~ @@ -295,6 +305,11 @@ use to lookup the existing value, which is ideally the caller's socket id. The previous value associated with this key will be returned in the prev_value argument. +.. Note:: + + This function is not multi-thread safe and should only be called + from one thread. + .. _Efd_internals: Library Internals diff --git a/lib/librte_efd/rte_efd.h b/lib/librte_efd/rte_efd.h index 1a1cb5b..6d31e18 100644 --- a/lib/librte_efd/rte_efd.h +++ b/lib/librte_efd/rte_efd.h @@ -198,6 +198,8 @@ rte_efd_find_existing(const char *name); * Computes an updated table entry for the supplied key/value pair. * The update is then immediately applied to the provided table and * all socket-local copies of the chunks are updated. + * This operation is not multi-thread safe + * and should only be called one from thread. * * @param table * EFD table to reference @@ -227,6 +229,8 @@ rte_efd_update(struct rte_efd_table *table, unsigned int socket_id, /** * Removes any value currently associated with the specified key from the table + * This operation is not multi-thread safe + * and should only be called from one thread. * * @param table * EFD table to reference @@ -247,6 +251,7 @@ rte_efd_delete(struct rte_efd_table *table, unsigned int socket_id, /** * Looks up the value associated with a key + * This operation is multi-thread safe. * * NOTE: Lookups will *always* succeed - this is a property of * using a perfect hash table. @@ -270,6 +275,7 @@ rte_efd_lookup(const struct rte_efd_table *table, unsigned int socket_id, /** * Looks up the value associated with several keys. + * This operation is multi-thread safe. * * NOTE: Lookups will *always* succeed - this is a property of * using a perfect hash table. -- 2.7.4