@@ -75,7 +75,7 @@ void SMP::init()
7575 boot->stack_base , boot->stack_size , sizeof (boot->worker_addr ));
7676
7777 // reset barrier
78- smp .boot_barrier .reset (1 );
78+ smp_main .boot_barrier .reset (1 );
7979
8080 auto & apic = x86::APIC::get ();
8181 // turn on CPUs
@@ -98,7 +98,7 @@ void SMP::init()
9898 }
9999
100100 // wait for all APs to start
101- smp .boot_barrier .spin_wait (CPUcount);
101+ smp_main .boot_barrier .spin_wait (CPUcount);
102102 INFO (" SMP" , " All %u APs are online now\n " , CPUcount);
103103
104104 // subscribe to IPIs
@@ -116,10 +116,10 @@ void SMP::init()
116116std::vector<smp_done_func> SMP::get_completed ()
117117{
118118 std::vector<smp_done_func> done;
119- lock (smp .flock );
120- for (auto & func : smp .completed ) done.push_back (func);
121- smp .completed .clear (); // MUI IMPORTANTE
122- unlock (smp .flock );
119+ lock (smp_main .flock );
120+ for (auto & func : smp_main .completed ) done.push_back (func);
121+ smp_main .completed .clear (); // MUI IMPORTANTE
122+ unlock (smp_main .flock );
123123 return done;
124124}
125125
@@ -154,49 +154,33 @@ void ::SMP::init_task()
154154void ::SMP::add_task (smp_task_func task, smp_done_func done, int cpu)
155155{
156156#ifdef INCLUDEOS_SINGLE_THREADED
157- assert (cpu == - 1 || cpu == 0 );
157+ assert (cpu == 0 );
158158 task (); done ();
159159#else
160- if (cpu == -1 )
161- {
162- lock (smp.tlock );
163- smp.tasks .emplace_back (std::move (task), std::move (done));
164- unlock (smp.tlock );
165- }
166- else {
167- lock (smp_local[cpu].tlock );
168- smp_local[cpu].tasks .emplace_back (std::move (task), std::move (done));
169- unlock (smp_local[cpu].tlock );
170- }
160+ lock (smp_system[cpu].tlock );
161+ smp_system[cpu].tasks .emplace_back (std::move (task), std::move (done));
162+ unlock (smp_system[cpu].tlock );
171163#endif
172164}
173165void ::SMP::add_task (smp_task_func task, int cpu)
174166{
175167#ifdef INCLUDEOS_SINGLE_THREADED
176- assert (cpu == - 1 || cpu == 0 );
168+ assert (cpu == 0 );
177169 task ();
178170#else
179- if (cpu == -1 )
180- {
181- lock (smp.tlock );
182- smp.tasks .emplace_back (std::move (task), nullptr );
183- unlock (smp.tlock );
184- }
185- else {
186- lock (smp_local[cpu].tlock );
187- smp_local[cpu].tasks .emplace_back (std::move (task), nullptr );
188- unlock (smp_local[cpu].tlock );
189- }
171+ lock (smp_system[cpu].tlock );
172+ smp_system[cpu].tasks .emplace_back (std::move (task), nullptr );
173+ unlock (smp_system[cpu].tlock );
190174#endif
191175}
192176void ::SMP::add_bsp_task (smp_done_func task)
193177{
194178#ifdef INCLUDEOS_SINGLE_THREADED
195179 task ();
196180#else
197- lock (smp .flock );
198- smp .completed .push_back (std::move (task));
199- unlock (smp .flock );
181+ lock (smp_main .flock );
182+ smp_main .completed .push_back (std::move (task));
183+ unlock (smp_main .flock );
200184 x86::APIC::get ().send_bsp_intr ();
201185#endif
202186}
0 commit comments