[pso] [tema1][lin] Aflare NR_syscalls

Cristian Sandescu cristi at 1p.ro
Mon Mar 9 00:09:44 EET 2009


Salut,

 

Am gasit si eu codul unde se genereaza macro-ul, problema e ca nu prea
reusesc sa compilez.

Am testat si pe masina oficiala recent publicata, iar output-ul lui make
este:

 

/root/tema1/list_proc.c: In function â?~my_syscallâ?T:

/root/tema1/list_proc.c:36: warning: ISO C90 forbids mixed declarations and
code

 

/root/tema1/list_proc.c:37: error: â?~nr_syscallsâ?T undeclared (first use
in th

is function)

/root/tema1/list_proc.c:37: error: (Each undeclared identifier is reported
only

once

/root/tema1/list_proc.c:37: error: for each function it appears in.)

make[1]: Leaving directory `/usr/src/linux-2.6.28.4'

make[2]: *** [/root/tema1/list_proc.o] Error 1

make[1]: *** [_module_/root/tema1] Error 2

make: *** [kbuild] Error 2

make: *** [remote] Error 2

 

Banuiesc ca nu includ ce trebuie, insa nu stiu ce ar trebui sa includ :)

 

Multumesc,

Cristi

 

From: pso-bounces at cursuri.cs.pub.ro [mailto:pso-bounces at cursuri.cs.pub.ro]
On Behalf Of Octavian Voicu
Sent: Sunday, March 08, 2009 9:16 PM
To: Proiectarea Sistemelor de Operare
Subject: Re: [pso] [tema1][lin] Aflare NR_syscalls

 

 

2009/3/8 Cristian Sandescu <cristian.sandescu at gmail.com>

Salutare,

 

Pentru tema 1 incerc sa determin valoarea NR_syscalls, pentru ca am citit
aici [1] ca definirea macroului este deprecated.

Ar trebui sa obtin marimea lui sys_call_table din memorie la compile-time,
dar nu prea-mi iese cu sizeof(sys_call_table)/sizeof(void*), cred ca din
cauza ca e alocat dinamic.

 

Cred ca felul in care e definit simbolul (direct din cod assembler, folosind
un label practic) nu-i ofera compilatorului informatii despre dimensiunea
structurii (practic nu e un array, e doar o adresa). Tot din assembler se
calculeaza dimensiunea structurii imediat dupa sfarsitul tabelei in simbolul
syscall_table_size.

 

Vezi:

http://cs.pub.ro/~pso/lxr/source/arch/x86/kernel/entry_32.S?v=linux-2.6.24.2
#1114

http://cs.pub.ro/~pso/lxr/source/arch/x86/kernel/syscall_table_32.S?v=linux-
2.6.24.2

 

Pentru numarul de syscall-uri vad ca e definita un macro nr_syscalls care
foloseste syscall_table_size pentru a determina numarul de syscall-uri:

http://cs.pub.ro/~pso/lxr/source/arch/x86/kernel/entry_32.S?v=linux-2.6.24.2
#069

Pare destul de architecture-specific (doar cateva arhitecturi au exact
simbolul asta).

 

Presupun ca tema noastre trebuie sa mearga doar pe x86, deci se poate folosi
:D

 



-- 
Octavian Voicu

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090309/51e3fb36/attachment.htm 


More information about the pso mailing list