[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