From: Carlos O'Donell <carlos@baldric.uwo.ca>
To: parisc-linux@parisc-linux.org
Subject: [parisc-linux] Generic light-weight syscall.
Date: Fri, 25 Jul 2003 02:37:40 -0400 [thread overview]
Message-ID: <20030725063739.GA13017@systemhalted> (raw)
pa,
Any thoughts about how one should implement some type of lightweight
syscall for our glibc to use?
We already have the makings of a simple system for SET_THREAD_SELF (e.g.
seting cr27, the thread register, from userpsace), and I want to extend
this to:
exchange_and_add (volatile uint32_t *mem, int val)
atomic_add (volatile uint32_t *mem, int val)
compare_and_swap (volatile long int *p, long int oldval, long int newval)
o---> libc
--> exchange_and_add
==> Params into kernel
==> disable interrupts on the current processor
==> take a semaphore to keep other cpu's out
==> do work
==> release semaphore
==> reenable i-bit
--> back into userspace and done.
This _must_ be very very fast, and appear atomic to userspace.
Perhaps adding other pages instead of 0xE0 for set_thread_self might be
the simplest way to do this? The area after the linux gateway page
perhaps? Which seems to be the start of the next 4k page? Would this be
possible? e.g. branch to 0x1000 (not 0x100 which is the current syscall
branch).
c.
next reply other threads:[~2003-07-25 6:39 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-25 6:37 Carlos O'Donell [this message]
2003-07-25 11:37 ` [parisc-linux] Generic light-weight syscall Matthew Wilcox
2003-07-26 17:48 ` Carlos O'Donell
2003-07-26 18:00 ` Carlos O'Donell
2003-07-27 12:27 ` Grant Grundler
2003-07-28 15:57 ` Carlos O'Donell
2003-07-28 17:45 ` Matthew Wilcox
2003-07-28 19:04 ` Carlos O'Donell
2003-07-28 19:14 ` Matthew Wilcox
2003-07-28 21:10 ` Richard Hirst
2003-07-29 17:50 ` Carlos O'Donell
2003-07-29 18:55 ` Grant Grundler
2003-07-29 21:06 ` Richard Hirst
2003-07-29 23:36 ` Carlos O'Donell
2003-07-30 16:37 ` Thibaut VARENE
2003-07-29 23:38 ` Carlos O'Donell
2003-07-29 18:51 ` Grant Grundler
2003-07-27 20:43 ` Michael S.Zick
2003-07-28 20:30 ` Randolph Chung
2003-07-28 20:37 ` Matthew Wilcox
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=20030725063739.GA13017@systemhalted \
--to=carlos@baldric.uwo.ca \
--cc=parisc-linux@parisc-linux.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.