[pso] [tema1][lin] Aflare NR_syscalls

Octavian Voicu octavian.voicu at gmail.com
Sun Mar 8 21:16:21 EET 2009


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/20090308/600b2722/attachment.htm 


More information about the pso mailing list