[Kos-dev] Libblockio

Thomas Petazzoni kos-dev@enix.org
Fri, 25 Apr 2003 12:34:01 +0200


This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig9BB8292C13BC13C8705099B5
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

Hello,

> Je verait plutot une libkio plus generique qui gererait tous sorte d'acces par io (et ne pas se limiter au acces par blocks, certains periphs consideres par blocs ne fonctionnent qu'en raw commes d'autres que par requetes a la granularite fichiers).

Non, justement le but c'est d'avoir un truc qui fait juste ça : il ne
faut pas tout mélanger AMHA.

> int file_read (struct ures *, ...) {
>  return libkio_rawread(& block_interface, struct ures *, ...);
> }
> alors que pour d'autres
> int file_read (struct ures *, ...) {
>  return libkio_blockread(& block_interface, struct ures *, ...);
> }

Tu peux expliquer la différence entre "raw" et "block" ?

> int file_read (struct ures *, ...) {
>  <begin usb file_request>
>  int ret = libkio_readfilefromuglyusb(& block_interface, struct ures *, ...);
>  <close usb file_request>
>  return ret;
> }

Oula, non, non, non l'ami : la libkio n'a aucune connaissance de
readfilefromuglyusb : c'est les fonctions de block_interface qui savent
faire ça. La libkio n'a *RIEN* de spécifique au matériel, elle est juste
là pour convertir du byte-grained en block-grained et éventuellement
faire du cache. C'est tout !

> C'est vrai que l'on peut en fait laisser tout a la charge du driver via leur implementation de block_write mais je pense que cela peut facilement devenir un peu trop le truc a tout faire.

Euh, pourquoi ?

Le but d'un driver, c'est bien de "driver" non ? (Prononcez "driver"
comme "drivé" sinon ca le fait pas). Donc le driver se charge de faire
ce qu'il faut pour aller triturer le ATA ou l'USB pour aller lire block
par block (dans le cas des périphériques blocs), et la librairie permet
à partir de là d'exporter une interface de type "fichier".

La libkio n'est pas un fourre tout merdique et immonde, c'est juste *UN
SEUL* truc, utilisé *seulement* pour créer des interfaces "file" à
partir d'interface "block". Si y'a besoin de factoriser du code dans
d'autres codes, il y aura d'autres lib* ;)

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni@enix.org - UIN : 34937744
Web: http://www.enix.org/~thomas/
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

--------------enig9BB8292C13BC13C8705099B5
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQE+qQ8Z9lPLMJjT96cRAtVlAJ9YXAIsiqj/VNp4GjJNrDv01vSoIQCeKEqt
dXvl0lVPu292QDSpmRr7V4o=
=Pu6N
-----END PGP SIGNATURE-----

--------------enig9BB8292C13BC13C8705099B5--