annotate pci_rework_without_explicit_call.patch @ 33:60a59bf708df

merge
author Thomas Sanchez <thomas.sanchz@gmail.com>
date Sun, 08 Jan 2012 00:39:56 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
1 # HG changeset patch
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
2 # Parent c5c98e265bb4cf5c3a9d775e56d6599ca73a4c73
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
3 rathaxes: initialize the pci bus in an elegant implicit way
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
4
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
5 diff -r c5c98e265bb4 -r 4920b3a97ad6 rathaxes/samples/lkm/lkm.blt
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
6 --- a/rathaxes/samples/lkm/lkm.blt Sat Jan 07 22:45:07 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
7 +++ b/rathaxes/samples/lkm/lkm.blt Sat Jan 07 23:09:24 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
8 @@ -33,6 +33,7 @@
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
9 static int __attribute__((__section__(".init.text"))) rtx_module_init(void)
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
10 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
11 ${pointcut ::IMPLEMENTATION};
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
12 + ${pointcut LKM::init_bus_hook};
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
13
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
14 return 0;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
15 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
16 @@ -48,6 +49,7 @@
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
17 static void __attribute__((__section__(".exit.text"))) rtx_module_exit(void)
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
18 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
19 ${pointcut ::IMPLEMENTATION};
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
20 + ${pointcut LKM::deinit_bus_hook};
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
21 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
22
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
23 module_exit(rtx_module_exit);
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
24 diff -r c5c98e265bb4 -r 4920b3a97ad6 rathaxes/samples/lkm/lkm.rti
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
25 --- a/rathaxes/samples/lkm/lkm.rti Sat Jan 07 22:45:07 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
26 +++ b/rathaxes/samples/lkm/lkm.rti Sat Jan 07 23:09:24 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
27 @@ -12,12 +12,14 @@
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
28
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
29 required sequence LKM::init()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
30 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
31 - provided chunk LKM::includes;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
32 - provided chunk LKM::code;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
33 + provided chunk LKM::includes;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
34 + provided chunk LKM::code;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
35 + provided pointcut LKM::init_bus_hook;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
36 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
37
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
38 required sequence LKM::exit()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
39 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
40 - provided chunk LKM::code;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
41 + provided chunk LKM::code;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
42 + provided pointcut LKM::deinit_bus_hook;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
43 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
44 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
45 diff -r c5c98e265bb4 -r 4920b3a97ad6 rathaxes/samples/lkm/lkm.rtx
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
46 --- a/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 22:45:07 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
47 +++ b/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 23:09:24 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
48 @@ -37,13 +37,13 @@
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
49 LKM::init()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
50 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
51 Log::info("Hello this is LKM");
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
52 - PCI::register();
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
53 + // PCI::register();
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
54 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
55
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
56 LKM::exit()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
57 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
58 Log::info("Good bye this was LKM");
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
59 - PCI::unregister();
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
60 + // PCI::unregister();
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
61 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
62 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
63
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
64 diff -r c5c98e265bb4 -r 4920b3a97ad6 rathaxes/samples/lkm/pci.blt
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
65 --- a/rathaxes/samples/lkm/pci.blt Sat Jan 07 22:45:07 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
66 +++ b/rathaxes/samples/lkm/pci.blt Sat Jan 07 23:09:24 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
67 @@ -102,7 +102,7 @@
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
68 };
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
69 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
70
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
71 - chunk ::CALL
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
72 + chunk LKM::init_bus_hook()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
73 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
74 /*
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
75 * So how do we use the return value in the parent context?
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
76 @@ -116,13 +116,22 @@
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
77 return error;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
78 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
79 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
80 +
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
81 + chunk ::CALL()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
82 + {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
83 + // no implementation, we just need to instrument the lkm::bus_hook
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
84 + }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
85 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
86
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
87 template sequence PCI::unregister()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
88 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
89 - chunk ::CALL
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
90 + chunk LKM::deinit_bus_hook()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
91 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
92 pci_unregister_driver(&rtx_pci_driver);
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
93 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
94 +
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
95 + chunk ::CALL
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
96 + {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
97 + }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
98 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
99 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
100 diff -r c5c98e265bb4 -r 4920b3a97ad6 rathaxes/samples/lkm/pci.rti
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
101 --- a/rathaxes/samples/lkm/pci.rti Sat Jan 07 22:45:07 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
102 +++ b/rathaxes/samples/lkm/pci.rti Sat Jan 07 23:09:24 2012 +0100
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
103 @@ -7,13 +7,20 @@
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
104
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
105 provided sequence PCI::register()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
106 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
107 + // it is impossible to provide a "dummy" sequence
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
108 + // which just hook itself. The PCI:register juste
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
109 + // inject its code in the module_init function
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
110 + // in order to load the pci driver.
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
111 + // Everything is done with the configuration.
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
112 provided chunk ::CALL;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
113 provided chunk LKM::data;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
114 + provided chunk LKM::init_bus_hook;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
115 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
116
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
117 provided sequence PCI::unregister()
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
118 {
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
119 provided chunk ::CALL;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
120 + provided chunk LKM::deinit_bus_hook;
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
121 }
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
122
Thomas Sanchez <thomas.sanchz@gmail.com>
parents:
diff changeset
123 required sequence PCI::probe(PCI::Device)