38e627211e2bcf02d794a52cf7e8fbac7005a4e7
[people/sha0/gpxe.git] / src / include / gpxe / interface.h
1 #ifndef _GPXE_INTERFACE_H
2 #define _GPXE_INTERFACE_H
3
4 /** @file
5  *
6  * Object communication interfaces
7  *
8  */
9
10 /** An object communication interface */
11 struct interface {
12         /** Destination interface
13          *
14          * When messages are sent via this interface, they will be
15          * delivered to the destination interface.
16          *
17          * This pointer may never be NULL.  When the interface is
18          * unplugged, it should point to a null interface.
19          */
20         struct interface *dest;
21         /** Update reference count
22          *
23          * @v intf              Interface
24          * @v delta             Change to apply to reference count
25          *
26          * This method updates the reference count for the object
27          * containing the interface.
28          */
29         void ( * refcnt ) ( struct interface *intf, int delta );
30 };
31
32 extern void plug ( struct interface *intf, struct interface *dest );
33
34 extern void null_refcnt ( struct interface *intf, int delta );
35
36 #endif /* _GPXE_INTERFACE_H */