30#include <linux/list.h>
32#include <rtnet_internal.h>
39#define RTPACKET_HASH_TBL_SIZE 64
40#define RTPACKET_HASH_KEY_MASK (RTPACKET_HASH_TBL_SIZE - 1)
43 struct list_head list_entry;
48 int (*handler)(
struct rtskb *,
struct rtpacket_type *);
49 int (*err_handler)(
struct rtskb *,
struct rtnet_device *,
50 struct rtpacket_type *);
51 bool (*trylock)(
struct rtpacket_type *);
52 void (*unlock)(
struct rtpacket_type *);
57int __rtdev_add_pack(
struct rtpacket_type *pt,
struct module *module);
58#define rtdev_add_pack(pt) __rtdev_add_pack(pt, THIS_MODULE)
60void rtdev_remove_pack(
struct rtpacket_type *pt);
62static inline bool rtdev_lock_pack(
struct rtpacket_type *pt)
64 return try_module_get(pt->owner);
67static inline void rtdev_unlock_pack(
struct rtpacket_type *pt)
69 module_put(pt->owner);
72void rt_stack_connect(
struct rtnet_device *rtdev,
struct rtnet_mgr *mgr);
73void rt_stack_disconnect(
struct rtnet_device *rtdev);
75#if IS_ENABLED(CONFIG_XENO_DRIVERS_NET_DRV_LOOPBACK)
76void rt_stack_deliver(
struct rtskb *rtskb);
79int rt_stack_mgr_init(
struct rtnet_mgr *mgr);
80void rt_stack_mgr_delete(
struct rtnet_mgr *mgr);
82void rtnetif_rx(
struct rtskb *skb);
84static inline void rtnetif_tx(
struct rtnet_device *rtdev)
88static inline void rt_mark_stack_mgr(
struct rtnet_device *rtdev)
void rtdm_event_signal(rtdm_event_t *event)
Signal an event occurrence.
Definition drvlib.c:797