Compare commits
12 Commits
fix-string
...
fix_debug_
Author | SHA1 | Date | |
---|---|---|---|
8fe1e03309 | |||
569929098d | |||
8929326505 | |||
a16d92ab7e | |||
df0930850a | |||
0ba9a136cc | |||
ec2eea05ad | |||
7f40538bc4 | |||
20af365080 | |||
01b1e90dba | |||
c51bb694a5 | |||
8c61fd1aa6 |
28
Makefile
28
Makefile
@ -1,6 +1,13 @@
|
|||||||
TOPDIR=.
|
TOPDIR=.
|
||||||
include $(TOPDIR)/Makefile.config
|
include $(TOPDIR)/Makefile.config
|
||||||
|
|
||||||
|
#
|
||||||
|
# Demo vars
|
||||||
|
#
|
||||||
|
FLAGS=--offline -r --
|
||||||
|
CARGO=RUSTFLAGS=-Awarnings cargo run ${FLAGS}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
all: dumps user_lib instruction_tests syscall
|
all: dumps user_lib instruction_tests syscall
|
||||||
#
|
#
|
||||||
@ -22,10 +29,27 @@ syscall: user_lib
|
|||||||
$(MAKE) build -C test/syscall_tests/
|
$(MAKE) build -C test/syscall_tests/
|
||||||
$(RM) test/syscall_tests/*.o
|
$(RM) test/syscall_tests/*.o
|
||||||
mkdir -p ${TOPDIR}/target/guac/
|
mkdir -p ${TOPDIR}/target/guac/
|
||||||
find . -name '*.guac' -exec mv {} ${TOPDIR}/target/guac/ \;
|
find . -name '*.guac' -exec mv {} ${TOPDIR}/target/guac/ 2> /dev/null \;
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(MAKE) clean -C userlib/
|
$(MAKE) clean -C userlib/
|
||||||
$(MAKE) clean -C test/
|
$(MAKE) clean -C test/
|
||||||
$(RM) -rf $(TOPDIR)/target
|
$(RM) -rf $(TOPDIR)/target
|
||||||
|
|
||||||
|
#
|
||||||
|
# Demo targets
|
||||||
|
#
|
||||||
|
halt: syscall
|
||||||
|
${CARGO} -x ./target/guac/halt.guac -d3
|
||||||
|
|
||||||
|
pc: syscall
|
||||||
|
${CARGO} -x ./target/guac/producteur_consommateur.guac -d2
|
||||||
|
|
||||||
|
matmult: syscall
|
||||||
|
${CARGO} -x ./target/guac/matmult.guac -d2
|
||||||
|
|
||||||
|
lr: syscall
|
||||||
|
${CARGO} -x ./target/guac/lecteur_redacteur.guac -d2
|
||||||
|
|
||||||
|
prints: syscall
|
||||||
|
${CARGO} -x ./target/guac/prints.guac -d2
|
||||||
|
@ -97,8 +97,8 @@ pub fn read_settings() -> Result<Settings, Error> {
|
|||||||
/// FIXME: Does not cover the whole configuration yet
|
/// FIXME: Does not cover the whole configuration yet
|
||||||
pub fn get_debug_configuration() -> Settings {
|
pub fn get_debug_configuration() -> Settings {
|
||||||
let mut settings_map = Settings::new();
|
let mut settings_map = Settings::new();
|
||||||
settings_map.insert(MachineSettingKey::PageSize, 2048);
|
settings_map.insert(MachineSettingKey::PageSize, 128);
|
||||||
settings_map.insert(MachineSettingKey::NumPhysPages, 8192);
|
settings_map.insert(MachineSettingKey::NumPhysPages, 40000000);
|
||||||
settings_map.insert(MachineSettingKey::UserStackSize, 4096);
|
settings_map.insert(MachineSettingKey::UserStackSize, 4096);
|
||||||
settings_map
|
settings_map
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
PROGRAMS = halt.guac prints.guac producteur_consommateur.guac join.guac matmult.guac
|
PROGRAMS = halt.guac prints.guac producteur_consommateur.guac lecteur_redacteur.guac join.guac matmult.guac
|
||||||
TOPDIR = ../..
|
TOPDIR = ../..
|
||||||
include $(TOPDIR)/Makefile.rules
|
include $(TOPDIR)/Makefile.rules
|
||||||
|
|
||||||
|
60
test/syscall_tests/lecteur_redacteur.c
Normal file
60
test/syscall_tests/lecteur_redacteur.c
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#include "userlib/syscall.h"
|
||||||
|
#include "userlib/libnachos.h"
|
||||||
|
|
||||||
|
SemId red;
|
||||||
|
SemId mutex;
|
||||||
|
SemId util;
|
||||||
|
int nblect = 0;
|
||||||
|
int nbWrite = 0;
|
||||||
|
|
||||||
|
void lecteur() {
|
||||||
|
while(1) {
|
||||||
|
P(red);
|
||||||
|
P(mutex);
|
||||||
|
if (nblect == 0) {
|
||||||
|
V(util);
|
||||||
|
}
|
||||||
|
nblect++;
|
||||||
|
V(mutex);
|
||||||
|
V(red);
|
||||||
|
n_printf("Lecture de l'information \n");
|
||||||
|
if(nbWrite == 10)
|
||||||
|
return;
|
||||||
|
P(mutex);
|
||||||
|
nblect--;
|
||||||
|
if(nblect == 0) {
|
||||||
|
V(util);
|
||||||
|
}
|
||||||
|
V(mutex);
|
||||||
|
}
|
||||||
|
Exit(nblect);
|
||||||
|
}
|
||||||
|
|
||||||
|
void redacteur() {
|
||||||
|
while(1) {
|
||||||
|
P(red);
|
||||||
|
P(util);
|
||||||
|
V(red);
|
||||||
|
n_printf((char*)"Ecriture de l'information\n");
|
||||||
|
nbWrite++;
|
||||||
|
if(nbWrite == 10)
|
||||||
|
return;
|
||||||
|
V(util);
|
||||||
|
}
|
||||||
|
Exit(nbWrite);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
red = SemCreate((char*)"redacteur", 1);
|
||||||
|
mutex = SemCreate((char*)"mutex lecteur redacteur", 1);
|
||||||
|
util = SemCreate((char*)"Mutex util lecteur redacteur", 1);
|
||||||
|
ThreadId lecteurTh = threadCreate((char*)"Lecteur", (VoidNoArgFunctionPtr) lecteur);
|
||||||
|
ThreadId lecteur1 = threadCreate((char*)"Lecteur", (VoidNoArgFunctionPtr) lecteur);
|
||||||
|
ThreadId lecteur2 = threadCreate((char*)"Lecteur", (VoidNoArgFunctionPtr) lecteur);
|
||||||
|
ThreadId redacteurTh = threadCreate((char*)"redacteur", (VoidNoArgFunctionPtr) redacteur);
|
||||||
|
Join(lecteurTh);
|
||||||
|
Join(lecteur1);
|
||||||
|
Join(lecteur2);
|
||||||
|
Join(redacteurTh);
|
||||||
|
return 0;
|
||||||
|
}
|
@ -2,10 +2,53 @@
|
|||||||
#include "userlib/libnachos.h"
|
#include "userlib/libnachos.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
n_printf("Hello World 1\n");
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
n_printf("Hello World 2\n");
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&##BBGGGPPGGGBB##&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
n_printf("Hello World 3\n");
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&#G5J?!~^::............::^~!?J5G#&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
n_printf("Hello World 4\n");
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@&B5?!^:....:^^~!!7777??7777!!~~^::...:^!JPB&@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@B57^....^~!?JJYYY5555555555555555Y5PGP57~::..:^75B@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@@@&G?~. .:~7?JY55555YYYYYYYYYYYYYYYYY5PB##BPY???7!~^:..:~JG&@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@BJ~. .^!?Y5555YYYYYYYYYYYYYYYYYYYY5PB##B5J?77???????7!~^:.:~JB@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@&P!. .^!JY55YYYYYYYYYYYYYYYYYYYYYY5PB##B5J?77??????????????7~^:.:!P&@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@&Y^..:~?Y55YYYYYYYYYYYYYYYYYYYYYY5PB##B5J?77????????????????????7~:.:~5&@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@&5^..:!J55YYYYYYYYYYYYYYYYYYYYYY5PB##B5J?77?????????????????????????7~^::~5@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@G~..:!Y55YYYYYYYYYYYYYYYYYYYYY5PB##B5J?77??????????????????????????????7~:::!B@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@&J...~J55YYYYYYYYYYYYYYYYYYYY5PB##B5J?77??????????????????????????????777?Y57:::J&@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@#!..:7Y5YYYYYYYYYYYYYYYYYYY5PB##B5J?77??????????????????????????????777?YPB##G?^::7#@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@G^..^J5YYYYYYYYYYYYYYYYYY5PB##B5J?77??????????????????????????????777?YPB##GP5Y5J~::~B@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@G^..^Y5YYYYYYYYYYYYYYYY5PB##B5J?77??????????????????????????????777?YPB##GP55Y5555Y~::^B@@@@@@\n");
|
||||||
|
n_printf("@@@@@B^..^Y5YYYYYYYYYYYYYY5PB##B5J?77??????????????????????????????777?YPB##GP5YYYY555555Y~::~B@@@@@\n");
|
||||||
|
n_printf("@@@@&!..^J5YYYYYYYYYYYY5PB##B5J?77??????????????????????????????777?YPB#BGPYYYYYY555555555Y~::7&@@@@\n");
|
||||||
|
n_printf("@@@@J..:?5YYYYYYYYYY5PB##B5J?77??????????????????????????????777?YPB#BG5YYYYYYY55YY55555555J^::Y@@@@\n");
|
||||||
|
n_printf("@@@B:..~5YYYYYYYY5PB##G5J?77??????????????????????????????777?YPB#BG5YYYYYYYY5YYY55555555555!::^#@@@\n");
|
||||||
|
n_printf("@@@?..:JYYYYYY5PB##G5J?77??????????????????????????????777?YPB#BG5YYYYYYYYYYYYY55YY555555555Y^::J@@@\n");
|
||||||
|
n_printf("@@&^..~YYYY5PB##G5J?77??????????????????????????????777?YPB#BG5YYYYYYYYYYYYYYYYYY5555Y5555555!::~&@@\n");
|
||||||
|
n_printf("@@G:..7Y5PB##G5J?77??????????????????????????????777?YPB#BG5YJYYYYYYYYYYYYYYYYY55YYY555555555?::^B@@\n");
|
||||||
|
n_printf("@@5:..YB##G5J?77??????????????????????????????777?YPB#BG5JJJYYYJYYYYYYYYYYYYYY5YY5555Y5555555J:^^P@@\n");
|
||||||
|
n_printf("@@5:..PB5J?77??????????????????????????????777?YGB#BG5JJJYYJYYYYYYYYYYYYYYYYYYY55Y55555555555J:^^5@@\n");
|
||||||
|
n_printf("@@5:..7?77??????????????????????????????777?YPB#BG5JJJJJJJJYYYYYYYYYYYYYYYYYYY5YY5Y5555555555J:^^P@@\n");
|
||||||
|
n_printf("@@G:..~??????????????????????????????777?YGB#BPYJJJJJJJJJJJYYYYYYYYYYYYYYYYYYYY5YY55555555555?:^^B@@\n");
|
||||||
|
n_printf("@@&^..^???????????????????????????777?YGB#BPYJ?JJJJJJJJJJJYYJYYYYYYYYYYYYYYYYY5YY5Y5555555555!^:~@@@\n");
|
||||||
|
n_printf("@@@?.::7???????????????????????777?YGB#BPYJ???JJJJJJJJJJJJJYYYYYYYYYYYYYYYYYYYYYYY5555555555Y^^:J@@@\n");
|
||||||
|
n_printf("@@@#:..^????????????????????777?YG##BPYJ????JJJJJJJJJJJJJJYJJYYYYYYYYYYYYYYYYY5YYYY555555555!^^^#@@@\n");
|
||||||
|
n_printf("@@@@J.::!????????????????777?YG##BPY???????JJJJJJJJJJJJJJJJYYYYYYYYYYYYYYYYYY5YYY5555555555J^^:Y@@@@\n");
|
||||||
|
n_printf("@@@@&!..:7????????????777?YGB#BPJ????????????JJJJJJJJJJJJYYJJYYYYYYYYYYYYYYYYYY55YY5555555Y~::7&@@@@\n");
|
||||||
|
n_printf("@@@@@B^.:^7????????777?YGB#BPJ?7???????????JJJ?JJJJJJJJJJJJYYYYJYYYYYYYYYYYYYYYYY5555Y555Y~^:~B@@@@@\n");
|
||||||
|
n_printf("@@@@@@G^.:^7????777?YGB#BPJ?7????????????????JJJJJJJJJJJJYYJJYYYYYYYYYYYYYYYYYY55YYY5555Y~::~B@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@B^.:^7?77?YGB#BPJ?77??7?????????????JJJ?JJJJJJJJJJJJYYYYJYYYYYYYYYYYYYYYYY5555Y5J~::~B@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@#!..:!YG##BPJ?77?????????????????????JJJJJJJJJJJJYYJYYYYYYYYYYYYYYYYYYY55YYY55?^::7#@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@&J:.:7PPY?77???7????7??????????????JJ?JJJJJJJJJJJJYYYYJYYYYYYYYYYYYYY5YY555J!^:^Y&@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@G!..:~7?????????????????????????JJJJJJJJJJJJJJYYJYYYYYYYYYYYYYYYYYYY555Y7^::7G@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@5~..:~7????????????????????????JJJJJJJJJJJJJJJYJYYYYYYYYYYYYYYYYY5YY7^::~5@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@&Y~..:~7?????????????????????JJJJJJJJJJJJJJJJYYYYYYYYYYYYYYYYY5YJ!^::!5&@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@&P!:.:^~7???????????????????JJJJJJJJJJJJJJJJJYYYYYYYYYYYYYYJ7~::^7P&@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@BJ~:.:^~77??????????????JJ?JJJJJJJJJJJJJYYYYYYYYYYYYYJ7~^::!YB@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@@@&GJ~:.::~!!7????????????JJJJJJJJJJJJJYJJYYYYYYJ?7!^::^!JG&@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@B5?~::::^~~!7????JJJJJJJJJJJJYYJJJJJJ?77!~^::^~?5B@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@&BPJ7~^:::::^~~~!!77777777!!!~~^^::::^~7JPB&@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&#G5Y?7!~^^::::::::::::^~~!7JYPG#&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&##BGGGGGGGBB##&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
|
n_printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
|
||||||
Shutdown();
|
Shutdown();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
Reference in New Issue
Block a user