eal/windows: implement alarm API
authorDmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Fri, 25 Sep 2020 23:32:43 +0000 (02:32 +0300)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 14 Oct 2020 20:54:04 +0000 (22:54 +0200)
commitf4cbdbc7fbd2cf352d50f5ce7018a63dc5392b1b
treed6c9b0849a28f14dc9b25e1f72a91fae233df384
parent5c016fc0205a67123481dbe8f9784635beac8a09
eal/windows: implement alarm API

Implementation is based on waitable timers Win32 API. When timer is set,
a callback and its argument are supplied to the OS, while timer handle
is stored in EAL alarm list. When timer expires, OS wakes up the
interrupt thread and runs the callback. Upon completion it removes the
alarm.

Waitable timers must be set from the thread their callback will run in,
eal_intr_thread_schedule() provides a way to schedule asyncronuous code
execution in the interrupt thread. Alarm module builds synchronous timer
setup on top of it.

Windows alarms are not a type of DPDK interrupt handle and do not
interact with interrupt module beyond executing in the same thread.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Narcisa Vasile <navasile@linux.microsoft.com>
lib/librte_eal/rte_eal_exports.def
lib/librte_eal/windows/eal_alarm.c [new file with mode: 0644]
lib/librte_eal/windows/meson.build