[pso] [tema1][lin] Aflare NR_syscalls
Cristian Sandescu
cristi at 1p.ro
Mon Mar 9 00:13:43 EET 2009
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090309/279986b6/attachment-0001.htm
More information about the pso
mailing list