<?xml version="1.0" encoding='ISO-8859-1'?>
<!--DOCTYPE component PUBLIC "-//OCERA//DTD component XML V1.0//EN" "file:component.dtd"-->

<component id="pmqueue" name="POSIX Message Queues">
  <title>POSIX Message Queues</title>
  <info>
    <authorgroup>
      <author>
	<firstname>Sergio</firstname>
	<surname>Saez</surname>
	<affiliation>
	  <orgname>UPVLC</orgname>
	</affiliation>
	<email><ulink url="mailto:ssaez@disca.upv.es">ssaez@disca.upv.es</ulink></email>
      </author>
    </authorgroup>
    
    <reviewergroup>
      <author>
	<firstname>Alejandro</firstname>
	<surname>Lucero</surname>
	<affiliation>
	  <orgname>UPVLC</orgname>
	</affiliation>
	<email><ulink url="mailto:alucero@gap.upv.es">alucero@gap.upv.es</ulink></email>
      </author>
    </reviewergroup>

    <copyright>
      <year>2003</year>
      <holder>OCERA Consortium</holder>
    </copyright>

    <deliverable file="ms2-month12/WP5/D5.2_rep.pdf" />
    <workpackage id="WP5" />

    <date start="15/12/2002" release="22/04/2003"/>
    <version cvs="sched/pmqueue" value="0.2-1"/>
    <status value="Testing"/>

    <licenses>
  <license name="MPL" />
  <license name="GPL" />
  <license name="LGPL" />
  <license name="CeCILL" file="cecill.pdf" />
</licenses>
    <home-page url="http://www.ocera.org"/>

    <hardware processor="Independent"/>
    <platform rtlinux="3.2pre1"/>
    <componenttype value="HighLevel"/>

    <dependencies>
      <dependency version="3.2pre1">RTLinux</dependency>
      <dependency version=">=0.2">PSignals</dependency>
    </dependencies>

    <keywords>Real-Time, POSIX, communication, IPC</keywords>
  </info>


  <!-- ================================================== Description -->
  <description>
    UNIX systems offers several possibilities for interprocess
    communication: signals, pipes and FIFO queues, shared memory,
    sockets, etc. In RTLinux, the most flexible one is shared memory,
    but the programmer has to use alternative synchronisation
    mechanism to build a safe communication mechanism between process
    or threads. On the other hand, signals and pipes lack certain
    flexibility to establish communication channels between
    process. 

    In order to cover some of these weaknesses, POSIX standard
    proposes a message passing facility that offers: 

    1) Protected and synchronised access to the message queue. Access
    to data stored in the message queue is properly protected against
    concurrent operations.

    2) Prioritised messages. Processes can build several
    flows over the same queue, and it is ensured that the receiver
    will pick up the oldest message from the most urgent flow.  

    3) Asynchronous and temporised operation. Processes have not to
    wait for operation to be finish, i.e., they can send a message
    without having to wait for someone to read that message. They also
    can wait an specified amount of time or nothing at all, if the
    message queue is full or empty.

    4) Asynchronous notification of message arrivals. A receiver
    process can configure the message queue to be notified on message
    arrivals. So such a process can be working on something else until
    the expected message arrives.

  </description>

</component>

