|
|
|
 |
|  |
 |
Alex86mi |
Per il passaggio di parametri alle funzioni ho usa ... |
14-05-2008 00:27 |
|
 |
Alex86mi |
.simpatizzante.
Registered: Feb 2008
Posts: 19 (0.00 al dì)
Location: Milano
Corso: Informatica
Anno: Laureato
Time Online: 11:25:17 [...]
Status: Offline
Edit | Report | IP: Logged |
Per il passaggio di parametri alle funzioni ho usato la struttura
dei messaggi numero 1 e nella funzione 'do_up' (/src/lib/other/semaforo.c) ho utilizzato:
int do_up() {
message m;
m.m1_i1 = 88; /* inserisco un numero a caso come esempio */
/* se stampo qui m.m1_i1 stampa corretto */
_syscall(SS_PROC_NR, SS_UP, &m); /* spedisco al server il msg */
return 0;
}
a questo punto vado nel server (/src/servers/ss/ss.c) a leggere
e cerco di vedere se è arrivato il msg giusto:
......
message m_in; /* riceve i msg in input */
/* stampo m.m_source e m.m_type...la stampa è corretta
* quindi il messaggio che spedisco arriva!
*/
/* ora stampo m.m1_i1 e stampa un numero diverso da 88! */
......
Non riesco a ricevere il numero corretto (in questo caso l'88 che
ho settato come esempio) e non capisco xchè..qualcuno
sa dov'è l'errore?
|
14-05-2008 00:27 |
|
|
|  |
 |
QeSaRNeRON |
ciao... io ho iniziato facendo quello de 7 maggio ... |
14-05-2008 10:05 |
|
 |
QeSaRNeRON |
.amico.
Registered: Nov 2007
Posts: 21 (0.00 al dì)
Location:
Corso:
Anno:
Time Online: 5:28:08: [...]
Status: Offline
Edit | Report | IP: Logged |
ciao... io ho iniziato facendo quello de 7 maggio ...
penso di aver seguito tutto per filo e per segno solo che quando provo a compilare questo...
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#define S 0
int main(void){
int f;
/*sema_init(S, 1);*/
down();
f = fork();
if (f == 0){
down();
printf("Sono il figlio...\n");
printf("Fine del figlio.\n");
up();
} else {
sleep(1);
printf("Sono il padre...\n");
sleep(3);
printf("Fine del padre.\n");
up();
waitpid(f, NULL, 0);
}
return 0;
}
#cc sema_test.c -o sema_test
Undefined:
_down
_up
qualcuno sa spiegarmi questo errore da cosa puo essere dato??? grazie!!!

|
14-05-2008 10:05 |
|
|
|  |
 |
Alex86mi |
Ho risolto.
... |
14-05-2008 12:37 |
|
 |
Alex86mi |
.simpatizzante.
Registered: Feb 2008
Posts: 19 (0.00 al dì)
Location: Milano
Corso: Informatica
Anno: Laureato
Time Online: 11:25:17 [...]
Status: Offline
Edit | Report | IP: Logged |
Ho risolto.
Il problema era che non ricompilavo il file test.c che
utilizzavo per richiamare le syscall dopo aver fatto modifiche
alle librerie.
|
14-05-2008 12:37 |
|
|
|  |
 |
darkshadow |
Scusate raga ma non riesco a capire una cosa. come ... |
14-05-2008 12:55 |
|
 |
darkshadow |
Are You From The Past?

Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline
Edit | Report | IP: Logged |
Scusate raga ma non riesco a capire una cosa. come faccio a gestire semafori di cui non so il numero a proiri (cosi dice nel progetto, il numero di semafori è variabile) con degli array come mi è stato detto qui??
Non si dovrebbero usare delle liste??
perchè un conto è sapere che devo gestire che ne so 10 semafori ed un'altro gestire un numero arbitrario di semafori.
Non so se mi sono spiegato.
__________________
by Ð@rk§h@ÐØw
|
14-05-2008 12:55 |
|
|
|  |
 |
Larios |
bisognerebbe chiedere al prof visto che non ha spe ... |
14-05-2008 13:07 |
|
 |
Larios |
.consigliere.
Registered: Oct 2007
Posts: 114 (0.02 al dì)
Location:
Corso:
Anno:
Time Online: 20:21:35 [...]
Status: Offline
Edit | Report | IP: Logged |
bisognerebbe chiedere al prof visto che non ha specificato nulla, quello che credo io comunque è che il progetto abbia lo scopo di capire dove mettere le mani nel codice, comunque meglio sentirlo. Fra le altre cose i sorgenti non ci stanno in un disco da 20M (nemmeno quelli originali del disco di istallazione...) come ha indicato ma ci vuole minimo 21M...
Last edited by Larios on 14-05-2008 at 13:12
|
14-05-2008 13:07 |
|
|
|  |
 |
darkshadow |
ma il prof ha detto per caso se rispondeva alle ma ... |
14-05-2008 13:29 |
|
 |
darkshadow |
Are You From The Past?

Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline
Edit | Report | IP: Logged |
ma il prof ha detto per caso se rispondeva alle mail o che non avrebbe avuto tempo rispondere??
__________________
by Ð@rk§h@ÐØw
|
14-05-2008 13:29 |
|
|
|  |
 |
pamarcan |
di sicuro non vanno usati gli array, perchè i nuo ... |
14-05-2008 13:55 |
|
 |
pamarcan |
.primate.
Registered: Mar 2006
Posts: 68 (0.01 al dì)
Location:
Corso: informatica
Anno:
Time Online: 1 Day, 7:02:16 [...]
Status: Offline
Edit | Report | IP: Logged |
di sicuro non vanno usati gli array, perchè i nuovi semafori devono essere dinamicamente aggiunti. partendo da quello fatto a laboratorio bisogna aggiungere quindi una struttura nel server (ad esempio una lista) che mantenga i semafori aperti, una procedura che inizializzi un semaforo (nel caso caso non sia presente nella struttura va creato e messo in coda). vanno quindi aggiunti tutti i prototipi e il nuovo wrapper nelle librerie, modificate le vecchie funzioni ad ogni livello (kernel, system,utente). in modo che (es do_up e do_down che son chiamate da up e down nelle librerie) prendano i parametri dal messaggio che ovviamente andrà in qualche modo creato con gli opportuni campi.
(dal dirlo al farlo però, è una parola!!)
|
14-05-2008 13:55 |
|
|
|  |
 |
darkshadow |
sto cercanco di fare quello sul wiki ma quando ese ... |
14-05-2008 13:57 |
|
 |
darkshadow |
Are You From The Past?

Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline
Edit | Report | IP: Logged |
sto cercanco di fare quello sul wiki ma quando eseguo il comando make mi da il seguente errore:
make: Can't open .depend: No such file or directory
ho inserito il file Makefile nella directory del server (/usr/src/servers/ss/) e provo ad eseguire il comando ma non va.
Qualcuno che ci è riuscito me lo pò spiegare come ha fatto.
Grazie.
PS: il codice del Makefile è quello che ho messo in qualke post + sopra.
__________________
by Ð@rk§h@ÐØw
|
14-05-2008 13:57 |
|
|
|  |
 |
Larios |
[QUOTE][i]Originally posted by darkshadow [/i]
... |
14-05-2008 14:02 |
|
 |
Larios |
.consigliere.
Registered: Oct 2007
Posts: 114 (0.02 al dì)
Location:
Corso:
Anno:
Time Online: 20:21:35 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by darkshadow
ma il prof ha detto per caso se rispondeva alle mail o che non avrebbe avuto tempo rispondere??
ho mandato una mail ieri ma non ha ancora risposto...
|
14-05-2008 14:02 |
|
|
|  |
 |
fabi0 |
Ciao, qualcuno mi sa dire se la funzione main del ... |
14-05-2008 14:03 |
|
 |
fabi0 |
.amico.
Registered: Nov 2007
Posts: 20 (0.00 al dì)
Location:
Corso: Tecnologie dela comunicazione
Anno: 1
Time Online: 3:17:07: [...]
Status: Offline
Edit | Report | IP: Logged |
Ciao, qualcuno mi sa dire se la funzione main del server è giusta come l'ho fatta? qualcuno l'ha fatta in altro modo?
int main (int s, int init)
{
....
init_server(s, init){...}
}
GRAZIE
|
14-05-2008 14:03 |
|
|
|  |
 |
darkshadow |
[QUOTE][i]Originally posted by pamarcan [/i]
... |
14-05-2008 14:08 |
|
 |
darkshadow |
Are You From The Past?

Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by pamarcan
di sicuro non vanno usati gli array, perchè i nuovi semafori devono essere dinamicamente aggiunti. partendo da quello fatto a laboratorio bisogna aggiungere quindi una struttura nel server (ad esempio una lista) che mantenga i semafori aperti, una procedura che inizializzi un semaforo (nel caso caso non sia presente nella struttura va creato e messo in coda). vanno quindi aggiunti tutti i prototipi e il nuovo wrapper nelle librerie, modificate le vecchie funzioni ad ogni livello (kernel, system,utente). in modo che (es do_up e do_down che son chiamate da up e down nelle librerie) prendano i parametri dal messaggio che ovviamente andrà in qualche modo creato con gli opportuni campi.
(dal dirlo al farlo però, è una parola!!)
Quello che ho pensato anch'io.
Quind si avrà per ciascun semaforo una struttura del tipo.
struct semaforo{
int value;
struct semaforo *next;
puntatore_alla_coda_dei_processi_bloccati;
}
quindi quando viene chiamata sem_init(sem, val)
dovrò prima controllare se il semaforo è già presente nella lista. Se si faccio:
punt_semaforo->value = val;
Altrimenti dovrò aggiungere il semaforo nella lsita e poi fare l'assegnamento.
__________________
by Ð@rk§h@ÐØw
|
14-05-2008 14:08 |
|
|
|  |
 |
fabi0 |
[QUOTE][i]Originally posted by darkshadow [/i]
... |
14-05-2008 14:10 |
|
 |
fabi0 |
.amico.
Registered: Nov 2007
Posts: 20 (0.00 al dì)
Location:
Corso: Tecnologie dela comunicazione
Anno: 1
Time Online: 3:17:07: [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by darkshadow
Quello che ho pensato anch'io.
quindi quando viene chiamata sem_init(sem, val)
.
e sem e val?
Dove li prendi? Li passi al main che a sua volta chiama la funzione sem_init passandogli i due parametri?
|
14-05-2008 14:10 |
|
|
|  |
 |
darkshadow |
[QUOTE][i]Originally posted by fabi0 [/i]
... |
14-05-2008 15:08 |
|
 |
darkshadow |
Are You From The Past?

Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by fabi0
e sem e val?
Dove li prendi? Li passi al main che a sua volta chiama la funzione sem_init passandogli i due parametri?
sem e val sono appunto i valori che tu gli passi a sem_init dal main.
nel main avrai un insieme di semafori il cui numero non è noto ma varia ad ogni esecuzione.
quindi dal main chiami sem_init con parametri: il semaforo e il valore di inizializzazione; e come detto prima visto che li gestiamo con delle liste si deve prima controllare se il semaforo è gia presente nella lista se basta fare un assegnamento altrimenti devi allocare lo spazio per il semaforo, inserirlo nella lista ed assegnare il valore di inizializzazione.
__________________
by Ð@rk§h@ÐØw
|
14-05-2008 15:08 |
|
|
|  |
 |
fabi0 |
fino a qui tutto chiaro, ma noi dobiamo passare al ... |
14-05-2008 15:10 |
|
 |
fabi0 |
.amico.
Registered: Nov 2007
Posts: 20 (0.00 al dì)
Location:
Corso: Tecnologie dela comunicazione
Anno: 1
Time Online: 3:17:07: [...]
Status: Offline
Edit | Report | IP: Logged |
fino a qui tutto chiaro, ma noi dobiamo passare al main i parametri da passare alla init_server, no?
int main (int s, int init)
O sbaglio?
GRAZIE
|
14-05-2008 15:10 |
|
|
|  |
 |
darkshadow |
dici a quella del server?? ... |
14-05-2008 15:18 |
|
 |
darkshadow |
Are You From The Past?

Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline
Edit | Report | IP: Logged |
dici a quella del server??
__________________
by Ð@rk§h@ÐØw
|
14-05-2008 15:18 |
|
|
|  |
 |
All times are GMT. The time now is 02:01. |
|
|
 |
|
 |
|
|
|  |
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|