--
-- Copyright (C) 2017 Nico Huber <nico.h@gmx.de>
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--

package HW.File is

   --
   -- Map a file's content into our address space
   --
   -- If `Map_Copy` is `False`, `Len` bytes at `Offset` from the start
   -- of the file given by `Path` should be mapped into the application's
   -- address space using mmap().
   --
   -- If `Map_Copy` is `True`, anonymous memory should be mapped instead
   -- and be filled with a copy of the file's content using read().
   --
   -- If `Len` is zero, the whole file should be mapped.
   --
   procedure Map
     (Addr     :    out Word64;
      Path     : in     String;
      Len      : in     Natural := 0;
      Offset   : in     Natural := 0;
      Readable : in     Boolean := False;
      Writable : in     Boolean := False;
      Map_Copy : in     Boolean := False;
      Success  :    out Boolean)
   with
      Pre => (Readable or Writable) and
             (if Map_Copy then Readable and not Writable);

end HW.File;
