summaryrefslogblamecommitdiffstats
path: root/cpukit/include/adainclude/rtems-io.adb
blob: addc2e25407aa135e0221b2ec52a484f20a2715d (plain) (tree)
1
2

                                        














                                                         



















                                                                               
  






























                                                                            































































































                                                          
-- SPDX-License-Identifier: BSD-2-Clause

--
--  RTEMS / Body
--
--  DESCRIPTION:
--
--  This package provides the interface to the RTEMS API.
--
--
--  DEPENDENCIES:
--
--
--
--  COPYRIGHT (c) 1997-2011.
--  On-Line Applications Research Corporation (OAR).
--
--  Redistribution and use in source and binary forms, with or without
--  modification, are permitted provided that the following conditions
--  are met:
--  1. Redistributions of source code must retain the above copyright
--     notice, this list of conditions and the following disclaimer.
--  2. Redistributions in binary form must reproduce the above copyright
--     notice, this list of conditions and the following disclaimer in the
--     documentation and/or other materials provided with the distribution.
--
--  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
--  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
--  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
--  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--  POSSIBILITY OF SUCH DAMAGE.
--

with Ada;
with Ada.Unchecked_Conversion;
with Interfaces;               use Interfaces;
with Interfaces.C;             use Interfaces.C;
with Interfaces.C.Strings;     use Interfaces.C.Strings;

package body RTEMS.IO is

   --
   -- Input/Output Manager
   --

   procedure Register_Name
     (Name   : in String;
      Major  : in RTEMS.Device_Major_Number;
      Minor  : in RTEMS.Device_Minor_Number;
      Result : out RTEMS.Status_Codes)
   is
      function Register_Name_Base
        (Name  : Interfaces.C.char_array;
         Major : RTEMS.Device_Major_Number;
         Minor : RTEMS.Device_Minor_Number)
         return  RTEMS.Status_Codes;
      pragma Import (C, Register_Name_Base, "rtems_io_register_name");
   begin

      Result := Register_Name_Base (Interfaces.C.To_C (Name), Major, Minor);

   end Register_Name;

   procedure Open
     (Major    : in RTEMS.Device_Major_Number;
      Minor    : in RTEMS.Device_Minor_Number;
      Argument : in RTEMS.Address;
      Result   : out RTEMS.Status_Codes)
   is
      function Open_Base
        (Major    : RTEMS.Device_Major_Number;
         Minor    : RTEMS.Device_Minor_Number;
         Argument : RTEMS.Address)
         return     RTEMS.Status_Codes;
      pragma Import (C, Open_Base, "rtems_io_open");
   begin

      Result := Open_Base (Major, Minor, Argument);

   end Open;
   pragma Inline (Open);

   procedure Close
     (Major    : in RTEMS.Device_Major_Number;
      Minor    : in RTEMS.Device_Minor_Number;
      Argument : in RTEMS.Address;
      Result   : out RTEMS.Status_Codes)
   is
      function Close_Base
        (Major    : RTEMS.Device_Major_Number;
         Minor    : RTEMS.Device_Minor_Number;
         Argument : RTEMS.Address)
         return     RTEMS.Status_Codes;
      pragma Import (C, Close_Base, "rtems_io_close");
   begin

      Result := Close_Base (Major, Minor, Argument);

   end Close;
   pragma Inline (Close);

   procedure Read
     (Major    : in RTEMS.Device_Major_Number;
      Minor    : in RTEMS.Device_Minor_Number;
      Argument : in RTEMS.Address;
      Result   : out RTEMS.Status_Codes)
   is
      function Read_Base
        (Major    : RTEMS.Device_Major_Number;
         Minor    : RTEMS.Device_Minor_Number;
         Argument : RTEMS.Address)
         return     RTEMS.Status_Codes;
      pragma Import (C, Read_Base, "rtems_io_read");
   begin

      Result := Read_Base (Major, Minor, Argument);

   end Read;
   pragma Inline (Read);

   procedure Write
     (Major    : in RTEMS.Device_Major_Number;
      Minor    : in RTEMS.Device_Minor_Number;
      Argument : in RTEMS.Address;
      Result   : out RTEMS.Status_Codes)
   is
      function Write_Base
        (Major    : RTEMS.Device_Major_Number;
         Minor    : RTEMS.Device_Minor_Number;
         Argument : RTEMS.Address)
         return     RTEMS.Status_Codes;
      pragma Import (C, Write_Base, "rtems_io_write");
   begin

      Result := Write_Base (Major, Minor, Argument);

   end Write;
   pragma Inline (Write);

   procedure Control
     (Major    : in RTEMS.Device_Major_Number;
      Minor    : in RTEMS.Device_Minor_Number;
      Argument : in RTEMS.Address;
      Result   : out RTEMS.Status_Codes)
   is
      function Control_Base
        (Major    : RTEMS.Device_Major_Number;
         Minor    : RTEMS.Device_Minor_Number;
         Argument : RTEMS.Address)
         return     RTEMS.Status_Codes;
      pragma Import (C, Control_Base, "rtems_io_control");
   begin

      Result := Control_Base (Major, Minor, Argument);

   end Control;
   pragma Inline (Control);

end RTEMS.IO;