[so2] submodule (simboluri statice?)

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Fri Mar 20 17:12:05 EET 2015


Mihail Bălan via so2 <so2 at cursuri.cs.pub.ro> writes:
> Vreau să-mi sparg modulul în mai multe submodule. Motivul: vreau să separ 
> (din punct de vedere al surselor) funcționalități: e.g.: lucrul cu deviceuri, 
> managementul listelor, logica principală.
>
> Funcțiile și variabilele globale (*) pe care le folosesc doar în acest modul 
> sunt statice.  Am mai multe opțiuni:
>
> 1) fac funcțiile și variabilele globale non-statice. Dezavantaj: simboluri 
> exportate în întreg kernel-ul.
>
> 2) renunț la submodule, dar definesc funcțiile și variabile în mai multe 
> header-e. Cum doar modulul meu încarcă aceste header-e o singură dată, le pot 
> lăsa statice. Dezavantaj: definiții în header-e...
>
> 3) Renunț și las totul într-un singură sursă.
>
> Din punctul meu de vedere ar fi ideal dacă s-ar putea creea simboluri care să 
> fie external-linked în submodule (pentru a putea fi linkate când se 
> compilează modulul), dar să fie internal linked în modulul final. Dar, decât 
> dacă sub-modulele și modulele se compilează cu un fel de black-magic, nu văd 
> cum ar fi posibil așa ceva.
>
> Care ar fi opțiunea cea mai bună?
>
> * în general evit variabilele globale, dar într-un modul de kernel nu văd o 
> soluție elegantă de a le evita; e.g. e nevoie de o variabile globala pentru 
> santinela unei liste folosite în modul. Dacă variabile e statică nu văd nicio 
> problemă. Dacă nu e statică...

Păi ar trebui să nu ai nevoie să folosești variabile globale în mai
multe submodule. Pur și simplu le faci globale statice și, dacă e musai
nevoie să fie folosită o variabilă și în alt modul, o trimiți ca
parametru unei funcții din acel modul. Cred că poți să rezolvi așa, fără
a fi nevoie de globale ne-statice.

Răzvan


More information about the so2 mailing list