8
|
1 # HG changeset patch
|
|
2 # Parent 3c5e2af745189313fab89aa2674afc3153744f7b
|
|
3 rathaxes: add the pci_{register,unregister}_device calls in the PCI LKM sample
|
|
4
|
|
5 diff --git a/rathaxes/samples/lkm/lkm.rtx b/rathaxes/samples/lkm/lkm.rtx
|
|
6 --- a/rathaxes/samples/lkm/lkm.rtx
|
|
7 +++ b/rathaxes/samples/lkm/lkm.rtx
|
|
8 @@ -13,10 +13,12 @@
|
|
9 LKM::init()
|
|
10 {
|
|
11 Log::info("Hello this is LKM");
|
|
12 + PCI::register();
|
|
13 }
|
|
14
|
|
15 LKM::exit()
|
|
16 {
|
|
17 + PCI::unregister();
|
|
18 }
|
|
19 }
|
|
20
|
|
21 diff --git a/rathaxes/samples/lkm/pci.blt b/rathaxes/samples/lkm/pci.blt
|
|
22 --- a/rathaxes/samples/lkm/pci.blt
|
|
23 +++ b/rathaxes/samples/lkm/pci.blt
|
|
24 @@ -35,25 +35,6 @@
|
|
25 const struct pci_device_id *);
|
|
26 }
|
|
27
|
|
28 - chunk LKM::data()
|
|
29 - {
|
|
30 - /*
|
|
31 - * CNorm doesn't seem to like "dynamic" arrays (i.e: you always
|
|
32 - * have to specify the exact size).
|
|
33 - */
|
|
34 - static struct pci_device_id rtx_pci_device_table[2] = {
|
|
35 - { ${config.vendor_id}, ${config.product_id}, 0, PCI_ANY_ID, PCI_ANY_ID },
|
|
36 - { 0, }
|
|
37 - };
|
|
38 -
|
|
39 - static struct pci_driver rtx_pci_driver = {
|
|
40 - .name = ${config.name},
|
|
41 - .id_table = rtx_pci_device_table,
|
|
42 - .probe = rtx_pci_probe,
|
|
43 - .remove = rtx_pci_remove
|
|
44 - };
|
|
45 - }
|
|
46 -
|
|
47 chunk LKM::code()
|
|
48 {
|
|
49 static int /* __devinit */ rtx_pci_probe(struct pci_dev *pdev,
|
|
50 @@ -98,4 +79,39 @@
|
|
51 }
|
|
52 }
|
|
53 }
|
|
54 +
|
|
55 + template sequence PCI::register()
|
|
56 + {
|
|
57 + chunk LKM::data()
|
|
58 + {
|
|
59 + /*
|
|
60 + * CNorm doesn't seem to like "dynamic" arrays (i.e: you always
|
|
61 + * have to specify the exact size).
|
|
62 + */
|
|
63 + static struct pci_device_id rtx_pci_device_table[2] = {
|
|
64 + { ${config.vendor_id}, ${config.product_id}, 0, PCI_ANY_ID, PCI_ANY_ID },
|
|
65 + { 0, }
|
|
66 + };
|
|
67 +
|
|
68 + static struct pci_driver rtx_pci_driver = {
|
|
69 + .name = ${config.name},
|
|
70 + .id_table = rtx_pci_device_table,
|
|
71 + .probe = rtx_pci_probe,
|
|
72 + .remove = rtx_pci_remove
|
|
73 + };
|
|
74 + }
|
|
75 +
|
|
76 + chunk ::CALL
|
|
77 + {
|
|
78 + pci_register_driver(&rtx_pci_device);
|
|
79 + }
|
|
80 + }
|
|
81 +
|
|
82 + template sequence PCI::unregister()
|
|
83 + {
|
|
84 + chunk ::CALL
|
|
85 + {
|
|
86 + pci_unregister_driver(&rtx_pci_device);
|
|
87 + }
|
|
88 + }
|
|
89 }
|
|
90 diff --git a/rathaxes/samples/lkm/pci.rti b/rathaxes/samples/lkm/pci.rti
|
|
91 --- a/rathaxes/samples/lkm/pci.rti
|
|
92 +++ b/rathaxes/samples/lkm/pci.rti
|
|
93 @@ -8,12 +8,17 @@
|
|
94 provided sequence PCI::register()
|
|
95 {
|
|
96 provided chunk ::CALL;
|
|
97 + provided chunk LKM::data;
|
|
98 + }
|
|
99 +
|
|
100 + provided sequence PCI::unregister()
|
|
101 + {
|
|
102 + provided chunk ::CALL;
|
|
103 }
|
|
104
|
|
105 required sequence PCI::probe(PCI::Device)
|
|
106 {
|
|
107 provided chunk LKM::prototypes;
|
|
108 - provided chunk LKM::data;
|
|
109 provided chunk LKM::code;
|
|
110 }
|
|
111
|