helenos-nicf team mailing list archive
-
helenos-nicf team
-
Mailing list archive
-
Message #00148
Privátní nic_t
Ahoj,
při namergeování posledních změn NICF jsem dospěl k názoru, že schování
nic_t struktury před autory driverů nebyl příliš dobrý nápad.
Jedna z velmi diskutabilních věcí je práce s nic_t v _impl funkcích.
_impl funkce byly zamýšleny jako typické postupy při obsluze daného
callbacku, ale autor měl mít možnost v případě potřeby napsat a použít
funkci vlastní (a to i jen jednu, pokud mu ostatní _impl funkce u dané
funkcionality vyhovují). Autor by tedy měl mít k dispozici vše, co _impl
funkce používají. Při pohledu na _impl funkce to ale možné není - funkce
zamykají zámky v nic_t, zapisují/čtou jinak nepřístupné položky
(mimochodem, nemožnost nastavit caps_max u WoL jsem už napsal do
mantisu),... Chce-li tedy autor upravit jedinou _impl funkci, musí
(kvůli nemožnosti v ní adekvátně zamykat, číst/měnit některé informace z
nic_t) v podstatě vytvořit vlastní kopii nic_t a napsat i vše ostatní
sám. Dle mého názoru by se mělo, má-li nic_t zůstat privátní, rozšířit
rozhraní přístupu k ní tak, aby bylo možno přepsat kteroukoliv _impl
funkci způsobem nevyužívajícím privátní hlavičkové soubory frameworku.
Pokud někdo píše driver, dá se předpokládat dobrá znalost fungování HW,
schopnost číst dokumentaci a jednat podle ní. Tedy hlavní věc, která
stačí ke správnému využívání frameworků, je jejich dobré zdokumentování.
Schovávat před programátory implementační detaily je IMO na úrovni
ovladačů HW dosti podivné, místo toho se případnému špatnému přístupu k
strukturám frameworku dá předejít dobrým zdokumentováním, co za jakých
okolností framework vyžaduje (hodnoty položek struktury, kdy se co má
zamykat, kdy co framework zamyká,...).
Jaký na to máte názor vy?
Michy
Follow ups