[pso] [tema1][lin] Aflare NR_syscalls

Octavian Voicu octavian.voicu at gmail.com
Mon Mar 9 01:47:03 EET 2009


Da, ai dreptate, ce am zis eu n-ai cum sa folosesti ca nu poti sa incluzi
fisierul .S.
Presupun ca vrei sa stii care e ultimul syscall pentru verificarea
argumentelor.

Avand in vedere ca oricum s-a modificat sursa kernel-ului ca sa se seteze
sectiunea ca fiind writeable, putem si noi sa folosim un define in cod
pentru ultimul syscall, cu valoarea __NR_inotify_init1.

Sa ma corecteze cineva din staff, dar elegant nu prea cred ca se poate.
Presupun ca de-aia exista sys_ptrace, nu ar trebui sa ne jucam cu
syscall_table :)



On Mon, Mar 9, 2009 at 12:13 AM, Cristian Sandescu <cristi at 1p.ro> wrote:

>  Pentru ca nu am fost suficient de explicit, as dori sa adaug ca eu includ
> momentan doar:
>
>
>
> #include <linux/module.h>
>
> #include <linux/init.h>
>
> #include <linux/kernel.h>
>
> #include <linux/sched.h>
>
> #include "Sci_lin.h"
>
>
>
> Multumesc,
>
> Cristi
>
>
>
> *From:* pso-bounces at cursuri.cs.pub.ro [mailto:
> pso-bounces at cursuri.cs.pub.ro] *On Behalf Of *Cristian Sandescu
> *Sent:* Monday, March 09, 2009 12:10 AM
>
> *To:* 'Proiectarea Sistemelor de Operare'
> *Subject:* Re: [pso] [tema1][lin] Aflare NR_syscalls
>
>
>
> 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
>
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
>


-- 
Octavian Voicu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090309/69112a34/attachment.html 


More information about the pso mailing list