title: Mapping chunk of shared memory for reading/writing in Ada
body: <p>I have a chunk (1024 bytes) of shared memory between two processes for which I have an address pointing to.  I want to copy some data to this shared memory, and read it on the other process.  Coming from a C background, it seems easiest to map a record to this address, and then write to the record, but it does not seem to be copying correctly.</p>
  
  <p>Currently, I am trying to convert the pointer to a pointer-to-record type using an Unchecked Conversion, and copy to the record, but I am seeing differences in the data when I compare the original payload with the one received in the second process.</p>
  
  <p>Is this the proper way of doing this?:</p>
  
  <pre><code>type Payload_Array_Type is array (1..255) of Integer_32;
  
  type Common_Buffer_Type is
    record
      Size : Integer_32;
      Payload : Payload_Array_Type;
    end record;
  
  type Common_Buffer_Ptr_Type is access Common_Buffer_Type;
  
  function Convert_Common_Memory_Ptr is new Unchecked_Conversion (
      Source =&gt; System.Address,
      Target =&gt; Common_Buffer_Ptr_Type);
  
  Common_Memory_Ptr : System.Address;
  
  procedure Copy_To_Common_Buffer
  (
      Size : Integer_32;
      Payload : Payload_Array_Type
  ) is
      Common_Buffer_Ptr : Common_Buffer_Ptr_Type;
  begin
      Common_Buffer_Ptr := Convert_Common_Memory_Ptr(Common_Memory_Ptr);
      Common_Buffer_Ptr.Size := Size;
      Common_Buffer_Ptr.Payload(1..255) := Payload(1..255);    
  end Copy_To_Common_Buffer;
  </code></pre>