Mercurial > archived > louis > epitech > mq > rathaxes
annotate rathaxes_correctly_use_chunk_and_template_sequences_parameters_in_e1000.patch @ 73:c189b4b44060
Automated merge with https://www.kalessin.fr/projs/hg/epitech/mq/rathaxes/
author | Louis Opter <louis@lse.epita.fr> |
---|---|
date | Sun, 19 Feb 2012 12:08:54 +0100 |
parents | 3d37fa01b19c 6e9dcbd120c5 |
children |
rev | line source |
---|---|
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
1 # HG changeset patch |
66
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
2 # Parent 0197bb30a5d0fe40c5c67c510a9f076d2272d45d |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
3 # User Louis Opter <louis@lse.epitech.net>, David Pineau <dav.pineau@gmail.com> |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
4 rathaxes: correctly use chunk and template sequences parameters in the e1000 sample |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
5 |
63 | 6 diff --git a/rathaxes/samples/e1000/e1000.blt b/rathaxes/samples/e1000/e1000.blt |
7 --- a/rathaxes/samples/e1000/e1000.blt | |
8 +++ b/rathaxes/samples/e1000/e1000.blt | |
9 @@ -15,18 +15,20 @@ | |
10 | |
11 chunk ::decl() | |
12 { | |
13 - struct rtx_e1000_ctx | |
14 + /* | |
15 + * Yes, this typedef looks ugly but read the remark about | |
16 + * Ethernet::Device in ethernet.blt. | |
17 + */ | |
18 + typedef struct rtx_e1000_ctx | |
19 { | |
20 int bars; | |
21 unsigned char /* __iomem */ *ioaddr; | |
22 int irq; | |
23 - }; | |
24 + } *rtx_e1000_ctx_p; | |
25 } | |
26 | |
27 - chunk ::init(bars, ioaddr) | |
28 + chunk ::init() | |
29 { | |
30 - ${self}.bars = ${bars}; | |
31 - ${self}.ioaddr = ${ioaddr}; | |
32 } | |
33 | |
34 map | |
35 @@ -136,58 +138,74 @@ | |
36 | |
37 template sequence e1000::create_device() | |
38 { | |
39 - chunk Ethernet::create_device() | |
40 + chunk Ethernet::create_device(/* PCI::Device */ pdev, /* Ethernet::Device */ rtx_ether_ctx) | |
41 { | |
42 - rtx_ether_ctx->hw_ctx.irq = pdev->irq; | |
43 - rtx_ether_ctx->hw_ctx.bars = pci_select_bars(pdev, IORESOURCE_MEM); | |
44 - if (pci_enable_device_mem(pdev)) | |
45 + /* | |
46 + * PCI init stuff: | |
47 + * | |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
48 + * Some of that code should certainly be moved in the PCI/Ethernet |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
49 + * blts, also at some point maybe we could do that completely |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
50 + * automatically in the PCI/Ethernet blts. |
63 | 51 + */ |
52 + | |
53 + /* | |
54 + * We could have used an init function here but since we can't init | |
55 + * all the fields at once (see, ioaddr) and cannot call a C | |
56 + * function within a placeholder (${}), it wasn't really worth it. | |
57 + */ | |
64 | 58 + ${rtx_ether_ctx}->hw_ctx.bars = pci_select_bars(${pdev}, IORESOURCE_MEM); |
59 + ${rtx_ether_ctx}->hw_ctx.irq = ${pdev}->irq; | |
63 | 60 + |
61 + if (pci_enable_device_mem(${pdev})) | |
62 { | |
63 ${Log::info("e1000::create: pci_enable_device_mem failed")}; | |
64 } | |
65 - | |
66 - if (pci_request_selected_regions(pdev, rtx_ether_ctx->hw_ctx.bars, ${config.name})) | |
67 + if (pci_request_selected_regions(${pdev}, ${rtx_ether_ctx}->hw_ctx.bars, ${config.name})) | |
68 { | |
69 ${Log::info("e1000::create: pci_request_selected_regions failed")}; | |
70 } | |
71 - | |
72 if (${config.set_master}) | |
73 { | |
74 - pci_set_master(pdev); | |
75 + pci_set_master(${pdev}); | |
76 } | |
77 | |
78 /* 0 here is for BAR_0: */ | |
79 - rtx_ether_ctx->hw_ctx.ioaddr = pci_ioremap_bar(pdev, 0); | |
80 - if (!rtx_ether_ctx->hw_ctx.ioaddr) | |
81 + ${rtx_ether_ctx}->hw_ctx.ioaddr = pci_ioremap_bar(${pdev}, 0); | |
82 + if (!${rtx_ether_ctx}->hw_ctx.ioaddr) | |
83 { | |
84 ${Log::info("e1000::create: pci_ioremap_bar failed")}; | |
85 } | |
86 | |
87 + /* | |
88 + * The really device specific algorithm starts here (so it should | |
89 + * certainly be written in the frontend): | |
90 + */ | |
91 + | |
92 /* Reset the card */ | |
93 - rtx_e1000_register_write32(&rtx_ether_ctx->hw_ctx, E1000_CTRL, E1000_CMD_RST); | |
94 + rtx_e1000_register_write32(&${rtx_ether_ctx}->hw_ctx, E1000_CTRL, E1000_CMD_RST); | |
95 udelay(10); | |
96 | |
97 - /* Now we can load its mac address */ | |
98 + /* Now we can load its mac address (thanks minix code) */ | |
99 int i = 0; | |
100 - for (i = 0 /* < this is not generated! */; i < 3; ++i) | |
101 + for (i = 0 /* < this is not generated! (cnorm bug) */; i < 3; ++i) | |
102 { | |
103 - rtx_e1000_register_write32(&rtx_ether_ctx->hw_ctx, E1000_EEPROM_READ, (i << 8) | 1); | |
104 + rtx_e1000_register_write32(&${rtx_ether_ctx}->hw_ctx, E1000_EEPROM_READ, (i << 8) | 1); | |
105 | |
106 int value; | |
107 - /* Should be a do { } while(); but the compiler doesn't do { } while(); yet. */ | |
108 - value = rtx_e1000_register_read32(&rtx_ether_ctx->hw_ctx, E1000_EEPROM_READ); | |
109 - while ((value & (1 << 4)) == 0) | |
110 - value = rtx_e1000_register_read32(&rtx_ether_ctx->hw_ctx, E1000_EEPROM_READ); | |
111 + do | |
112 + value = rtx_e1000_register_read32(&${rtx_ether_ctx}->hw_ctx, E1000_EEPROM_READ); | |
113 + while ((value & (1 << 4)) == 0); | |
114 value >>= 16; | |
115 | |
116 - rtx_ether_ctx->net_dev->dev_addr[i * 2] = value & 0xff; | |
117 - rtx_ether_ctx->net_dev->dev_addr[i * 2 + 1] = (value >> 8) & 0xff; | |
118 + ${rtx_ether_ctx}->net_dev->dev_addr[i * 2] = value & 0xff; | |
119 + ${rtx_ether_ctx}->net_dev->dev_addr[i * 2 + 1] = (value >> 8) & 0xff; | |
120 } | |
121 | |
122 - memcpy(rtx_ether_ctx->net_dev->perm_addr, | |
123 - rtx_ether_ctx->net_dev->dev_addr, | |
124 - rtx_ether_ctx->net_dev->addr_len); | |
125 + memcpy(${rtx_ether_ctx}->net_dev->perm_addr, | |
126 + ${rtx_ether_ctx}->net_dev->dev_addr, | |
127 + ${rtx_ether_ctx}->net_dev->addr_len); | |
128 | |
129 - { /* < mais lol. */ | |
130 + { /* < See #10 */ | |
131 ${Log::info("e1000::create: mac address loaded from the EEPROM")}; | |
132 } | |
133 } | |
134 @@ -199,15 +217,14 @@ | |
135 | |
136 template sequence e1000::destroy_device() | |
137 { | |
138 - chunk Ethernet::destroy_device | |
139 + chunk Ethernet::destroy_device(/* PCI::Device */ pdev, /* Ethernet::Device */ rtx_ether_ctx) | |
140 { | |
141 /* | |
142 * Here, we should have some checks to avoid to free resources that | |
143 * haven't been allocated. (e.g: in case of previous errors). | |
144 */ | |
145 - struct rtx_ethernet_dev* rtx_ether_ctx = netdev_priv(net_dev); | |
146 - iounmap(rtx_ether_ctx->hw_ctx.ioaddr); | |
147 - pci_release_selected_regions(pdev, rtx_ether_ctx->hw_ctx.bars); | |
148 + iounmap(${rtx_ether_ctx}->hw_ctx.ioaddr); | |
149 + pci_release_selected_regions(${pdev}, ${rtx_ether_ctx}->hw_ctx.bars); | |
150 } | |
151 | |
152 chunk ::CALL | |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
153 @@ -215,7 +232,7 @@ |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
154 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
155 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
156 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
157 - template sequence e1000::print_status() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
158 + template sequence e1000::print_status(Ethernet::Device ctx) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
159 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
160 chunk LKM::prototypes() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
161 { |
65 | 162 @@ -227,7 +244,7 @@ |
163 static void rtx_e1000_print_status(struct rtx_e1000_ctx *ctx) | |
164 { | |
165 unsigned int status = rtx_e1000_register_read32(ctx, E1000_STATUS); | |
166 - pr_info("rtx_e1000 status: \n"); | |
167 + pr_info("card status: \n"); | |
168 pr_info("\tRegister value: 0x%x\n", status); | |
169 pr_info("\tMode: %s\n", (status & 1) ? "Full": "Half"); | |
170 pr_info("\tLink: %s\n", (status & 2) ? "Up" : "Down"); | |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
171 @@ -238,6 +255,7 @@ |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
172 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
173 chunk ::CALL |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
174 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
175 + rtx_e1000_print_status(&${ctx}->hw_ctx); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
176 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
177 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
178 |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
179 @@ -273,9 +291,9 @@ |
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
180 } |
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
181 } |
63 | 182 |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
183 - chunk ::CALL() |
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
184 + chunk ::CALL |
63 | 185 { |
186 - rtx_e1000_register_read32(&${ctx}, ${reg_offset}); | |
187 + rtx_e1000_register_read32(${ctx}, ${reg_offset}); | |
188 } | |
189 } | |
190 | |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
191 @@ -294,9 +312,9 @@ |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
192 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
193 } |
63 | 194 |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
195 - chunk ::CALL() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
196 + chunk ::CALL |
63 | 197 { |
198 - rtx_e1000_register_write32(&${ctx}, ${reg_offset}); | |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
199 + rtx_e1000_register_write32(${ctx}, ${reg_offset}, ${value}); |
63 | 200 } |
201 } | |
202 | |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
203 @@ -315,17 +333,19 @@ |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
204 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
205 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
206 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
207 - chunk ::CALL() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
208 + chunk ::CALL |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
209 { |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
210 + rtx_e1000_register_set32(${ctx}, ${reg_offset}, ${value}); |
63 | 211 } |
212 } | |
213 | |
214 - template sequence e1000::setup_interrupt_handler() | |
215 + template sequence e1000::setup_interrupt_handler(Ethernet::Device ctx) | |
216 { | |
217 chunk LKM::includes() | |
218 { | |
69
8bb53638585b
WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents:
68
diff
changeset
|
219 #include <linux/interrupt.h> |
8bb53638585b
WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents:
68
diff
changeset
|
220 } |
8bb53638585b
WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents:
68
diff
changeset
|
221 + |
8bb53638585b
WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents:
68
diff
changeset
|
222 chunk LKM::prototypes() |
8bb53638585b
WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents:
68
diff
changeset
|
223 { |
8bb53638585b
WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents:
68
diff
changeset
|
224 static int e1000_setup_interrupt_handler(struct rtx_ethernet_dev *); |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
225 @@ -345,20 +365,20 @@ |
65 | 226 |
227 if (error) | |
228 { | |
229 - ${Log::info("Cannot register the interruption")}; | |
230 + ${Log::info("cannot register the interrupt handler")}; | |
231 } | |
232 | |
233 return error; | |
63 | 234 } |
235 } | |
236 | |
237 - chunk ::CALL() | |
238 + chunk ::CALL | |
239 { | |
240 // this is an hack for the scope | |
241 (void)1; | |
242 { | |
243 int error; | |
244 - error = e1000_setup_interrupt_handler(rtx_ether_dev); | |
245 + error = e1000_setup_interrupt_handler(${ctx}); | |
246 if (error) | |
247 { | |
248 return error; | |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
249 @@ -367,7 +387,7 @@ |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
250 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
251 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
252 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
253 - template sequence e1000::free_interrupt_handler() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
254 + template sequence e1000::free_interrupt_handler(Ethernet::Device ctx) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
255 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
256 chunk LKM::prototypes() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
257 { |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
258 @@ -378,22 +398,21 @@ |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
259 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
260 static void e1000_free_interrupt_handler(struct rtx_ethernet_dev *ethernet_ctx) |
65 | 261 { |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
262 - |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
263 free_irq(ethernet_ctx->hw_ctx.irq, ethernet_ctx); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
264 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
265 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
266 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
267 - chunk ::CALL() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
268 + chunk ::CALL |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
269 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
270 - e1000_free_interrupt_handler(rtx_ether_dev); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
271 + e1000_free_interrupt_handler(${ctx}); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
272 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
273 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
274 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
275 - template sequence e1000::activate_device_interruption() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
276 + template sequence e1000::activate_device_interruption(Ethernet::Device ctx) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
277 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
278 - chunk ::CALL() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
279 + chunk ::CALL |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
280 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
281 - rtx_e1000_register_write32(ctx, E1000_IMS, |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
282 + rtx_e1000_register_write32(&${ctx}->hw_ctx, E1000_IMS, |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
283 E1000_INTR_TXDW | |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
284 E1000_INTR_TXQE | |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
285 E1000_INTR_LSC | |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
286 @@ -402,11 +421,11 @@ |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
287 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
288 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
289 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
290 - template sequence e1000::set_up_device() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
291 + template sequence e1000::set_up_device(Ethernet::Device ctx) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
292 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
293 - chunk ::CALL() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
294 + chunk ::CALL |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
295 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
296 - rtx_e1000_register_set32(ctx, E1000_CTRL, |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
297 + rtx_e1000_register_set32(&${ctx}->hw_ctx, E1000_CTRL, |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
298 E1000_CMD_ASDE | |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
299 E1000_CMD_SLU | |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
300 E1000_CMD_LRST | |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
301 @@ -414,20 +433,20 @@ |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
302 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
303 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
304 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
305 - template sequence e1000::handle_intr() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
306 + template sequence e1000::handle_interrupt(Ethernet::Device ctx) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
307 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
308 - chunk ::CALL() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
309 + chunk ::CALL |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
310 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
311 int intr; |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
312 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
313 - intr = rtx_e1000_register_read32(ctx, E1000_ICR); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
314 - if (intr & E1000_INTR_LSC) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
315 - { |
65 | 316 - ${Log::info("Link status changed")}; |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
317 - } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
318 - |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
319 + intr = rtx_e1000_register_read32(&${ctx}->hw_ctx, E1000_ICR); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
320 if (intr) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
321 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
322 + if (intr & E1000_INTR_LSC) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
323 + { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
324 + ${Log::info("cable link status changed")}; |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
325 + } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
326 + |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
327 return IRQ_HANDLED; |
65 | 328 } |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
329 } |
63 | 330 diff --git a/rathaxes/samples/e1000/e1000.rti b/rathaxes/samples/e1000/e1000.rti |
331 --- a/rathaxes/samples/e1000/e1000.rti | |
332 +++ b/rathaxes/samples/e1000/e1000.rti | |
333 @@ -1,25 +1,22 @@ | |
334 interface e1000 : Socket, Ethernet, PCI, LKM | |
335 { | |
336 provided type e1000::Context; | |
337 + /* | |
338 + * These two types should actually be registers definitions in the frontend: | |
339 + */ | |
340 provided type e1000::Register; | |
341 provided type e1000::Commands; | |
342 | |
343 - /* | |
344 - * This sequence should receive an argument like Ethernet::Device, but it is | |
345 - * unclear about how this argument should be bound to a variable/argument in | |
346 - * the instrumented C code. | |
347 - * | |
348 - * Here again, we rely on the fact that *we* wrote the parent context and | |
349 - * named the C variables we need/use with the same name everywhere. | |
350 - */ | |
351 provided sequence e1000::create_device() | |
352 { | |
353 + /* should take PCI::Device and Ethernet::Device args: */ | |
354 provided chunk Ethernet::create_device; | |
355 provided chunk ::CALL; | |
356 } | |
357 | |
358 provided sequence e1000::destroy_device() | |
359 { | |
360 + /* should take PCI::Device and Ethernet::Device args: */ | |
361 provided chunk Ethernet::destroy_device; | |
362 provided chunk ::CALL; | |
363 } | |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
364 @@ -28,44 +25,43 @@ |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
365 * This should take an e1000::Context as the first argument but this was |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
366 * not working as wished. |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
367 */ |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
368 - provided sequence e1000::print_status() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
369 + provided sequence e1000::print_status(Ethernet::Device) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
370 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
371 provided chunk LKM::prototypes; |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
372 provided chunk LKM::code; |
63 | 373 provided chunk ::CALL; |
374 } | |
375 | |
376 - provided sequence e1000::setup_interrupt_handler() | |
377 + provided sequence e1000::setup_interrupt_handler(Ethernet::Device) | |
378 { | |
379 - provided chunk LKM::includes; // work without this one | |
380 + provided chunk LKM::includes; // works without this one | |
381 provided chunk LKM::prototypes; | |
382 provided chunk LKM::code; | |
383 provided chunk ::CALL; | |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
384 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
385 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
386 - provided sequence e1000::free_interrupt_handler() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
387 + provided sequence e1000::free_interrupt_handler(Ethernet::Device) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
388 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
389 provided chunk LKM::prototypes; |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
390 provided chunk LKM::code; |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
391 provided chunk ::CALL; |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
392 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
393 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
394 - provided sequence e1000::activate_device_interruption() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
395 + provided sequence e1000::activate_device_interruption(Ethernet::Device) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
396 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
397 provided chunk ::CALL; |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
398 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
399 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
400 - provided sequence e1000::set_up_device() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
401 + provided sequence e1000::set_up_device(Ethernet::Device) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
402 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
403 provided chunk ::CALL; |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
404 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
405 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
406 - provided sequence e1000::handle_intr() |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
407 + provided sequence e1000::handle_interrupt(Ethernet::Device) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
408 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
409 provided chunk ::CALL; |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
410 } |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
411 |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
412 - |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
413 provided sequence e1000::register_read32(e1000::Context, e1000::Register) |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
414 { |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
415 provided chunk LKM::prototypes; |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
416 diff --git a/rathaxes/samples/e1000/ethernet.blt b/rathaxes/samples/e1000/ethernet.blt |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
417 --- a/rathaxes/samples/e1000/ethernet.blt |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
418 +++ b/rathaxes/samples/e1000/ethernet.blt |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
419 @@ -1,5 +1,10 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
420 with Ethernet, PCI, LKM, Log |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
421 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
422 + /* |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
423 + * Unlike PCI::Device, Ethernet::Device doesn't match the struct net_device |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
424 + * from Linux. Ethernet::Device is the type that we use in the private |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
425 + * field of the struct net_device. |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
426 + */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
427 template type Ethernet::Device() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
428 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
429 chunk LKM::includes() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
430 @@ -10,7 +15,14 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
431 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
432 chunk ::decl() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
433 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
434 - struct rtx_ethernet_dev |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
435 + /* |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
436 + * So, at first sight, it sucks to typedef it as pointer but (for |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
437 + * now) it makes sense for two reasons: |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
438 + * - This structure will always be used through a pointer; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
439 + * - This remove the ambiguity of pointer/not-pointer in the |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
440 + * ::init() chunk. |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
441 + */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
442 + typedef struct rtx_ethernet_dev |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
443 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
444 /* |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
445 * I think it's useless to use the ${PCI::Device} "abstraction" |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
446 @@ -21,12 +33,18 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
447 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
448 /* while waiting on issue #8 */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
449 struct rtx_e1000_ctx hw_ctx; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
450 - }; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
451 + } *rtx_ethernet_dev_p; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
452 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
453 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
454 - chunk ::init(net_dev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
455 + chunk ::init(net_dev, pci_dev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
456 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
457 - ${self} = ${net_dev}; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
458 + ${self} = netdev_priv(${net_dev}); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
459 + /* |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
460 + * We can use -> because we know that ${self} will be always a |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
461 + * pointer ("thanks" to the typedef) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
462 + */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
463 + ${self}->pci_dev = ${pci_dev}; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
464 + ${self}->net_dev = ${net_dev}; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
465 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
466 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
467 map |
64 | 468 @@ -45,10 +63,10 @@ |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
469 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
470 static int rtx_ethernet_open(struct net_device *dev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
471 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
472 - struct rtx_ethernet_dev* rtx_ether_dev = netdev_priv(dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
473 + struct rtx_ethernet_dev* rtx_ether_dev = netdev_priv(dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
474 struct rtx_e1000_ctx* ctx = &rtx_ether_dev->hw_ctx; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
475 |
64 | 476 - ${pointcut ::IMPLEMENTATION}; |
69
8bb53638585b
WIP on the e1000 sample: fix build
Louis Opter <louis@lse.epitech.net>
parents:
68
diff
changeset
|
477 + ${pointcut ::IMPLEMENTATION(local.rtx_ether_dev)}; |
64 | 478 |
479 return 0; | |
480 } | |
66
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
481 @@ -66,7 +84,7 @@ |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
482 { |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
483 static int rtx_ethernet_xmit(struct sk_buff* skb, struct net_device *dev) |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
484 { |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
485 - ${pointcut ::IMPLEMENTATION}; |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
486 + ${pointcut ::IMPLEMENTATION(local.dev, local.skb)}; |
66
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
487 |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
488 return 0; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
489 } |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
490 @@ -87,7 +105,7 @@ |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
491 struct rtx_ethernet_dev* rtx_ether_dev = netdev_priv(dev); |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
492 struct rtx_e1000_ctx* ctx = &rtx_ether_dev->hw_ctx; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
493 |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
494 - ${pointcut ::IMPLEMENTATION}; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
495 + ${pointcut ::IMPLEMENTATION(local.rtx_ether_dev)}; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
496 |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
497 return 0; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
498 } |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
499 @@ -114,14 +132,14 @@ |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
500 |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
501 rtx_ether_dev = dev_id; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
502 ctx = &rtx_ether_dev->hw_ctx; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
503 - ${pointcut ::IMPLEMENTATION}; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
504 + ${pointcut ::IMPLEMENTATION(local.rtx_ether_dev)}; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
505 |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
506 return IRQ_NONE; |
901af221334b
Adding implementation poinctuts parameters to e1000 sample
David Pineau <dav.pineau@gmail.com>
parents:
64
diff
changeset
|
507 } |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
508 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
509 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
510 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
511 - template sequence Ethernet::init(PCI::Device pdev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
512 + template sequence Ethernet::init() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
513 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
514 chunk LKM::data() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
515 { |
65 | 516 @@ -133,83 +151,75 @@ |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
517 }; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
518 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
519 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
520 - chunk PCI::pci_probe_hook() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
521 + /* For now the type is not handled, so we just omit it (see #17) */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
522 + chunk PCI::pci_probe_hook(/* PCI::Device */ pdev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
523 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
524 /* |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
525 * This typedef is needed to workaround a bug in CNorm __std__ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
526 * dialect. |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
527 */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
528 typedef int ${Ethernet::Device}; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
529 - ${Ethernet::Device} *rtx_ether_ctx; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
530 - struct net_device *net_dev; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
531 + |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
532 + ${Ethernet::Device} rtx_ether_ctx; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
533 + struct net_device *net_dev; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
534 int error; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
535 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
536 - error = 0; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
537 + /* Initialize the net_device structure */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
538 net_dev = alloc_etherdev(sizeof(*rtx_ether_ctx)); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
539 if (net_dev == 0) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
540 { |
65 | 541 - ${Log::info("Cannot allocate memory")}; |
542 + ${Log::info("cannot allocate memory")}; | |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
543 /* |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
544 * Again, the error should be "raised" in the parent context. |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
545 * |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
546 - * Here we know that we should return ENOMEM because *we* wrote |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
547 + * Here we know that we can return ENOMEM because *we* wrote |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
548 * the parent context. |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
549 */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
550 return -ENOMEM; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
551 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
552 + SET_NETDEV_DEV(net_dev, &${pdev}->dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
553 strlcpy(net_dev->name, ${config.ifname}, sizeof(net_dev->name)); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
554 - net_dev->irq = pdev->irq; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
555 - // Maybe we should try ${rtx_ether_ctx.init()} here: |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
556 - rtx_ether_ctx = netdev_priv(net_dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
557 - //rtx_ether_ctx->pci_dev = ${pdev}; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
558 - rtx_ether_ctx->pci_dev = pdev; // In the meantime do it directly |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
559 - rtx_ether_ctx->net_dev = net_dev; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
560 + net_dev->irq = ${pdev}->irq; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
561 + net_dev->netdev_ops = &rtx_ether_ops; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
562 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
563 - /* |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
564 - * The substitution of ${pdev} fails here. I also tried to add a |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
565 - * "substitute method" to the PCI::Device that was just doing |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
566 - * "${self}" but it didn't work either (it was subsituted by a |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
567 - * placeholder, e.g: _1). |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
568 - * |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
569 - * That's why we cheated a bit and named all the arguments pdev. |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
570 - */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
571 - //SET_NETDEV_DEV(net_dev, &${pdev}->dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
572 - SET_NETDEV_DEV(net_dev, &pdev->dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
573 - net_dev->netdev_ops = &rtx_ether_ops; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
574 - if ((error = register_netdev(net_dev))) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
575 + error = register_netdev(net_dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
576 + if (error) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
577 { |
65 | 578 - ${Log::info("Cannot register the driver")}; |
579 + ${Log::info("cannot register the driver in the net subsystem")}; | |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
580 return error; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
581 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
582 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
583 - /* same problem as above with ${pdev} */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
584 - //pci_set_drvdata(${pdev}, net_dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
585 - pci_set_drvdata(pdev, net_dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
586 + /* Initialize our context held by the net_device structure */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
587 + ${rtx_ether_ctx.init(local.net_dev, pdev)}; |
63 | 588 |
589 - ${pointcut Ethernet::create_device}; | |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
590 + pci_set_drvdata(${pdev}, net_dev); |
63 | 591 + |
592 + ${pointcut Ethernet::create_device(pdev, local.rtx_ether_ctx)}; | |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
593 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
594 |
63 | 595 + /* This chunk should be removed (see #26) */ |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
596 chunk ::CALL |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
597 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
598 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
599 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
600 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
601 - template sequence Ethernet::exit(PCI::Device pdev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
602 + template sequence Ethernet::exit() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
603 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
604 - chunk PCI::pci_remove_hook() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
605 + chunk PCI::pci_remove_hook(/* PCI::Device */ pdev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
606 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
607 - struct net_device *net_dev = pci_get_drvdata(pdev); |
63 | 608 + /* workaround for cnorm unstrict */ |
64 | 609 + typedef int ${Ethernet::Device}; |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
610 |
63 | 611 - ${pointcut Ethernet::destroy_device}; |
612 + struct net_device *net_dev = pci_get_drvdata(${pdev}); | |
64 | 613 + ${Ethernet::Device} rtx_ether_ctx = netdev_priv(net_dev); |
63 | 614 + |
615 + ${pointcut Ethernet::destroy_device(pdev, local.rtx_ether_ctx)}; | |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
616 |
63 | 617 unregister_netdev(net_dev); |
618 - /* | |
619 - * If we had some cleanup todo with struct rtx_ether_ctx we would | |
620 - * do a netdev_priv(net_dev) here and do it. | |
621 - */ | |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
622 free_netdev(net_dev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
623 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
624 |
63 | 625 + /* This chunk should be removed (see #26) */ |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
626 chunk ::CALL |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
627 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
628 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
629 diff --git a/rathaxes/samples/e1000/ethernet.rti b/rathaxes/samples/e1000/ethernet.rti |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
630 --- a/rathaxes/samples/e1000/ethernet.rti |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
631 +++ b/rathaxes/samples/e1000/ethernet.rti |
63 | 632 @@ -28,19 +28,17 @@ |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
633 provided chunk LKM::code; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
634 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
635 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
636 - provided sequence Ethernet::init(PCI::Device) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
637 + provided sequence Ethernet::init() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
638 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
639 provided chunk LKM::data; |
63 | 640 - provided chunk PCI::pci_probe_hook; |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
641 - provided chunk ::CALL; |
63 | 642 + provided chunk PCI::pci_probe_hook; /* should take a PCI::Device arg */ |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
643 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
644 provided pointcut Ethernet::create_device; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
645 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
646 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
647 - provided sequence Ethernet::exit(PCI::Device) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
648 + provided sequence Ethernet::exit() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
649 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
650 - provided chunk ::CALL; |
63 | 651 - provided chunk PCI::pci_remove_hook; |
652 + provided chunk PCI::pci_remove_hook; /* should take a PCI::Device arg */ | |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
653 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
654 provided pointcut Ethernet::destroy_device; |
63 | 655 } |
656 diff --git a/rathaxes/samples/e1000/lkm.rtx b/rathaxes/samples/e1000/lkm.rtx | |
657 --- a/rathaxes/samples/e1000/lkm.rtx | |
658 +++ b/rathaxes/samples/e1000/lkm.rtx | |
71
3d37fa01b19c
e1000 sample add some debug
Louis Opter <louis@lse.epitech.net>
parents:
70
diff
changeset
|
659 @@ -2,50 +2,62 @@ |
65 | 660 { |
63 | 661 Ethernet::open(Ethernet::Device dev) |
662 { | |
65 | 663 - Log::info("Open the device"); |
63 | 664 - e1000::setup_interrupt_handler(); |
65 | 665 - Log::info("Interrupt handler installed"); |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
666 - e1000::set_up_device(); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
667 - e1000::activate_device_interruption(); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
668 + Log::info("opening the device"); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
669 + |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
670 + /* |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
671 + * Maybe e1000::create_device should be called from here, to be |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
672 + * more coherent. |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
673 + */ |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
674 + |
63 | 675 + e1000::setup_interrupt_handler(dev); |
65 | 676 + Log::info("interrupt handler installed"); |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
677 + |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
678 + e1000::set_up_device(dev); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
679 + Log::info("device activated"); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
680 + |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
681 + e1000::activate_device_interruption(dev); |
71
3d37fa01b19c
e1000 sample add some debug
Louis Opter <louis@lse.epitech.net>
parents:
70
diff
changeset
|
682 + Log::info("interruption enabled"); |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
683 + |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
684 + e1000::print_status(dev); |
65 | 685 } |
686 | |
687 Ethernet::close(Ethernet::Device dev) | |
688 { | |
689 - Log::info("Close the device"); | |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
690 - e1000::free_interrupt_handler(); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
691 + Log::info("closing the device"); |
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
692 + e1000::free_interrupt_handler(dev); |
65 | 693 } |
694 | |
695 Ethernet::interrupt_handler(Ethernet::Device dev) | |
696 { | |
697 - Log::info("Got an interruption"); | |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
698 - e1000::handle_intr(); |
65 | 699 + Log::info("got an interruption"); |
70
c22a9acf8cd7
wip on e1000 remove even more hardcoded arguments
Louis Opter <louis@lse.epitech.net>
parents:
69
diff
changeset
|
700 + e1000::handle_interrupt(dev); |
65 | 701 } |
702 | |
703 Ethernet::send(Ethernet::Device dev, Socket::SKBuff skb) | |
704 { | |
705 - Log::info("We have one packet to transmit!"); | |
706 + Log::info("we have one packet to transmit!"); | |
707 } | |
708 | |
709 LKM::init() | |
710 { | |
711 - Log::info("Hello this is LKM"); | |
712 + Log::info("loading module"); | |
713 } | |
714 | |
715 LKM::exit() | |
716 { | |
717 - Log::info("Good bye this was LKM"); | |
718 + Log::info("unloading module"); | |
719 } | |
720 } | |
721 | |
722 configuration | |
723 { | |
724 - LKM::name = "hello"; | |
725 + LKM::name = "rtx_e1k"; | |
726 LKM::author = "Rathaxes"; | |
727 LKM::description = "Hello World Loadable Kernel Module (LKM)"; | |
728 LKM::license = "GPL"; | |
68
ef460b936b5f
Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents:
67
diff
changeset
|
729 |
ef460b936b5f
Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents:
67
diff
changeset
|
730 PCI::vendor_id = 0x8086; |
ef460b936b5f
Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents:
67
diff
changeset
|
731 - PCI::product_id = 0x100f; |
72
6e9dcbd120c5
Fix the register CALL chunk in the e1000 sample
Louis Opter <louis@lse.epita.fr>
parents:
70
diff
changeset
|
732 + PCI::product_id = 0x100e; /* e100f on vmware by default it seems */ |
68
ef460b936b5f
Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents:
67
diff
changeset
|
733 PCI::set_master = true; |
ef460b936b5f
Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents:
67
diff
changeset
|
734 |
ef460b936b5f
Merge + remove patch from David
Louis Opter <louis@lse.epitech.net>
parents:
67
diff
changeset
|
735 Ethernet::ifname = "rtx%d"; |
65 | 736 diff --git a/rathaxes/samples/e1000/log.blt b/rathaxes/samples/e1000/log.blt |
737 --- a/rathaxes/samples/e1000/log.blt | |
738 +++ b/rathaxes/samples/e1000/log.blt | |
739 @@ -4,7 +4,7 @@ | |
740 { | |
741 chunk ::CALL | |
742 { | |
743 - pr_info("%s\n", ${msg}); | |
744 + pr_info("%s: %s\n", ${config.name}, ${msg}); | |
745 } | |
746 } | |
747 } | |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
748 diff --git a/rathaxes/samples/e1000/pci.blt b/rathaxes/samples/e1000/pci.blt |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
749 --- a/rathaxes/samples/e1000/pci.blt |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
750 +++ b/rathaxes/samples/e1000/pci.blt |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
751 @@ -22,7 +22,7 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
752 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
753 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
754 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
755 - template sequence PCI::probe(PCI::Device pdev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
756 + template sequence PCI::probe() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
757 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
758 chunk LKM::prototypes() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
759 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
760 @@ -41,7 +41,8 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
761 if (err < 0) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
762 goto fail; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
763 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
764 - ${pointcut PCI::pci_probe_hook}; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
765 + /* Use local. to reference a local C variable: */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
766 + ${pointcut PCI::pci_probe_hook(local.pdev)}; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
767 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
768 return 0; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
769 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
770 @@ -50,12 +51,13 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
771 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
772 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
773 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
774 + /* This chunk should be remove (see #26) */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
775 chunk ::CALL |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
776 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
777 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
778 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
779 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
780 - template sequence PCI::remove(PCI::Device pdev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
781 + template sequence PCI::remove() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
782 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
783 chunk LKM::prototypes() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
784 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
785 @@ -66,12 +68,13 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
786 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
787 static void rtx_pci_remove(struct pci_dev *pdev) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
788 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
789 - ${pointcut PCI::pci_remove_hook}; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
790 + ${pointcut PCI::pci_remove_hook(local.pdev)}; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
791 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
792 pci_disable_device(pdev); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
793 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
794 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
795 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
796 + /* This chunk should be remove (see #26) */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
797 chunk ::CALL() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
798 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
799 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
800 @@ -125,6 +128,8 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
801 * This sequence is just "intermediate" code that will just inject |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
802 * itself in the hook LKM::init_bus_hook for which this sequence |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
803 * has a chunk (see above chunk). |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
804 + * |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
805 + * -> Should be removed see #26 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
806 */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
807 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
808 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
809 @@ -136,6 +141,7 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
810 pci_unregister_driver(&rtx_pci_driver); |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
811 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
812 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
813 + /* This chunk should be removed */ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
814 chunk ::CALL |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
815 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
816 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
817 diff --git a/rathaxes/samples/e1000/pci.rti b/rathaxes/samples/e1000/pci.rti |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
818 --- a/rathaxes/samples/e1000/pci.rti |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
819 +++ b/rathaxes/samples/e1000/pci.rti |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
820 @@ -18,7 +18,7 @@ |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
821 provided chunk LKM::deinit_bus_hook; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
822 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
823 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
824 - provided sequence PCI::probe(PCI::Device) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
825 + provided sequence PCI::probe() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
826 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
827 provided chunk LKM::prototypes; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
828 provided chunk LKM::code; |
63 | 829 @@ -26,11 +26,11 @@ |
62
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
830 provided pointcut PCI::pci_probe_hook; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
831 } |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
832 |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
833 - provided sequence PCI::remove(PCI::Device) |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
834 + provided sequence PCI::remove() |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
835 { |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
836 provided chunk LKM::prototypes; |
b43bed449cc2
Start a series on the e1000 sample
Louis Opter <louis@lse.epitech.net>
parents:
diff
changeset
|
837 provided chunk LKM::code; |
63 | 838 |
839 - provided pointcut PCI::pci_remove_hook; | |
840 + provided pointcut PCI::pci_remove_hook; /* Should take a PCI::Device arg */ | |
841 } | |
842 } |