summaryrefslogtreecommitdiff
path: root/open_issues/system_call_mechanism.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'open_issues/system_call_mechanism.mdwn')
-rw-r--r--open_issues/system_call_mechanism.mdwn56
1 files changed, 0 insertions, 56 deletions
diff --git a/open_issues/system_call_mechanism.mdwn b/open_issues/system_call_mechanism.mdwn
deleted file mode 100644
index 68418097..00000000
--- a/open_issues/system_call_mechanism.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-[[!meta copyright="Copyright © 2011, 2012 Free Software Foundation, Inc."]]
-
-[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled [[GNU Free Documentation
-License|/fdl]]."]]"""]]
-
-[[!tag open_issue_gnumach]]
-
-[[!toc]]
-
-
-# IRC, freenode, #hurd, 2011-05-07
-
- <braunr> very simple examples: system calls use old call gates, which are
- the slowest path to kernel space
- <braunr> modern processors have dedicated instructions now
-
-
-# IRC, freenode, #hurd, 2012-04-22
-
- <braunr> rah: basically, system calls are slower on mach because they use
- call gates instead of newer sysenter/sysexit
- <youpi> braunr: sysenter/exit is a x86_64 thing
- <braunr> rah: apart from that, the code can't get much simpler, and *I*
- know, for i have studied it, and wrote a compatible version in a clone
- attempt
- <youpi> braunr: on a x86_64 port we'd probably use sysenter/exit
- <braunr> youpi: no there are 32-bits instructions, i don't remember if
- they're called sysenter, it's in my thesis though so i'm sure of it :)
- <youpi> braunr: ah, the other part
- <youpi> is linux-x86 using them?
- <braunr> youpi: yes, glibc uses them
- <youpi> and does it really change much nowadays?
- <youpi> what is the actual difference between int 80 and sysenter?
- <braunr> less checking
- <youpi> checking what?
- <youpi> the idt?
- <braunr> ring levels for example
- <youpi> well, checking a ring is fast :)
- <braunr> depending on the original and requested levels, there are lookups
- in tables
- <braunr> sysenter always assume 3 to 0 and 0 to 3 for sysexit
- <youpi> ah, also it assumes things about segments
- <youpi> so that indeed makes context things simpler
- <braunr> right
- <braunr> but mach doesn't uses int 0x80
- <braunr> it uses an lcall
- <braunr> which is a bit slower from what I could read some time ago
- <braunr> (not sure if it's still relevant)
- <youpi> actually in 64bit mode I had to catch lcall from the invalid
- instruction trap
- <youpi> perhaps it got dropped in 64bit mode