All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] Interprocess Mutex
@ 2008-11-20  8:55 Adrian Boeing
  2008-11-20 12:48 ` Gilles Chanteperdrix
  0 siblings, 1 reply; 4+ messages in thread
From: Adrian Boeing @ 2008-11-20  8:55 UTC (permalink / raw)
  To: xenomai

[-- Attachment #1: Type: text/plain, Size: 256 bytes --]

Hi,

Is it possible to create an inter-process mutex between kernel space and
user space?
If so, how is this done with the native API?

The system has one real-time kernel process which communicates with other
processes via shared memory.

Thanks,
-Adrian

[-- Attachment #2: Type: text/html, Size: 282 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Xenomai-help] Interprocess Mutex
  2008-11-20  8:55 [Xenomai-help] Interprocess Mutex Adrian Boeing
@ 2008-11-20 12:48 ` Gilles Chanteperdrix
  2008-11-21  0:03   ` Adrian Boeing
  0 siblings, 1 reply; 4+ messages in thread
From: Gilles Chanteperdrix @ 2008-11-20 12:48 UTC (permalink / raw)
  To: Adrian Boeing; +Cc: xenomai


Adrian Boeing wrote:
> Hi,
>
> Is it possible to create an inter-process mutex between kernel space and
> user space?
> If so, how is this done with the native API?
>
> The system has one real-time kernel process which communicates with other
> processes via shared memory.

See rt_mutex_bind:
http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__mutex.html#g39b3a0e7f6f6ee41b8068ed59e25d1d1
or, for the posix skin, pthread_mutexattr_setpshared:
http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__posix__mutex.html#g73bd8697b91e0ee9a63c30052ac9f72f
Note that for sharing a mutex with the posix skin, the pthread_mutex_t
structure needs to reside on a shared memory.

-- 
                    Gilles.



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Xenomai-help] Interprocess Mutex
  2008-11-20 12:48 ` Gilles Chanteperdrix
@ 2008-11-21  0:03   ` Adrian Boeing
  2008-11-21  2:43     ` Philippe Gerum
  0 siblings, 1 reply; 4+ messages in thread
From: Adrian Boeing @ 2008-11-21  0:03 UTC (permalink / raw)
  To: Gilles Chanteperdrix; +Cc: xenomai

[-- Attachment #1: Type: text/plain, Size: 1523 bytes --]

Hi Gilles, thanks for the reply.

In my test (pseudo) code with rt_mutex:
(without bind):
int main() {
 err = rt_mutex_create(&mutex_desc,0);
 err =  rt_mutex_acquire(&mutex_desc,TM_INFINITE); //fails with -1!
}
(with bind):
int main() {
 err = rt_mutex_create(&Kmutex_desc,"bob");
 err = rt_mutex_bind(&mutex_desc,"bob",TM_INFINITE);
 err =  rt_mutex_acquire(&mutex_desc,TM_INFINITE); //fails with -1!
}

Both of these fail to acquire the mutex with "EPERM" :: (this service was
called from a context which cannot be given the ownership of the mutex).

Is there something special I need to do in order to do this in user space?

Thanks,
-Adrian

On Thu, Nov 20, 2008 at 9:48 PM, Gilles Chanteperdrix <
gilles.chanteperdrix@xenomai.org> wrote:

>
> Adrian Boeing wrote:
> > Hi,
> >
> > Is it possible to create an inter-process mutex between kernel space and
> > user space?
> > If so, how is this done with the native API?
> >
> > The system has one real-time kernel process which communicates with other
> > processes via shared memory.
>
> See rt_mutex_bind:
>
> http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__mutex.html#g39b3a0e7f6f6ee41b8068ed59e25d1d1
> or, for the posix skin, pthread_mutexattr_setpshared:
>
> http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__posix__mutex.html#g73bd8697b91e0ee9a63c30052ac9f72f
> Note that for sharing a mutex with the posix skin, the pthread_mutex_t
> structure needs to reside on a shared memory.
>
> --
>                     Gilles.
>
>

[-- Attachment #2: Type: text/html, Size: 2428 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Xenomai-help] Interprocess Mutex
  2008-11-21  0:03   ` Adrian Boeing
@ 2008-11-21  2:43     ` Philippe Gerum
  0 siblings, 0 replies; 4+ messages in thread
From: Philippe Gerum @ 2008-11-21  2:43 UTC (permalink / raw)
  To: Adrian Boeing; +Cc: xenomai

Adrian Boeing wrote:
> Hi Gilles, thanks for the reply.
> 
> In my test (pseudo) code with rt_mutex:
> (without bind):
> int main() {

   err = rt_task_shadow(...);

>  err = rt_mutex_create(&mutex_desc,0);
>  err =  rt_mutex_acquire(&mutex_desc,TM_INFINITE); //fails with -1!
> }
> (with bind):
> int main() {


   err = rt_task_shadow(...);

>  err = rt_mutex_create(&Kmutex_desc,"bob");
>  err = rt_mutex_bind(&mutex_desc,"bob",TM_INFINITE);
>  err =  rt_mutex_acquire(&mutex_desc,TM_INFINITE); //fails with -1!
> }
> 
> Both of these fail to acquire the mutex with "EPERM" :: (this service
> was called from a context which cannot be given the ownership of the mutex).
> 
> Is there something special I need to do in order to do this in user space?
>

Those Xenomai syscalls are only available to Xenomai threads; rt_task_shadow()
turns a regular Linux pthread into a Xenomai-enabled RT thread. rt_task_shadow()
has to be called once when you don't want to spawn a new RT task using the
rt_task_create() interface, but promote the current Linux pthread to the Xenomai
real-time domain. In short, it associates a Xenomai task control block to the
underlying Linux task, so that both Xenomai and Linux schedulers can handle it.

> Thanks,
> -Adrian
> 
> On Thu, Nov 20, 2008 at 9:48 PM, Gilles Chanteperdrix
> <gilles.chanteperdrix@xenomai.org
> <mailto:gilles.chanteperdrix@xenomai.org>> wrote:
> 
> 
>     Adrian Boeing wrote:
>     > Hi,
>     >
>     > Is it possible to create an inter-process mutex between kernel
>     space and
>     > user space?
>     > If so, how is this done with the native API?
>     >
>     > The system has one real-time kernel process which communicates
>     with other
>     > processes via shared memory.
> 
>     See rt_mutex_bind:
>     http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__mutex.html#g39b3a0e7f6f6ee41b8068ed59e25d1d1
>     or, for the posix skin, pthread_mutexattr_setpshared:
>     http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__posix__mutex.html#g73bd8697b91e0ee9a63c30052ac9f72f
>     Note that for sharing a mutex with the posix skin, the pthread_mutex_t
>     structure needs to reside on a shared memory.
> 
>     --
>                        Gilles.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Xenomai-help mailing list
> Xenomai-help@domain.hid
> https://mail.gna.org/listinfo/xenomai-help


-- 
Philippe.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-11-21  2:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-20  8:55 [Xenomai-help] Interprocess Mutex Adrian Boeing
2008-11-20 12:48 ` Gilles Chanteperdrix
2008-11-21  0:03   ` Adrian Boeing
2008-11-21  2:43     ` Philippe Gerum

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.