25 #ifndef __STACK_MGR_H_
26 #define __STACK_MGR_H_
30 #include <linux/list.h>
32 #include <rtnet_internal.h>
40 #define RTPACKET_HASH_TBL_SIZE 64
41 #define RTPACKET_HASH_KEY_MASK (RTPACKET_HASH_TBL_SIZE-1)
43 struct rtpacket_type {
44 struct list_head list_entry;
49 int (*handler)(
struct rtskb *,
struct rtpacket_type *);
50 int (*err_handler)(
struct rtskb *,
struct rtnet_device *,
51 struct rtpacket_type *);
52 bool (*trylock)(
struct rtpacket_type *);
53 void (*unlock)(
struct rtpacket_type *);
59 int __rtdev_add_pack(
struct rtpacket_type *pt,
struct module *module);
60 #define rtdev_add_pack(pt) \
61 __rtdev_add_pack(pt, THIS_MODULE)
63 void rtdev_remove_pack(
struct rtpacket_type *pt);
65 static inline bool rtdev_lock_pack(
struct rtpacket_type *pt)
67 return try_module_get(pt->owner);
70 static inline void rtdev_unlock_pack(
struct rtpacket_type *pt)
72 module_put(pt->owner);
75 void rt_stack_connect(
struct rtnet_device *rtdev,
struct rtnet_mgr *mgr);
76 void rt_stack_disconnect(
struct rtnet_device *rtdev);
78 #if IS_ENABLED(CONFIG_XENO_DRIVERS_NET_DRV_LOOPBACK)
79 void rt_stack_deliver(
struct rtskb *rtskb);
82 int rt_stack_mgr_init(
struct rtnet_mgr *mgr);
83 void rt_stack_mgr_delete(
struct rtnet_mgr *mgr);
85 void rtnetif_rx(
struct rtskb *skb);
87 static inline void rtnetif_tx(
struct rtnet_device *rtdev)
91 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:701