384 | | Pour la partie pratique de la séance, je ne vous fais pas modifier, ou pire écrire, la gestion des threads, mais je vous invite à lire le code. Vous allez changer la manière de lire les caractères du TTY pour la rendre plus efficace. Tous les changements seront faits dans le fichier `kernel/harch.c`. |
| 384 | Pour la suite de la séance, récupérez [htdocs:files/tp3.tgz l'archive du tp3] et placez là à côté des tp1 et tp2. Le code est fonctionnel, vous pouvez le tester. Je ne vous fais pas modifier, ou pire écrire, la gestion des threads, mais je vous invite à lire le code, c'est très commenté. Les principaux fichiers modifiés sont `kernel/hcpua.S` pour les fonctions `thread_load()`, `thread_save()` et `thread_launch()` (`app_launch()` a disparu, elle n'est plus utile). Des fichiers sont nouveaux : `kernel/kthread.h` qui contient le code de `thread_create_kernel()`, `thread_yield()`, `thread_exit()`, `sched_switch()` et quelques autres. `common/thread.h' qui contient les prototypes de fonctions communes au noyau et à l'utilisateur et 'ulib/thread.c' qui contient aussi les fonctions `thread_create()`, `thread_yield(), `thread_exit()` mais avec des appels système. Je vous invite vraiment à lire le code, c'est un bon exercice de lire le code des autres, croyez-moi. |
| 385 | |
| 386 | Pour la partie pratique, vous allez changer la manière de lire les caractères du TTY pour la rendre plus efficace. Tous les changements seront faits dans le fichier `kernel/harch.c`. |
| 387 | |
| 388 | {{{ |
| 389 | 01_gameover/ 01_threads |
| 390 | |-- common |-- common |
| 391 | | `-- syscalls.h | |-- syscalls.h |
| 392 | |-- kernel | `-- thread.h |
| 393 | | |-- harch.c |-- kernel |
| 394 | | |-- harch.h | |-- harch.c |
| 395 | | |-- hcpua.S | |-- harch.h |
| 396 | | |-- hcpuc.c | |-- hcpua.S |
| 397 | | |-- hcpu.h | |-- hcpuc.c |
| 398 | | |-- kernel.ld | |-- hcpu.h |
| 399 | | |-- kinit.c | |-- kernel.ld |
| 400 | | |-- klibc.c | |-- kinit.c |
| 401 | | |-- klibc.h | |-- klibc.c |
| 402 | | |-- ksyscalls.c | |-- klibc.h |
| 403 | | `-- Makefile | |-- ksyscalls.c |
| 404 | |-- Makefile | |-- kthread.c |
| 405 | |-- tags | `-- Makefile |
| 406 | |-- uapp |-- Makefile |
| 407 | | |-- main.c |-- uapp |
| 408 | | `-- Makefile | |-- main.c |
| 409 | `-- ulib | `-- Makefile |
| 410 | |-- crt0.c `-- ulib |
| 411 | |-- libc.c |-- crt0.c |
| 412 | |-- libc.h |-- libc.c |
| 413 | |-- Makefile |-- libc.h |
| 414 | `-- user.ld |-- Makefile |
| 415 | |-- thread.c |
| 416 | `-- user.ld |
| 417 | }}} |