summaryrefslogtreecommitdiff
path: root/service_solahart_jakarta_selatan__082122541663/system_call_mechanism.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'service_solahart_jakarta_selatan__082122541663/system_call_mechanism.mdwn')
-rw-r--r--service_solahart_jakarta_selatan__082122541663/system_call_mechanism.mdwn56
1 files changed, 56 insertions, 0 deletions
diff --git a/service_solahart_jakarta_selatan__082122541663/system_call_mechanism.mdwn b/service_solahart_jakarta_selatan__082122541663/system_call_mechanism.mdwn
new file mode 100644
index 00000000..68418097
--- /dev/null
+++ b/service_solahart_jakarta_selatan__082122541663/system_call_mechanism.mdwn
@@ -0,0 +1,56 @@
+[[!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