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=1e35cb2b2aaa6cf39f7159c60952636c049d6d57;hpb=6f63858e55e6e30fd0383663ce934f1b2eae74c7;p=dpdk.git diff --git a/lib/librte_eal/common/include/rte_memory.h b/lib/librte_eal/common/include/rte_memory.h index 1e35cb2b2a..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. * @@ -330,7 +384,7 @@ enum rte_mem_event { * Function typedef used to register callbacks for memory events. */ typedef void (*rte_mem_event_callback_t)(enum rte_mem_event event_type, - const void *addr, size_t len); + const void *addr, size_t len, void *arg); /** * Function used to register callbacks for memory events. @@ -339,19 +393,27 @@ 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. * * @param clb * Callback function pointer. * + * @param arg + * Argument to pass to the callback. + * * @return * 0 on successful callback register * -1 on unsuccessful callback register, with rte_errno value indicating * reason for failure. */ int __rte_experimental -rte_mem_event_callback_register(const char *name, rte_mem_event_callback_t clb); +rte_mem_event_callback_register(const char *name, rte_mem_event_callback_t clb, + void *arg); /** * Function used to unregister callbacks for memory events. @@ -359,13 +421,16 @@ rte_mem_event_callback_register(const char *name, rte_mem_event_callback_t clb); * @param name * Name associated with specified callback to be removed from the list. * + * @param arg + * Argument to look for among callbacks with specified callback name. + * * @return * 0 on successful callback unregister * -1 on unsuccessful callback unregister, with rte_errno value indicating * reason for failure. */ int __rte_experimental -rte_mem_event_callback_unregister(const char *name); +rte_mem_event_callback_unregister(const char *name, void *arg); #define RTE_MEM_ALLOC_VALIDATOR_NAME_LEN 64 @@ -392,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. *