foooo
This commit is contained in:
@@ -32,4 +32,5 @@ context_launch:
|
||||
align 16
|
||||
fake_systemv_abi:
|
||||
mov rdi, r15
|
||||
mov rsi, r14
|
||||
ret
|
||||
|
||||
10
main.cc
10
main.cc
@@ -34,6 +34,11 @@ Ticketlock koutlock;
|
||||
//};
|
||||
|
||||
|
||||
Context test2;
|
||||
uint8_t test2_stack[256];
|
||||
Application application2 = Application(test2_stack);
|
||||
|
||||
|
||||
|
||||
TextStream dout[Core::MAX] = {
|
||||
{0, 40, 10, 14},
|
||||
@@ -126,9 +131,8 @@ extern "C" int main() {
|
||||
PS2Controller::drainBuffer();
|
||||
|
||||
DBG << "Main CPU " << static_cast<int>(LAPIC::getID()) << endl << flush;
|
||||
|
||||
prepareContext(&test1_stack[sizeof(test1_stack)-1], test1, (void(*)(void*)) &(test_func1));
|
||||
prepareContext(&test2_stack[sizeof(test2_stack)-1], test2, (void(*)(void*)) &(test_func2));
|
||||
prepareContext(&test1_stack[sizeof(test1_stack)-1], test1, (void(*)(void*)) &(Application::kickoff),(Thread*)&application);
|
||||
prepareContext(&test2_stack[sizeof(test2_stack)-1], test2, (void(*)(void*)) &(Application::kickoff),(Thread*)&application2);
|
||||
|
||||
context_launch(&test1);
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "../../arch/core.h"
|
||||
#include "../../interrupt/guard.h"
|
||||
#include "../../debug/output.h"
|
||||
#include "../../arch/context.h"
|
||||
char text[] = "Ich mag\n\
|
||||
Saftige Pflaumen voller Aroma\n\
|
||||
Ich knuddel jede Oma ins Koma\n\
|
||||
@@ -22,7 +23,8 @@ Und wacht sie aus'm Koma auf, kriegt sie von mir 'n Sticker\n\
|
||||
\n";
|
||||
|
||||
extern Ticketlock koutlock;
|
||||
|
||||
extern Context* test2; extern Context* test1;
|
||||
extern uint8_t test1_stack[], test2_stack[];
|
||||
void activeWaitDelay(uint64_t cycles) {
|
||||
uint64_t counter = 0; // Use volatile to prevent optimization
|
||||
for (uint64_t i = 0; i < cycles; ++i) {
|
||||
@@ -37,6 +39,7 @@ void Application::action() { // NOLINT
|
||||
while (1) {
|
||||
//koutlock.lock();
|
||||
{
|
||||
<<<<<<< HEAD
|
||||
Guarded g = Guard::enter();
|
||||
//g.vault();
|
||||
g.vault().kout.setPos((unsigned)0,(unsigned)Core::getID()*2+1);
|
||||
@@ -46,11 +49,22 @@ void Application::action() { // NOLINT
|
||||
//g.vault().kout << endl << flush;
|
||||
//Guard::leave();
|
||||
//koutlock.unlock();
|
||||
=======
|
||||
Guarded g = Guard::enter();
|
||||
//g.vault();
|
||||
g.vault().kout.setPos((unsigned)0,(unsigned)Core::getID()*2+1);
|
||||
|
||||
g.vault().kout << test1<< flush;
|
||||
|
||||
//g.vault().kout << endl << flush;
|
||||
//Guard::leave();
|
||||
//koutlock.unlock();
|
||||
>>>>>>> a0bac7f (foooo)
|
||||
}
|
||||
Core::pause();
|
||||
//activeWaitDelay(1000000000);
|
||||
activeWaitDelay(10000000);
|
||||
if(cnt >= sizeof(text)-1)
|
||||
cnt=0;
|
||||
|
||||
context_switch(test2,test1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user