From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: Wolfgang Netbal <wolfgang.netbal@sigmatek.at>
Cc: Xenomai Mailing List <xenomai@xenomai.org>
Subject: Re: [Xenomai] Function to get state of lock variable
Date: Tue, 18 Aug 2015 14:48:05 +0200 [thread overview]
Message-ID: <20150818124805.GB4740@hermes.click-hack.org> (raw)
In-Reply-To: <55D321A2.6090201@sigmatek.at>
On Tue, Aug 18, 2015 at 02:14:26PM +0200, Wolfgang Netbal wrote:
> Hi All,
>
> is there a function te returns true or false if a rtdm_lock_t variable is
> set ?
> What I have to do is to check in an interrupt routine if the list is
> locked,
> if this is the case I leave the interrupt handler befor accessing the list.
>
> I use the following code to lock the add and replace of list elements.
>
> static rtdm_lock_t opendev_list_lock;
> static int open(struct rtdm_dev_context *context, rtdm_user_info_t *
> user_info, int oflags)
> {
> lrtdrv_context_t *ctx = (lrtdrv_context_t *) context->dev_private;
> rtdm_lockctx_t s;
>
> ....
>
> rtdm_lock_get_irqsave(&opendev_list_lock, s);
> list_add_tail(&ctx->opendev_entry, &lrtdrv_opendev_list);
> rtdm_lock_put_irqrestore(&opendev_list_lock, s);
Well, if you are not running on a multiprocessor system, you can not
take interrupt during that section.
And on a multiprocessor system, the time this code will hold the
lock is very short, so, it should not be a problem for an interrupt
one core to spin while another core is holding the lock.
But we can probably add rtdm_lock_is_locked, yes.
--
Gilles.
https://click-hack.org
next prev parent reply other threads:[~2015-08-18 12:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-18 12:14 [Xenomai] Function to get state of lock variable Wolfgang Netbal
2015-08-18 12:48 ` Gilles Chanteperdrix [this message]
2015-08-18 13:29 ` Wolfgang Netbal
2015-08-18 20:34 ` Gilles Chanteperdrix
2015-08-24 7:36 ` Jan Kiszka
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=20150818124805.GB4740@hermes.click-hack.org \
--to=gilles.chanteperdrix@xenomai.org \
--cc=wolfgang.netbal@sigmatek.at \
--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.