git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eal/windows: add missing SPDX license tag
[dpdk.git]
/
lib
/
librte_eal
/
common
/
eal_common_memalloc.c
diff --git
a/lib/librte_eal/common/eal_common_memalloc.c
b/lib/librte_eal/common/eal_common_memalloc.c
index
49fd53c
..
e872c65
100644
(file)
--- a/
lib/librte_eal/common/eal_common_memalloc.c
+++ b/
lib/librte_eal/common/eal_common_memalloc.c
@@
-9,7
+9,7
@@
#include <rte_fbarray.h>
#include <rte_memzone.h>
#include <rte_memory.h>
#include <rte_fbarray.h>
#include <rte_memzone.h>
#include <rte_memory.h>
-#include <rte_
eal_memconfig
.h>
+#include <rte_
string_fns
.h>
#include <rte_rwlock.h>
#include "eal_private.h"
#include <rte_rwlock.h>
#include "eal_private.h"
@@
-20,6
+20,7
@@
struct mem_event_callback_entry {
TAILQ_ENTRY(mem_event_callback_entry) next;
char name[RTE_MEM_EVENT_CALLBACK_NAME_LEN];
rte_mem_event_callback_t clb;
TAILQ_ENTRY(mem_event_callback_entry) next;
char name[RTE_MEM_EVENT_CALLBACK_NAME_LEN];
rte_mem_event_callback_t clb;
+ void *arg;
};
struct mem_alloc_validator_entry {
};
struct mem_alloc_validator_entry {
@@
-43,12
+44,12
@@
static struct mem_alloc_validator_entry_list mem_alloc_validator_list =
static rte_rwlock_t mem_alloc_validator_rwlock = RTE_RWLOCK_INITIALIZER;
static struct mem_event_callback_entry *
static rte_rwlock_t mem_alloc_validator_rwlock = RTE_RWLOCK_INITIALIZER;
static struct mem_event_callback_entry *
-find_mem_event_callback(const char *name)
+find_mem_event_callback(const char *name
, void *arg
)
{
struct mem_event_callback_entry *r;
TAILQ_FOREACH(r, &mem_event_callback_list, next) {
{
struct mem_event_callback_entry *r;
TAILQ_FOREACH(r, &mem_event_callback_list, next) {
- if (!strcmp(r->name, name))
+ if (!strcmp(r->name, name)
&& r->arg == arg
)
break;
}
return r;
break;
}
return r;
@@
-73,13
+74,15
@@
eal_memalloc_is_contig(const struct rte_memseg_list *msl, void *start,
void *end, *aligned_start, *aligned_end;
size_t pgsz = (size_t)msl->page_sz;
const struct rte_memseg *ms;
void *end, *aligned_start, *aligned_end;
size_t pgsz = (size_t)msl->page_sz;
const struct rte_memseg *ms;
+ const struct internal_config *internal_conf =
+ eal_get_internal_configuration();
/* for IOVA_VA, it's always contiguous */
/* for IOVA_VA, it's always contiguous */
- if (rte_eal_iova_mode() == RTE_IOVA_VA)
+ if (rte_eal_iova_mode() == RTE_IOVA_VA
&& !msl->external
)
return true;
/* for legacy memory, it's always contiguous */
return true;
/* for legacy memory, it's always contiguous */
- if (internal_conf
ig.
legacy_mem)
+ if (internal_conf
->
legacy_mem)
return true;
end = RTE_PTR_ADD(start, len);
return true;
end = RTE_PTR_ADD(start, len);
@@
-145,7
+148,7
@@
eal_memalloc_is_contig(const struct rte_memseg_list *msl, void *start,
int
eal_memalloc_mem_event_callback_register(const char *name,
int
eal_memalloc_mem_event_callback_register(const char *name,
- rte_mem_event_callback_t clb)
+ rte_mem_event_callback_t clb
, void *arg
)
{
struct mem_event_callback_entry *entry;
int ret, len;
{
struct mem_event_callback_entry *entry;
int ret, len;
@@
-163,7
+166,7
@@
eal_memalloc_mem_event_callback_register(const char *name,
}
rte_rwlock_write_lock(&mem_event_rwlock);
}
rte_rwlock_write_lock(&mem_event_rwlock);
- entry = find_mem_event_callback(name);
+ entry = find_mem_event_callback(name
, arg
);
if (entry != NULL) {
rte_errno = EEXIST;
ret = -1;
if (entry != NULL) {
rte_errno = EEXIST;
ret = -1;
@@
-179,12
+182,14
@@
eal_memalloc_mem_event_callback_register(const char *name,
/* callback successfully created and is valid, add it to the list */
entry->clb = clb;
/* callback successfully created and is valid, add it to the list */
entry->clb = clb;
- snprintf(entry->name, RTE_MEM_EVENT_CALLBACK_NAME_LEN, "%s", name);
+ entry->arg = arg;
+ strlcpy(entry->name, name, RTE_MEM_EVENT_CALLBACK_NAME_LEN);
TAILQ_INSERT_TAIL(&mem_event_callback_list, entry, next);
ret = 0;
TAILQ_INSERT_TAIL(&mem_event_callback_list, entry, next);
ret = 0;
- RTE_LOG(DEBUG, EAL, "Mem event callback '%s' registered\n", name);
+ RTE_LOG(DEBUG, EAL, "Mem event callback '%s:%p' registered\n",
+ name, arg);
unlock:
rte_rwlock_write_unlock(&mem_event_rwlock);
unlock:
rte_rwlock_write_unlock(&mem_event_rwlock);
@@
-192,7
+197,7
@@
unlock:
}
int
}
int
-eal_memalloc_mem_event_callback_unregister(const char *name)
+eal_memalloc_mem_event_callback_unregister(const char *name
, void *arg
)
{
struct mem_event_callback_entry *entry;
int ret, len;
{
struct mem_event_callback_entry *entry;
int ret, len;
@@
-211,7
+216,7
@@
eal_memalloc_mem_event_callback_unregister(const char *name)
}
rte_rwlock_write_lock(&mem_event_rwlock);
}
rte_rwlock_write_lock(&mem_event_rwlock);
- entry = find_mem_event_callback(name);
+ entry = find_mem_event_callback(name
, arg
);
if (entry == NULL) {
rte_errno = ENOENT;
ret = -1;
if (entry == NULL) {
rte_errno = ENOENT;
ret = -1;
@@
-222,7
+227,8
@@
eal_memalloc_mem_event_callback_unregister(const char *name)
ret = 0;
ret = 0;
- RTE_LOG(DEBUG, EAL, "Mem event callback '%s' unregistered\n", name);
+ RTE_LOG(DEBUG, EAL, "Mem event callback '%s:%p' unregistered\n",
+ name, arg);
unlock:
rte_rwlock_write_unlock(&mem_event_rwlock);
unlock:
rte_rwlock_write_unlock(&mem_event_rwlock);
@@
-238,9
+244,9
@@
eal_memalloc_mem_event_notify(enum rte_mem_event event, const void *start,
rte_rwlock_read_lock(&mem_event_rwlock);
TAILQ_FOREACH(entry, &mem_event_callback_list, next) {
rte_rwlock_read_lock(&mem_event_rwlock);
TAILQ_FOREACH(entry, &mem_event_callback_list, next) {
- RTE_LOG(DEBUG, EAL, "Calling mem event callback
%s
",
- entry->name);
- entry->clb(event, start, len);
+ RTE_LOG(DEBUG, EAL, "Calling mem event callback
'%s:%p'\n
",
+ entry->name
, entry->arg
);
+ entry->clb(event, start, len
, entry->arg
);
}
rte_rwlock_read_unlock(&mem_event_rwlock);
}
rte_rwlock_read_unlock(&mem_event_rwlock);
@@
-284,7
+290,7
@@
eal_memalloc_mem_alloc_validator_register(const char *name,
entry->clb = clb;
entry->socket_id = socket_id;
entry->limit = limit;
entry->clb = clb;
entry->socket_id = socket_id;
entry->limit = limit;
- s
nprintf(entry->name, RTE_MEM_ALLOC_VALIDATOR_NAME_LEN, "%s", name
);
+ s
trlcpy(entry->name, name, RTE_MEM_ALLOC_VALIDATOR_NAME_LEN
);
TAILQ_INSERT_TAIL(&mem_alloc_validator_list, entry, next);
ret = 0;
TAILQ_INSERT_TAIL(&mem_alloc_validator_list, entry, next);
ret = 0;