X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fcommon%2Finclude%2Frte_memory.h;h=c4b7f4cff1d5a04855a412735d0296c74dcd7a77;hb=c99a2d4c6b7f;hp=857773ca44226073a4098865f16048469785582a;hpb=0256386dc43ce0f27f4c9d6bfa58c534aaf997e2;p=dpdk.git diff --git a/lib/librte_eal/common/include/rte_memory.h b/lib/librte_eal/common/include/rte_memory.h index 857773ca44..c4b7f4cff1 100644 --- a/lib/librte_eal/common/include/rte_memory.h +++ b/lib/librte_eal/common/include/rte_memory.h @@ -263,6 +263,60 @@ rte_memseg_contig_walk(rte_memseg_contig_walk_t func, void *arg); int __rte_experimental rte_memseg_list_walk(rte_memseg_list_walk_t func, void *arg); +/** + * Walk list of all memsegs without performing any locking. + * + * @note This function does not perform any locking, and is only safe to call + * from within memory-related callback functions. + * + * @param func + * Iterator function + * @param arg + * Argument passed to iterator + * @return + * 0 if walked over the entire list + * 1 if stopped by the user + * -1 if user function reported error + */ +int __rte_experimental +rte_memseg_walk_thread_unsafe(rte_memseg_walk_t func, void *arg); + +/** + * Walk each VA-contiguous area without performing any locking. + * + * @note This function does not perform any locking, and is only safe to call + * from within memory-related callback functions. + * + * @param func + * Iterator function + * @param arg + * Argument passed to iterator + * @return + * 0 if walked over the entire list + * 1 if stopped by the user + * -1 if user function reported error + */ +int __rte_experimental +rte_memseg_contig_walk_thread_unsafe(rte_memseg_contig_walk_t func, void *arg); + +/** + * Walk each allocated memseg list without performing any locking. + * + * @note This function does not perform any locking, and is only safe to call + * from within memory-related callback functions. + * + * @param func + * Iterator function + * @param arg + * Argument passed to iterator + * @return + * 0 if walked over the entire list + * 1 if stopped by the user + * -1 if user function reported error + */ +int __rte_experimental +rte_memseg_list_walk_thread_unsafe(rte_memseg_list_walk_t func, void *arg); + /** * Dump the physical memory layout to a file. * @@ -339,6 +393,10 @@ typedef void (*rte_mem_event_callback_t)(enum rte_mem_event event_type, * therefore some functions (e.g. `rte_memseg_walk()`) will cause a * deadlock when called from within such callbacks. * + * @note mem event callbacks not being supported is an expected error condition, + * so user code needs to handle this situation. In these cases, return + * value will be -1, and rte_errno will be set to ENOTSUP. + * * @param name * Name associated with specified callback to be added to the list. * @@ -399,6 +457,10 @@ typedef int (*rte_mem_alloc_validator_t)(int socket_id, * therefore some functions (e.g. `rte_memseg_walk()`) will cause a * deadlock when called from within such callbacks. * + * @note validator callbacks not being supported is an expected error condition, + * so user code needs to handle this situation. In these cases, return + * value will be -1, and rte_errno will be set to ENOTSUP. + * * @param name * Name associated with specified callback to be added to the list. *