with Interfaces.C;

package FS.FILO is

   Procedure Read
      (Buffer  : in out Buffer_Type;
       Offset  : in     Natural;
       Success :    out Boolean);

private

   function C_devread
      (sector : Interfaces.C.unsigned_long;
       byte_offset : Interfaces.C.unsigned_long;
       byte_len : Interfaces.C.unsigned_long;
       buf : ... )
      return Interfaces.C.int
      with
         SPARK_Mode => Off,
         Import => True,
         Conversion => C;
   

end FS.FILO;



-- int mount (void)
-- int read (char* buf, int len)
-- int dir (char *dirname)
-- void close (void) // not implemented
