with Interfaces.C;
with System;

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 : System.Address)
      return Interfaces.C.int
      with
         SPARK_Mode => Off,
         Import => True,
         Convention => C,
         External_Name => "devopen";
   

end FS.FILO;



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