All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philippe Gerum <rpm@xenomai.org>
To: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-core] [3/9] Define more atomic operations in user-space
Date: Sat, 26 Apr 2008 09:02:49 +0200	[thread overview]
Message-ID: <4812D399.70802@domain.hid> (raw)
In-Reply-To: <18450.22161.142736.225034@domain.hid>

Gilles Chanteperdrix wrote:
> Philippe Gerum wrote:
>  > Gilles Chanteperdrix wrote:
>  > > On Fri, Apr 25, 2008 at 4:01 PM, Philippe Gerum <rpm@xenomai.org> wrote:
>  > >> Gilles Chanteperdrix wrote:
>  > >>  > On Fri, Apr 25, 2008 at 3:42 PM, Philippe Gerum <rpm@xenomai.org> wrote:
>  > >>  >> Gilles Chanteperdrix wrote:
>  > >>  >>  > On Fri, Apr 25, 2008 at 9:48 AM, Philippe Gerum <rpm@xenomai.org> wrote:
>  > >>  >>  >> Gilles Chanteperdrix wrote:
>  > >>  >>  >>  > This patch implements the _read, _set, and _cmpxchg operations on atomic_long_t
>  > >>  >>  >>  > and atomic_ptr_t in user-space in include/asm-generic/atomic.h which should be
>  > >>  >>  >>  > included at the end of include/asm-*/atomic.h after the definition of the same
>  > >>  >>  >>  > operations for the atomic_t type and atomic64_t type on 64 bits platforms.
>  > >>  >>  >>  >
>  > >>  >>  >>  > These operations are the basic operations used by user-space mutexes. Maybe we
>  > >>  >>  >>  > should add the xnarch_ prefix ?
>  > >>  >>  >>  >
>  > >>  >>  >>
>  > >>  >>  >>  Yes, but more generally, we should rework this to fit the existing atomic
>  > >>  >>  >>  support in include/asm-*/atomic.h, so that we don't end up with sideways to what
>  > >>  >>  >>  has been already designed to support set, get, xchg and the like, in both kernel
>  > >>  >>  >>  and userland context.
>  > >>  >>  >
>  > >>  >>  > That is not exactly sideways... Linux include/asm-generic/atomic.h
>  > >>  >>  > defines operations for atomic_long_t. This file adds two things:
>  > >>  >>  > - support for atomic_long_t in user-space (where we can not include
>  > >>  >>  > linux include/asm-generic/atomic.h)
>  > >>  >>  > - support for a new type atomic_ptr_t both to kernel-space and
>  > >>  >>  > user-space, the aim is to avoid all the casts that would take place if
>  > >>  >>  > we wanted to use atomic_long_t to store pointers.
>  > >>  >>  >
>  > >>  >>  > However for this file to work, it has to be included by asm-*/atomic.h
>  > >>  >>  > after the definition of atomic_t (and atomic64_t on 64 bits
>  > >>  >>  > platforms). So linux includes asm-generic/atomic.h at the end of
>  > >>  >>  > asm/atomic.h, I simply reproduced this scheme with Xenomai
>  > >>  >>  > include/asm-*/atomic.h.
>  > >>  >>  >
>  > >>  >>
>  > >>  >>  Focusing on user-space: 1) xnarch_atomic_xchg is meant to work on long types; 2)
>  > >>  >>  set, get routines are not defined in that scope. If the purpose is to define
>  > >>  >>  integer-type ops to handle pointer-type data atomically (i.e. intptr_t), then I
>  > >>  >>  would rather check whether we actually need non-long support at all in
>  > >>  >>  user-space. In case we don't, I would simply reply on the existing
>  > >>  >>  implementation of asm-*/atomic.h + the set / get extensions you provide.
>  > >>  >
>  > >>  > I use both atomic_t and atomic_ptr_t for the implementation of
>  > >>  > user-space mutexes. The problem is that I am constrained by the size
>  > >>  > of pthread_mutex_t, so the "control block read-write locks"
>  > >>  > implementation use atomic_t.
>  > >>  >
>  > >>
>  > >>  Ok, makes sense. Let's just fix the namespace then, so that we don't get the
>  > >>  feeling of having duplicate sets of operations.
>  > > 
>  > > That said, there is just enough room for replacing the atomic_t with
>  > > an atomic_long_t. So, we can make xnarch_atomic_t a long type. Have
>  > > you anything agains making an xnarch_atomic_ptr_t ?
>  > > 
>  > 
>  > No objection, just let us call it xnarch_atomic_intptr_t to ANSIfy this a bit
>  > more, and clearly state that we need this type to hold a pointer into an integer
>  > value, and operate atomically on it.
> 
> Ok. The current type defined in asm-arm/atomic.h is
> atomic_counter_t. Should I rename this xnarch_atomic_t ?
>

Fine with me.

> I ask this now, because I am going to do search and replaces of atomic_
> all over my changes, so, I prefer to know before.
> 


-- 
Philippe.


  reply	other threads:[~2008-04-26  7:02 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-24  6:16 [Xenomai-core] [0/9] Posix skin user-space mutexes Gilles Chanteperdrix
2008-04-24  6:20 ` [Xenomai-core] [1/9] Support for non cached memory mappings Gilles Chanteperdrix
2008-04-24  6:21   ` [Xenomai-core] [2/9] Define XNARCH_SHARED_HEAP_FLAGS Gilles Chanteperdrix
2008-04-24  6:22     ` [Xenomai-core] [3/9] Define more atomic operations in user-space Gilles Chanteperdrix
2008-04-24  6:24       ` [Xenomai-core] [4/9] Define ARM " Gilles Chanteperdrix
2008-04-24  6:25         ` [Xenomai-core] [5/9] Define new syscalls for the posix skin Gilles Chanteperdrix
2008-04-24  6:27           ` [Xenomai-core] [6/9] Rework posix skin shared heaps support, add per-process shared heap Gilles Chanteperdrix
2008-04-24  6:30             ` [Xenomai-core] [7/9] Poor man's object control block read-write lock Gilles Chanteperdrix
2008-04-24  6:32               ` [Xenomai-core] [8/9] Re-implementation of mutexes, kernel-space support Gilles Chanteperdrix
2008-04-24  6:33                 ` [Xenomai-core] [9/9] Re-implementation of mutex, user-space support Gilles Chanteperdrix
2008-04-25  8:03             ` [Xenomai-core] [6/9] Rework posix skin shared heaps support, add per-process shared heap Philippe Gerum
2008-04-25  7:59           ` [Xenomai-core] [5/9] Define new syscalls for the posix skin Philippe Gerum
2008-04-25  7:51         ` [Xenomai-core] [4/9] Define ARM atomic operations in user-space Philippe Gerum
2008-04-25  7:48       ` [Xenomai-core] [3/9] Define more " Philippe Gerum
2008-04-25 13:26         ` Gilles Chanteperdrix
2008-04-25 13:42           ` Philippe Gerum
2008-04-25 13:50             ` Gilles Chanteperdrix
2008-04-25 14:01               ` Philippe Gerum
2008-04-25 14:13                 ` Gilles Chanteperdrix
2008-04-25 14:20                   ` Philippe Gerum
2008-04-25 22:09                     ` Gilles Chanteperdrix
2008-04-26  7:02                       ` Philippe Gerum [this message]
2008-04-24  7:09 ` [Xenomai-core] [0/9] Posix skin user-space mutexes Jan Kiszka
2008-04-24  7:37   ` Gilles Chanteperdrix
2008-04-24  8:23     ` Gilles Chanteperdrix

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4812D399.70802@domain.hid \
    --to=rpm@xenomai.org \
    --cc=gilles.chanteperdrix@xenomai.org \
    --cc=xenomai@xenomai.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.