DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] Importing DATA into the application
@ 2020-12-08  7:03 Narcisa Ana Maria Vasile
  2020-12-08  7:47 ` Thomas Monjalon
  0 siblings, 1 reply; 3+ messages in thread
From: Narcisa Ana Maria Vasile @ 2020-12-08  7:03 UTC (permalink / raw)
  To: dev, thomas, Dmitry Kozlyuk, Kadam, Pallavi
  Cc: Dmitry Malloy (MESHCHANINOV),
	Omar Cardona, Harini Ramakrishnan, Khoa To, Jie Zhou,
	Tal Shnaiderman, ranjit.menon, Tyler Retzlaff

Hi,

While using the DPDK libs as DLLs, I've ran into some access violation errors. I believe they are caused by some incorrect imports.
In Windows, accessing an imported variable is done either by using __declspec(dllimport), or by using an extra level of indirection[1].

Some examples of variables in DPDK that are not declared correctly:
rte_cycles.h: extern void (*rte_delay_us)(unsigned int us);
rte_mempool.h: extern struct rte_mempool_ops_table rte_mempool_ops_table;
rte_lcore.h: RTE_DECLARE_PER_LCORE(unsigned, _lcore_id); (Which expands to extern __thread unsigned per_lcore__lcore_id)

To fix this, we need to add the __declspec(dllimport) keyword to the declarations of these symbols. Also, we need to consider that the symbols can be used both internally(in the same module) and externally (imported by other modules).
We can define a macro that will tell if the symbol is used internally or is imported by a different DLL. Example:

#ifdef RTE_INTERNAL
extern void (*rte_delay_us)(unsigned int us);
#else
__declspec(dllimport) void (*rte_delay_us)(unsigned int us);
#endif

We can then hide the Windows-specific keywords under a new macro, such as:
#define RTE_IMPORT __declspec(dllimport)

However, there are a few issues to consider:
* We cannot add __declspec(dllimport)  when declaring per_lcore__lcore_id for example. We cannot have both __thread and __declspec(dllimport)  (can't import thread local variables).

Have you discussed/run into these issues before? Let me know what you think.

Thanks,
Naty

[1] https://docs.microsoft.com/en-us/cpp/build/importing-using-def-files?view=msvc-160

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-12-08 10:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-08  7:03 [dpdk-dev] Importing DATA into the application Narcisa Ana Maria Vasile
2020-12-08  7:47 ` Thomas Monjalon
2020-12-08 10:06   ` Dmitry Kozlyuk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).