annotate rathaxes_start_to_implement_sk_buff_in_the_lkm.patch @ 23:f0ab7ee21dd8

Merge
author Louis Opter <kalessin@kalessin.fr>
date Sat, 07 Jan 2012 19:28:54 +0100
parents 65523c345b40
children 60dd543b67b0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
1 # HG changeset patch
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
2 # Parent 7ed8c85f91b681a259ea6f7fcb39ec9ed4591a57
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
3 rathaxes: add sk_buff abstraction and add the implementation of the xmit function for the ethernet system. We have a fully (empty) functionnal ethernet driver
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
4
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
5 diff --git a/rathaxes/samples/lkm/CMakeLists.txt b/rathaxes/samples/lkm/CMakeLists.txt
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
6 --- a/rathaxes/samples/lkm/CMakeLists.txt
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
7 +++ b/rathaxes/samples/lkm/CMakeLists.txt
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
8 @@ -1,6 +1,6 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
9 ADD_RATHAXES_SOURCES(lkm lkm.rtx
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
10 - RTI log.rti lkm.rti pci.rti ethernet.rti
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
11 - BLT log.blt lkm.blt pci.blt ethernet.blt)
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
12 + RTI log.rti lkm.rti pci.rti socket.rti ethernet.rti e1000.rti
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
13 + BLT log.blt lkm.blt pci.blt socket.blt ethernet.blt e1000.blt)
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
14
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
15 # We can't name lkm since it's already used as the target name to generate the
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
16 # source (with ADD_RATHAXES_SOURCES).
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
17 diff --git a/rathaxes/samples/lkm/e1000.blt b/rathaxes/samples/lkm/e1000.blt
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
18 new file mode 100644
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
19 --- /dev/null
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
20 +++ b/rathaxes/samples/lkm/e1000.blt
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
21 @@ -0,0 +1,40 @@
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
22 +with e1000, Ethernet, Socket, PCI, LKM, Log
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
23 +{
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
24 + template type e1000::Context()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
25 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
26 + chunk LKM::includes()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
27 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
28 + /*
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
29 + * Force the generation of the structure in the "headers part, we
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
30 + * have to do this since we do not use the structure in this blt
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
31 + * (we hacked a bit and used it in ethernet.blt directly).
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
32 + */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
33 + typedef int ${e1000::Context}; /* CNorm __std__ workaround */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
34 + ${e1000::Context} force_declaration_in_includes;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
35 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
36 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
37 + chunk ::decl()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
38 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
39 + struct rtx_e1000_ctx
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
40 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
41 + unsigned char *bar;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
42 + };
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
43 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
44 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
45 + map
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
46 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
47 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
48 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
49 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
50 + template sequence e1000::create()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
51 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
52 + chunk ::CALL
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
53 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
54 + int bars = pci_select_bars(pdev, IORESOURCE_MEM);
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
55 + if (pci_enable_device_mem(pdev))
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
56 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
57 + ${Log::info("e1000::create: pci_enable_device_mem failed")};
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
58 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
59 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
60 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
61 +}
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
62 diff --git a/rathaxes/samples/lkm/e1000.rti b/rathaxes/samples/lkm/e1000.rti
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
63 new file mode 100644
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
64 --- /dev/null
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
65 +++ b/rathaxes/samples/lkm/e1000.rti
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
66 @@ -0,0 +1,10 @@
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
67 +interface e1000 : Socket, Ethernet, PCI, LKM
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
68 +{
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
69 + provided type e1000::Context;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
70 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
71 + /* Not sure if we need the argument */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
72 + provided sequence e1000::create()
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
73 + {
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
74 + provided chunk ::CALL;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
75 + }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
76 +}
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
77 diff --git a/rathaxes/samples/lkm/ethernet.blt b/rathaxes/samples/lkm/ethernet.blt
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
78 --- a/rathaxes/samples/lkm/ethernet.blt
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
79 +++ b/rathaxes/samples/lkm/ethernet.blt
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
80 @@ -1,4 +1,4 @@
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
81 -with Ethernet, PCI, LKM
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
82 +with Ethernet, Socket, PCI, LKM
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
83 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
84 template type Ethernet::Device()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
85 {
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
86 @@ -18,8 +18,11 @@
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
87 * I think it's useless to use the ${PCI::Device} "abstraction"
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
88 * here, since we are already in a Linux specific context here.
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
89 */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
90 - struct pci_dev *pci_dev;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
91 - struct net_device *net_dev;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
92 + struct pci_dev *pci_dev;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
93 + struct net_device *net_dev;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
94 +
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
95 + /* while waiting on issue #8 */
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
96 + struct rtx_e1000_ctx hw_ctx;
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
97 };
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
98 }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
99
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
100 @@ -51,6 +54,24 @@
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
101 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
102 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
103
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
104 + template sequence Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
105 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
106 + chunk LKM::prototypes()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
107 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
108 + static int rtx_ethernet_xmit(struct sk_buff* skb, struct net_device *dev);
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
109 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
110 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
111 + chunk LKM::code()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
112 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
113 + static int rtx_ethernet_xmit(struct sk_buff* skb, struct net_device *dev)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
114 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
115 + ${pointcut ::IMPLEMENTATION};
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
116 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
117 + return 0;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
118 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
119 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
120 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
121 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
122 template sequence Ethernet::close(Ethernet::Device dev)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
123 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
124 chunk LKM::prototypes()
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
125 @@ -100,7 +121,7 @@
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
126 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
127 .ndo_open = rtx_ethernet_open,
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
128 .ndo_stop = rtx_ethernet_close,
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
129 - .ndo_start_xmit = NULL,
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
130 + .ndo_start_xmit = rtx_ethernet_xmit,
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
131 };
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
132 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
133
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
134 diff --git a/rathaxes/samples/lkm/ethernet.rti b/rathaxes/samples/lkm/ethernet.rti
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
135 --- a/rathaxes/samples/lkm/ethernet.rti
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
136 +++ b/rathaxes/samples/lkm/ethernet.rti
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
137 @@ -1,4 +1,4 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
138 -interface Ethernet : PCI, LKM
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
139 +interface Ethernet : Socket, PCI, LKM
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
140 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
141 provided type Ethernet::Device;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
142
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
143 @@ -10,6 +10,12 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
144 provided chunk LKM::code;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
145 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
146
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
147 + required sequence Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
148 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
149 + provided chunk LKM::prototypes;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
150 + provided chunk LKM::code;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
151 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
152 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
153 required sequence Ethernet::close(Ethernet::Device)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
154 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
155 provided chunk LKM::prototypes;
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
156 diff --git a/rathaxes/samples/lkm/lkm.rtx b/rathaxes/samples/lkm/lkm.rtx
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
157 --- a/rathaxes/samples/lkm/lkm.rtx
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
158 +++ b/rathaxes/samples/lkm/lkm.rtx
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
159 @@ -15,10 +15,16 @@
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
160 Log::info("Got an interruption");
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
161 }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
162
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
163 + Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
164 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
165 + Log::info("We have one packet to transmit!");
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
166 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
167 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
168 PCI::probe(PCI::Device dev)
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
169 {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
170 Log::info("Probe the device");
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
171 Ethernet::init(dev);
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
172 + e1000::create();
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
173 }
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
174
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
175 PCI::remove(PCI::Device dev)
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
176 diff --git a/rathaxes/samples/lkm/socket.blt b/rathaxes/samples/lkm/socket.blt
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
177 new file mode 100644
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
178 --- /dev/null
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
179 +++ b/rathaxes/samples/lkm/socket.blt
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
180 @@ -0,0 +1,27 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
181 +with Socket, LKM
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
182 +{
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
183 + template type Socket::SKBuff()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
184 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
185 + chunk LKM::includes()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
186 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
187 + #include <linux/sk_buff.h>
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
188 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
189 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
190 + chunk ::decl()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
191 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
192 + struct sk_buff;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
193 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
194 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
195 + chunk ::init()
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
196 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
197 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
198 +
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
199 + map
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
200 + {
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
201 + // some work may have to be done here in order
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
202 + // to access to some field of the sk_buff.
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
203 + // We should determine if all the sk_buff managment
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
204 + // can be abstracted from the user.
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
205 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
206 + }
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
207 +}
23
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
208 diff --git a/rathaxes/samples/lkm/socket.rti b/rathaxes/samples/lkm/socket.rti
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
209 new file mode 100644
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
210 --- /dev/null
Louis Opter <kalessin@kalessin.fr>
parents: 22
diff changeset
211 +++ b/rathaxes/samples/lkm/socket.rti
20
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
212 @@ -0,0 +1,4 @@
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
213 +interface Socket : LKM
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
214 +{
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
215 + provided type Socket::SKBuff;
ecf2a0e61fff rathaxes: add sk_buff stuff
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
216 +}