Małe zadanie 7¶
Napisać program używający wątków bez pomocy biblioteki wątków (surowe syscalle). Co więcej, wywołania syscalli powinny zaimplementowane przy pomocy wstawe assemblerowych poznanych na zajęciach.
Program powinien:
Utworzyć nowy wątek w tej samej przestrzeni adresowej - zaalokować stos dla nowego wątku, użyć syscalla
clone
do uruchomienia kodu. Przydadzą się flagiCLONE_THREAD | CLONE_VM | CLONE_SIGHAND | CLONE_FS | CLONE_FILES | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID
W nowym wątku:
wypisać 1000 razy
"A\n"
na standardowe wyjście
(używając syscalla
write
) - zakończyć wątek (syscallexit
).W głównym wątku:
wypisać 1000 razy
"B\n"
na standardowe wyjście (używając syscallawrite
)poczekać na zakończenie się nowego wątku (
futex
zFUTEX_WAIT
)zakończyć program (syscall
exit_group
).