--
-- 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 from the start of the file
   -- given by `Path` shall 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().
   --
   procedure Map
     (Addr     :    out Word64;
      Path     : in     String;
      Len      : in     Natural;
      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;
