25 #ifndef __STACK_MGR_H_ 26 #define __STACK_MGR_H_ 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) 42 struct rtpacket_type {
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 *);
57 int __rtdev_add_pack(
struct rtpacket_type *pt,
struct module *module);
58 #define rtdev_add_pack(pt) __rtdev_add_pack(pt, THIS_MODULE) 60 void rtdev_remove_pack(
struct rtpacket_type *pt);
62 static inline bool rtdev_lock_pack(
struct rtpacket_type *pt)
64 return try_module_get(pt->owner);
67 static inline void rtdev_unlock_pack(
struct rtpacket_type *pt)
69 module_put(pt->owner);
72 void rt_stack_connect(
struct rtnet_device *rtdev,
struct rtnet_mgr *mgr);
73 void rt_stack_disconnect(
struct rtnet_device *rtdev);
75 #if IS_ENABLED(CONFIG_XENO_DRIVERS_NET_DRV_LOOPBACK) 76 void rt_stack_deliver(
struct rtskb *rtskb);
79 int rt_stack_mgr_init(
struct rtnet_mgr *mgr);
80 void rt_stack_mgr_delete(
struct rtnet_mgr *mgr);
82 void rtnetif_rx(
struct rtskb *skb);
84 static inline void rtnetif_tx(
struct rtnet_device *rtdev)
88 static 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:824