← Back to team overview

helenos-nicf team mailing list archive

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