From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4B8D10C5.9050108@domain.hid> Date: Tue, 02 Mar 2010 14:21:09 +0100 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <4B8D0EEA.3090409@domain.hid> In-Reply-To: <4B8D0EEA.3090409@domain.hid> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai-help] Which process synchronization primitive? List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Daniele Nicolodi Cc: xenomai@xenomai.org Daniele Nicolodi wrote: > Hello. I'm writing a data acquisition system (the code will be released > open source soon) and i chose to use Xenomai to obtain real time > performances. > > The design of the system is inspired from JACK http://jackaudio.org/. > Different functionalities are implemented in separate processes that > communicate via a shared memory segment. However I need a processes > synchronization primitive. In the first toy implementation of the system > I have been using simple pipes and blocking reads (as is done in jack) > and it work quite well. However I learned this mechanism is not suitable > for real time. > > Given that I would like to use the Xenomai Posix skin, so that my > applications will build also without Xenomai support, which process > synchronization primitive you suggest? Which is the overhead of > different solutions? > > I think message queues can work well but I'm not sure they are the best > choice when I do not have to communicate any message. Would be > semaphores best suited to my needs? You can use process-shared mutexes or semaphores. But there is something which must be said clearly: compiling or not with Xenomai support is all or nothing. Either you build all the applications with Xenomai posix support or none of them. There is no way you can synchronize a real-time thread with a non real-time thread without loosing determinism. And beware of the kind of priority inversions which would result from calling a Linux system call while holding a mutex shared with real-time processes, as explained here: http://www.xenomai.org/index.php/Porting_POSIX_applications_to_Xenomai#Chasing_the_unwanted_mode_switches. -- Gilles.