Skip to contentSkip to conversation

a little more documentation in fsys.txt

PATCH In review Ian Wienand 2 participants 3 messages Oct 10, 2003 – Oct 15, 2003 Documentation

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 a little more documentation in fsys.txt

Hi,

Attached is a suggestion for a small addition to fsys.txt about how userspace can use fast system calls.

If people think this is totally wrong, or that something like this might be more appropriate in our WiKi, that's fine.

Thanks,

-i
[email protected]
http://www.gelato.unsw.edu.au

===== Documentation/ia64/fsys.txt 1.5 vs edited =====

Documentation/ia64/fsys.txt +49 -0
@@ -229,3 +229,52 @@
 PSR.bn	Unchanged.  Note: fsys-mode handlers may clear the bit, if needed.
 	Doing so requires clearing PSR.i and PSR.ic as well.
 PSR.ia	Unchanged.  Note: the ia64 linux kernel never sets this bit.
+
+* Using fast system calls
+
+To use fast system calls, userspace applications need simply call
+__kernel_syscall_via_epc().  For example
+
+-- example fgettimeofday() call --
+-- fgettimeofday.S --
+
+#include <asm/asmmacro.h>
+
+GLOBAL_ENTRY(fgettimeofday)
+.prologue
+.save ar.pfs, r11
+mov r11 = ar.pfs
+.body 
+
+mov r2 = 0xa000000000020660;;  // gate address 
+			       // found by inspection of System.map for the 
+			       // __kernel_syscall_via_epc() function.  See
+			       // below for how to do this for real.
+
+mov b7 = r2
+mov r15 = 1087		       // gettimeofday syscall
+;;
+br.call.sptk.many b6 = b7
+;;
+
+.restore sp
+
+mov ar.pfs = r11
+br.ret.sptk.many rp;;	      // return to caller
+END(fgettimeofday)
+
+-- end fgettimeofday.S --
+
+In reality, getting the gate address is accomplished by two extra
+values passed via the ELF auxiliary vector (include/asm-ia64/elf.h)
+
+ o AT_SYSINFO : is the address of __kernel_syscall_via_epc()
+ o AT_SYSINFO_EHDR : is the address of the kernel gate ELF DSO
+
+The ELF DSO is a pre-linked library that is mapped in by the kernel at
+the gate page.  It is a proper ELF shared object so, with a dynamic
+loader that recognises the library, you should be able to make calls to
+the exported functions within it as with any other shared library.
+AT_SYSINFO points into the kernel DSO at the
+__kernel_syscall_via_epc() function for historical reasons (it was
+used before the kernel DSO) and as a convenience.
#1 lore raw
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Ian Wienand

Ian> Hi, Attached is a suggestion for a small addition to fsys.txt Ian> about how userspace can use fast system calls.

Ian> If people think this is totally wrong, or that something like Ian> this might be more appropriate in our WiKi, that's fine.

I like the idea of improving the documentation, but since we're in bug-fix-only mode, I won't be able to apply the patch for now. Please resend when 2.7 is open.

Thanks,

	--david
#2 lore raw
In reply to Ian Wienand
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines · David Mosberger

On Fri, 10 Oct 2003 10:55:54 +1000, Ian Wienand <[email protected]> said:

Ian> Hi, Attached is a suggestion for a small addition to fsys.txt Ian> about how userspace can use fast system calls.

Ian> If people think this is totally wrong, or that something like Ian> this might be more appropriate in our WiKi, that's fine.

David> I like the idea of improving the documentation, but since David> we're in bug-fix-only mode, I won't be able to apply the David> patch for now. Please resend when 2.7 is open.

Actually, it seems silly to discourage documentation improvements. If anything, we should encourage them as 2.6.0 stabilizes (as long as we're talking about updating real documentation, not just munging comments for typos etc.). I checked with Andrew and he seems OK with such updates, so I applied this patch to my tree now.

Thanks,

	--david