summaryrefslogtreecommitdiff
path: root/open_issues
diff options
context:
space:
mode:
Diffstat (limited to 'open_issues')
-rw-r--r--open_issues/binutils.mdwn6
-rw-r--r--open_issues/binutils/log_build.diff14
-rw-r--r--open_issues/binutils/log_install.diff4
-rw-r--r--open_issues/binutils/sum.diff24
-rw-r--r--open_issues/binutils/sum_hurd13
-rw-r--r--open_issues/binutils/sum_linux13
-rw-r--r--open_issues/code_analysis.mdwn5
-rw-r--r--open_issues/dbus.mdwn8
-rw-r--r--open_issues/dde.mdwn23
-rw-r--r--open_issues/dde/13778443
-rw-r--r--open_issues/fakeroot_exit_0.mdwn (renamed from open_issues/fakeroot-tcp_vs_eintr.mdwn)20
-rw-r--r--open_issues/gdb.mdwn6
-rw-r--r--open_issues/gdb/gdbserver.mdwn20
-rw-r--r--open_issues/glibc.mdwn51
-rw-r--r--open_issues/glibc/debian.mdwn26
-rw-r--r--open_issues/glibc/t/tls.mdwn66
-rw-r--r--open_issues/libpthread_pthread_key_create_reuse.mdwn82
-rw-r--r--open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c48
-rw-r--r--open_issues/multithreading.mdwn2
-rw-r--r--open_issues/performance/io_system/binutils_ld_64ksec.mdwn21
-rw-r--r--open_issues/posix_fadv_volatile.mdwn16
-rw-r--r--open_issues/ti-rpc_then_nfs.mdwn20
-rw-r--r--open_issues/translators_set_up_by_untrusted_users.mdwn3
-rw-r--r--open_issues/xen_lseek.mdwn22
-rw-r--r--open_issues/xen_lseek/test-lseek.c17
-rw-r--r--open_issues/xen_lseek/test-mach.c19
26 files changed, 308 insertions, 284 deletions
diff --git a/open_issues/binutils.mdwn b/open_issues/binutils.mdwn
index b86ed607..246e819d 100644
--- a/open_issues/binutils.mdwn
+++ b/open_issues/binutils.mdwn
@@ -30,8 +30,8 @@ though, as explained below.
# Configuration
-Last reviewed up to the [[Git mirror's 066f3707e988b24f8f39d01f105662a814c0979a
-(2011-10-11) sources|source_repositories/binutils]].
+Last reviewed up to the [[Git mirror's e605e0bc9fced128199177fff775851c7e50b4e5
+(2011-10-20) sources|source_repositories/binutils]].
* Globally
@@ -108,7 +108,7 @@ Last reviewed up to the [[Git mirror's 066f3707e988b24f8f39d01f105662a814c0979a
# Build
Here's a log of a binutils build run; this is from our [[Git repository's
-11637a710adc7baea102d0ef5975b7a92b07aea1 (2011-10-11)
+6e78bdc1d64c55962d36ef29d15f06fb2415261b (2011-10-20)
sources|source_repositories/binutils]], run on kepler.SCHWINGE and
coulomb.SCHWINGE.
diff --git a/open_issues/binutils/log_build.diff b/open_issues/binutils/log_build.diff
index 79172cf6..79946f63 100644
--- a/open_issues/binutils/log_build.diff
+++ b/open_issues/binutils/log_build.diff
@@ -1,5 +1,5 @@
---- /dev/fd/63 2011-10-11 14:23:15.275568065 +0200
-+++ /dev/fd/62 2011-10-11 14:23:15.275568065 +0200
+--- /dev/fd/63 2011-10-22 11:44:16.461445903 +0200
++++ /dev/fd/62 2011-10-22 11:44:16.461445903 +0200
@@ -276,12 +276,12 @@
checking for sys/sysinfo.h... yes
checking for machine/hal_sysinfo.h... no
@@ -214,7 +214,7 @@
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
-@@ -2473,7 +2452,7 @@
+@@ -2475,7 +2454,7 @@
checking for BSD- or MS-compatible name lister (nm)... nm
checking the name lister (nm) interface... BSD nm
checking whether ln -s works... yes
@@ -223,7 +223,7 @@
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... no
checking for ld option to reload object files... -r
-@@ -2494,7 +2473,7 @@
+@@ -2496,7 +2475,7 @@
checking if gcc-4.6 supports -c -o file.o... (cached) yes
checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
@@ -232,7 +232,7 @@
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
-@@ -2510,7 +2489,7 @@
+@@ -2512,7 +2491,7 @@
checking if g++-4.6 supports -c -o file.o... yes
checking if g++-4.6 supports -c -o file.o... (cached) yes
checking whether the g++-4.6 linker (ld) supports shared libraries... yes
@@ -241,7 +241,7 @@
checking how to hardcode library paths into programs... immediate
checking whether NLS is requested... yes
checking for catalogs to be installed... bg da es fi fr ga id ja sv tr vi zh_CN zh_TW
-@@ -2590,13 +2569,13 @@
+@@ -2592,13 +2571,13 @@
/bin/dash ../../master/ld/../ylwrap ../../master/ld/ldgram.y y.tab.c ldgram.c y.tab.h ldgram.h y.output ldgram.output -- bison -y -d
updating ldgram.h
(echo "/* This file is automatically generated. DO NOT EDIT! */";\
@@ -257,7 +257,7 @@
| sed -e 's/ e/ ld/g' -e 's/ ld/ /g' -e 's/[.]o//g'`; do \
echo " &ld_${f}_emulation, \\"; \
done;\
-@@ -2710,17 +2689,11 @@
+@@ -2712,17 +2691,11 @@
gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/ld -I. -I../../master/ld -I../bfd -I../../master/ld/../bfd -I../../master/ld/../include -g -O2 -DENABLE_PLUGINS -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT plugin.o -MD -MP -MF .deps/plugin.Tpo -c -o plugin.o ../../master/ld/plugin.c
mv -f .deps/plugin.Tpo .deps/plugin.Po
cp ../../master/ld/emultempl/astring.sed stringify.sed
diff --git a/open_issues/binutils/log_install.diff b/open_issues/binutils/log_install.diff
index 27dff188..100ebf5c 100644
--- a/open_issues/binutils/log_install.diff
+++ b/open_issues/binutils/log_install.diff
@@ -1,5 +1,5 @@
---- /dev/fd/63 2011-10-11 14:23:22.899444227 +0200
-+++ /dev/fd/62 2011-10-11 14:23:22.903444162 +0200
+--- /dev/fd/63 2011-10-22 11:44:48.780903894 +0200
++++ /dev/fd/62 2011-10-22 11:44:48.780903894 +0200
@@ -68,7 +68,6 @@
libtool: install: /usr/bin/install -c .libs/libbfd.a [...]/hurd/master.build.install/lib/libbfd.a
libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libbfd.a
diff --git a/open_issues/binutils/sum.diff b/open_issues/binutils/sum.diff
index a466b82c..0c612411 100644
--- a/open_issues/binutils/sum.diff
+++ b/open_issues/binutils/sum.diff
@@ -1,9 +1,9 @@
---- open_issues/binutils/sum_linux 2011-10-11 14:23:39.000000000 +0200
-+++ open_issues/binutils/sum_hurd 2011-10-11 14:23:33.000000000 +0200
+--- open_issues/binutils/sum_linux 2011-10-22 11:49:33.000000000 +0200
++++ open_issues/binutils/sum_hurd 2011-10-22 11:23:09.000000000 +0200
@@ -1,5 +1,5 @@
--Test Run By thomas on Tue Oct 11 14:12:56 2011
+-Test Run By thomas on Sat Oct 22 11:43:32 2011
-Native configuration is i686-pc-linux-gnu
-+Test Run By thomas on Tue Oct 11 13:36:51 2011
++Test Run By thomas on Fri Oct 21 12:54:58 2011
+Native configuration is i686-unknown-gnu0.3
=== binutils tests ===
@@ -12,9 +12,9 @@
# of expected passes 90
# of unsupported tests 3
--Test Run By thomas on Tue Oct 11 14:13:19 2011
+-Test Run By thomas on Sat Oct 22 11:43:59 2011
-Native configuration is i686-pc-linux-gnu
-+Test Run By thomas on Tue Oct 11 13:38:54 2011
++Test Run By thomas on Fri Oct 21 12:56:51 2011
+Native configuration is i686-unknown-gnu0.3
=== ld tests ===
@@ -60,20 +60,20 @@
PASS: ELF DSO small bar (size)
PASS: ELF DSO foo with small bar (size)
PASS: ELF DSO big bar (size)
-@@ -939,13 +939,13 @@ Running [...]/hurd/master/ld/testsuite/l
+@@ -940,13 +940,13 @@ Running [...]/hurd/master/ld/testsuite/l
=== ld Summary ===
--# of expected passes 671
+-# of expected passes 672
-# of expected failures 8
-+# of expected passes 661
++# of expected passes 662
+# of expected failures 18
# of untested testcases 6
- [...]/hurd/master.build/ld/ld-new 2.22.51.20111011
+ [...]/hurd/master.build/ld/ld-new 2.22.51.20111021
--Test Run By thomas on Tue Oct 11 14:13:02 2011
+-Test Run By thomas on Sat Oct 22 11:43:38 2011
-Native configuration is i686-pc-linux-gnu
-+Test Run By thomas on Tue Oct 11 13:37:18 2011
++Test Run By thomas on Fri Oct 21 12:55:21 2011
+Native configuration is i686-unknown-gnu0.3
=== gas tests ===
diff --git a/open_issues/binutils/sum_hurd b/open_issues/binutils/sum_hurd
index 7d12b17f..31f8f997 100644
--- a/open_issues/binutils/sum_hurd
+++ b/open_issues/binutils/sum_hurd
@@ -1,4 +1,4 @@
-Test Run By thomas on Tue Oct 11 13:36:51 2011
+Test Run By thomas on Fri Oct 21 12:54:58 2011
Native configuration is i686-unknown-gnu0.3
=== binutils tests ===
@@ -122,7 +122,7 @@ Running [...]/hurd/master/binutils/testsuite/binutils-all/x86-64/x86-64.exp ...
# of expected passes 90
# of unsupported tests 3
-Test Run By thomas on Tue Oct 11 13:38:54 2011
+Test Run By thomas on Fri Oct 21 12:56:51 2011
Native configuration is i686-unknown-gnu0.3
=== ld tests ===
@@ -625,6 +625,7 @@ PASS: Check --gc-section/-r/-u
PASS: --gc-sections -r without -e
PASS: --gc-sections with note section
PASS: --gc-sections with __start_
+PASS: --gc-sections with __gxx_personality
PASS: --gc-sections with shared library
Running [...]/hurd/master/ld/testsuite/ld-h8300/h8300.exp ...
Running [...]/hurd/master/ld/testsuite/ld-i386/i386.exp ...
@@ -939,12 +940,12 @@ Running [...]/hurd/master/ld/testsuite/ld-xtensa/xtensa.exp ...
=== ld Summary ===
-# of expected passes 661
+# of expected passes 662
# of expected failures 18
# of untested testcases 6
-[...]/hurd/master.build/ld/ld-new 2.22.51.20111011
+[...]/hurd/master.build/ld/ld-new 2.22.51.20111021
-Test Run By thomas on Tue Oct 11 13:37:18 2011
+Test Run By thomas on Fri Oct 21 12:55:21 2011
Native configuration is i686-unknown-gnu0.3
=== gas tests ===
@@ -1416,5 +1417,5 @@ Running [...]/hurd/master/gas/testsuite/gas/z8k/z8k.exp ...
=== gas Summary ===
# of expected passes 346
-../as-new 2.22.51.20111011
+../as-new 2.22.51.20111021
diff --git a/open_issues/binutils/sum_linux b/open_issues/binutils/sum_linux
index f765b983..09c11722 100644
--- a/open_issues/binutils/sum_linux
+++ b/open_issues/binutils/sum_linux
@@ -1,4 +1,4 @@
-Test Run By thomas on Tue Oct 11 14:12:56 2011
+Test Run By thomas on Sat Oct 22 11:43:32 2011
Native configuration is i686-pc-linux-gnu
=== binutils tests ===
@@ -122,7 +122,7 @@ Running [...]/hurd/master/binutils/testsuite/binutils-all/x86-64/x86-64.exp ...
# of expected passes 90
# of unsupported tests 3
-Test Run By thomas on Tue Oct 11 14:13:19 2011
+Test Run By thomas on Sat Oct 22 11:43:59 2011
Native configuration is i686-pc-linux-gnu
=== ld tests ===
@@ -625,6 +625,7 @@ PASS: Check --gc-section/-r/-u
PASS: --gc-sections -r without -e
PASS: --gc-sections with note section
PASS: --gc-sections with __start_
+PASS: --gc-sections with __gxx_personality
PASS: --gc-sections with shared library
Running [...]/hurd/master/ld/testsuite/ld-h8300/h8300.exp ...
Running [...]/hurd/master/ld/testsuite/ld-i386/i386.exp ...
@@ -939,12 +940,12 @@ Running [...]/hurd/master/ld/testsuite/ld-xtensa/xtensa.exp ...
=== ld Summary ===
-# of expected passes 671
+# of expected passes 672
# of expected failures 8
# of untested testcases 6
-[...]/hurd/master.build/ld/ld-new 2.22.51.20111011
+[...]/hurd/master.build/ld/ld-new 2.22.51.20111021
-Test Run By thomas on Tue Oct 11 14:13:02 2011
+Test Run By thomas on Sat Oct 22 11:43:38 2011
Native configuration is i686-pc-linux-gnu
=== gas tests ===
@@ -1416,5 +1417,5 @@ Running [...]/hurd/master/gas/testsuite/gas/z8k/z8k.exp ...
=== gas Summary ===
# of expected passes 346
-../as-new 2.22.51.20111011
+../as-new 2.22.51.20111021
diff --git a/open_issues/code_analysis.mdwn b/open_issues/code_analysis.mdwn
index bb74d958..d776d81a 100644
--- a/open_issues/code_analysis.mdwn
+++ b/open_issues/code_analysis.mdwn
@@ -36,6 +36,11 @@ There is a [[!FF_project 276]][[!tag bounty]] on some of these tasks.
specifiers, and have it emit useful warnings in case these are pointing
to uninitialized data (for *in* only).
+ * [[Port Sequence Numbers|microkernel/mach/ipc/sequence_numbering]]. If
+ these are used, care must be taken to update them reliably, [[!message-id
+ "1123688017.3905.22.camel@buko.sinrega.org"]]. This could be checked by a
+ static analysis tool.
+
* [Static Source Code Analysis Tools for C](http://spinroot.com/static/)
* [[!wikipedia List_of_tools_for_static_code_analysis]]
diff --git a/open_issues/dbus.mdwn b/open_issues/dbus.mdwn
index ec39e063..2f02579e 100644
--- a/open_issues/dbus.mdwn
+++ b/open_issues/dbus.mdwn
@@ -8,6 +8,14 @@ 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_hurd]]
+
+The dbus problems are due to missing scm credentials [[sendmsg_scm_creds]] and socket credentials
+[[pflocal_socket_credentials_for_local_sockets]]. There was also a problem with short timeout in
+[[select]], but that has been solved in Debian by setting a minimum timeout of 1ms.
+
+---
+
IRC, freenode, #hurd, 2011-11-26:
<antrik> BTW, how much effort is necessary to fix dbus?
diff --git a/open_issues/dde.mdwn b/open_issues/dde.mdwn
index 9e2ec742..e2cff94f 100644
--- a/open_issues/dde.mdwn
+++ b/open_issues/dde.mdwn
@@ -8,25 +8,8 @@ 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]]."]]"""]]
-[[General Information|/dde]].
-
-
-# IRC, freenode, #hurd, 2011-10-18
+[[!tag open_issue_hurd open_issue_gnumach]]
-[[!tag open_issue_hurd]]
-
- [DDE crash, or similar]
- <youpi> it's fake_local_irq_disable_flags(), then raw_local_irq_disable(),
- then raw_local_irq_restore(), which *does not* release the cli_lock
- <youpi> the "prove it" comment is (as I expected) completely wrong
- <youpi> npnth: http://paste.debian.net/137784/
-
-[[137784]]
+[[General Information|/dde]].
- <youpi> could you try this patch ?
- <youpi> (I've not even tried to build it)
- <npnth> youpi: speaking of which, it still seems to hang :/ I'll 1) double
- check it applied correctly and 2) get a gdb output if it did
- <youpi> npnth: could you add printing the value of unlock_refcnt?
- <youpi> so we can check what's happening
- <npnth> unlock_refcnt is at 0, interesting
+Still waiting for interface finalization and proper integration.
diff --git a/open_issues/dde/137784 b/open_issues/dde/137784
deleted file mode 100644
index 1529465b..00000000
--- a/open_issues/dde/137784
+++ /dev/null
@@ -1,43 +0,0 @@
-diff --git a/libdde_linux26/lib/src/arch/l4/cli_sti.c b/libdde_linux26/lib/src/arch/l4/cli_sti.c
-index 051f259..6a8c460 100644
---- a/libdde_linux26/lib/src/arch/l4/cli_sti.c
-+++ b/libdde_linux26/lib/src/arch/l4/cli_sti.c
-@@ -4,6 +4,8 @@
-
- /* IRQ lock reference counter */
- static atomic_t _refcnt = ATOMIC_INIT(0);
-+/* Refcnt value at which unlocking the cli_lock (it's not always 0) */
-+static int unlock_refcnt;
- static ddekit_lock_t cli_lock;
-
- /* Check whether IRQs are currently disabled.
-@@ -57,9 +59,6 @@ void fake_local_irq_restore(unsigned long flags)
- /* Store the current flags state.
- *
- * This is done by returning the current refcnt.
-- *
-- * XXX: Up to now, flags was always 0 at this point and
-- * I assume that this is always the case. Prove?
- */
- unsigned long __raw_local_save_flags(void)
- {
-@@ -82,7 +81,7 @@ void raw_local_irq_restore(unsigned long flags)
- {
- Assert(cli_lock != NULL);
- atomic_set(&_refcnt, flags);
-- if (flags == 0)
-+ if (flags == unlock_refcnt)
- ddekit_lock_unlock(&cli_lock);
- }
-
-@@ -95,7 +94,9 @@ void raw_local_irq_disable(void)
- if (cli_lock == NULL)
- ddekit_lock_init_unlocked(&cli_lock);
-
-- nested_lock(cli_lock);
-+ if (nested_lock(cli_lock))
-+ /* Tell the corresponding restorer to release cli_lock */
-+ unlock_refcnt = atomic_read(&_refcnt);
- atomic_inc(&_refcnt);
- }
-
diff --git a/open_issues/fakeroot-tcp_vs_eintr.mdwn b/open_issues/fakeroot_exit_0.mdwn
index 36707cd2..c6075b17 100644
--- a/open_issues/fakeroot-tcp_vs_eintr.mdwn
+++ b/open_issues/fakeroot_exit_0.mdwn
@@ -8,23 +8,8 @@ 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]]."]]"""]]
-[[!toc]]
-
-
-# [[!debbug 641200]]
-
-[[!message-id "87litvz9me.fsf@kepler.schwinge.homeip.net"]]
-
+ $ fakeroot ./scripts/mkinstalldirs /media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/debian/tmp-libc/usr/include
[...]
- if test -z "$*"; then
- FAKEROOTKEY=$FAKEROOTKEY LD_LIBRARY_PATH="$PATHS" LD_PRELOAD="$LIB" ${SHELL:-/bin/sh}
- RESULT=$?
- else
- FAKEROOTKEY=$FAKEROOTKEY LD_LIBRARY_PATH="$PATHS" LD_PRELOAD="$LIB" "$@"
- RESULT=$?
- fi
- + test -z './scripts/mkinstalldirs /media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/debian/tmp-libc/usr/include'
- + FAKEROOTKEY=2040
+ LD_LIBRARY_PATH=/usr/lib/libfakeroot:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot
+ LD_PRELOAD=libfakeroot-tcp.so
+ ./scripts/mkinstalldirs /media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/debian/tmp-libc/usr/include
@@ -36,8 +21,7 @@ License|/fdl]]."]]"""]]
kill -s HUP 23612
+ kill -s HUP 23612
-
-## `exit(1)`
+(The `EINTR` issue has been [[!debbug desc="fixed" 641200]].)
`connect() < 0` invokes `fail()` which invokes `exit(1)`. Not yet figured out
why the process exits 0 dispite that. `LD_PRELOAD` issue? ([[!taglink
diff --git a/open_issues/gdb.mdwn b/open_issues/gdb.mdwn
index 8821762e..0aec12e3 100644
--- a/open_issues/gdb.mdwn
+++ b/open_issues/gdb.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010, 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
@@ -49,6 +49,8 @@ Last reviewed up to the [[Git mirror's 09ddc54333cdbc2f695fd83cbf091a7d5a1c3604
* glibc-tdep et al. also for GNU/Hurd?
+ * [[gdbserver]]
+
# Build
diff --git a/open_issues/gdb/gdbserver.mdwn b/open_issues/gdb/gdbserver.mdwn
new file mode 100644
index 00000000..fe239bbc
--- /dev/null
+++ b/open_issues/gdb/gdbserver.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 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_gdb]]
+
+Needs porting. Can probably use/share most code from GDB proper.
+
+# Miscellaneous Issues
+
+ * ``m addr,length'`
+
+ What is `errno`? Is is *the* `errno`? If yes, of the system GDB is
+ running on, or the system gdbserver is running on? Clarify documentation.
diff --git a/open_issues/glibc.mdwn b/open_issues/glibc.mdwn
index d3f88673..e8279139 100644
--- a/open_issues/glibc.mdwn
+++ b/open_issues/glibc.mdwn
@@ -27,8 +27,17 @@ Here's what's to be done for maintaining glibc.
# Configuration
-Last reviewed up to the [[Git mirror's 187da0aedcd9d0a2fb34477bef41549681ba1273
-(2011-10-08) sources|source_repositories/glibc]].
+<!--
+
+git checkout reviewed
+git log --reverse --pretty=fuller --stat=$COLUMNS,$COLUMNS -p -C --cc ..sourceware/master
+-i
+/^commit |^---$|hurd|linux|gs:|__ASSUME
+
+-->
+
+Last reviewed up to the [[Git mirror's 9d65ea3a9b83ac3961229ba296a7caf90abce68d
+(2011-11-17) sources|source_repositories/glibc]].
* t/dup3
@@ -53,13 +62,9 @@ Last reviewed up to the [[Git mirror's 187da0aedcd9d0a2fb34477bef41549681ba1273
$ git log --reverse --pretty=fuller --stat=$COLUMNS,$COLUMNS -p -C --cc -S__ASSUME_ top-bases/t/kernel-features.h_includes..baseline
- * t/tls
-
- * Discuss d2431f633e6139a62e1575ec18830f7e81160cf0 with Samuel.
+ * [[`t/tls`|t/tls]]
- * `TLS_INIT_TP_EXPENSIVE` is unused; Hurd def. can be removed.
-
- * [[t/tls-threadvar]]
+ * [[`t/tls-threadvar`|t/tls-threadvar]]
* t/verify.h
@@ -156,7 +161,8 @@ Last reviewed up to the [[Git mirror's 187da0aedcd9d0a2fb34477bef41549681ba1273
`PTRACE_*` (for example, cbff0d9689c4d68578b6a4f0a17807232506ea27),
`RLIMIT_RTTIME`, `SEEK_DATA` (`unistd.h`), `SEEK_HOLE` (`unistd.h`)
`clock_adjtime`, `fallocate`, `fallocate64`, `getcontext` (and
- `setcontext`), `name_to_handle_at`, `open_by_handle_at`, `sendmmsg`,
+ `setcontext`), `name_to_handle_at`, `open_by_handle_at`,
+ `process_vm_readv`, `process_vm_writev`, `sendmmsg`,
`setns`, `sync_file_range`
* `syncfs`
@@ -194,6 +200,14 @@ Last reviewed up to the [[Git mirror's 187da0aedcd9d0a2fb34477bef41549681ba1273
Need changes equivalent to c55fbd1ea768f9fdef34a01377702c0d72cbc213 +
14d96785125abee5e9a49a1c3037f35a581750bd.
+ * `madvise`, `MADV_DONTNEED`
+
+ [[glibc_madvise_vs_static_linking]].
+
+ * `msync`
+
+ Then define `_POSIX_MAPPED_FILES`, `_POSIX_SYNCHRONIZED_IO`.
+
* Create `t/cleanup_kernel-features.h`.
* Add tests from Linux kernel commit messages for `t/dup3` et al.
@@ -366,12 +380,23 @@ Last reviewed up to the [[Git mirror's 187da0aedcd9d0a2fb34477bef41549681ba1273
* a7c8e6a1478de9f990b11e5e853318ccbe4330f2 (`Fix invalid conversion in
__cmsg_nxthdr`). Probably just a C++ thing and not relevant for us;
see [[message-id "87r52nk1kx.fsf@kepler.schwinge.homeip.net"]].
+ * [high] `__ctype_init`, fd5bdc0924e0cfd1688b632068c1b26f3b0c88da.
+ Probably need to mirror `init-first.c` change.
+ * [high] `__attribute__ ((__leaf__))`, `BZ #13344`,
+ aa78043a4aafe5db1a1a76d544a833b63b4c5f5c +
+ 49a43d80ec5c97cf6136b1ee2687414773b2d5aa +
+ 3871f58f065dac3917eb18220a479e9591769c8c +
+ 9beb2334930db81ceada5aa6051fe5ac0554db32 +
+ 0ffc4f3ebaace42cd545db55a2ac50b6e0cc7d89 +
+ edc5984d4d18296d7aa3d8f4ed8f7336a743170e +
+ 57769839788e2c62b68d9dfbf4b35052321278ba.
+ <http://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Function-Attributes.html>.
# Build
Here's a log of a glibc build run; this is from our [[Git repository's
-0abded0927c62f02399658395837917548d5e281 (2011-10-14)
+d740cf9d201dc9ecb0335b0a585828dea9cce793 (2011-10-25)
sources|source_repositories/glibc]], run on coulomb.SCHWINGE.
$ export LC_ALL=C
@@ -383,7 +408,7 @@ sources|source_repositories/glibc]], run on coulomb.SCHWINGE.
This takes up around 400 MiB and needs roughly 120 min on coulomb.SCHWINGE.
<!--
- $ (make install_root=/INVALID && touch .go-check) 2>&1 | tee log_build_ && test -f .go-check && make -k install_root=/INVALID check TIMEOUTFACTOR=100 2>&1 | tee log_check
+ $ (make install_root=/INVALID && touch .go-install) 2>&1 | tee log_build_ && test -f .go-install && (make install_root="$PWD".install install && touch .go-check) 2>&1 | tee log_install && test -f .go-check && make -k install_root=/INVALID check TIMEOUTFACTOR=100 2>&1 | tee log_check
$ find ./ -name \*.o -o -name \*.os -o -name \*.oS | while read f; do ~/tmp/gcc/git/contrib/compare-debug --preserve ../Roger_Whittaker.build-gcc-4.4-486.O/"$f" "$f"; done 2>&1 | less
$ while read f; do (readelf -a "$f" && objdump -xDrtw "$f") > N && (cd ../Roger_Whittaker.build-gcc-4.4-486.O/ && readelf -a "$f" && objdump -xDrtw "$f") > O && diff -u O N | less; done
$ find ./ -name \*.o -o -name \*.os -o -name \*.oS | while read f; do readelf -h "$f" | grep OS/ABI | (read a b && [ x"$b" != x'UNIX - System V' ] && echo "### $f: $b"); done
@@ -401,7 +426,7 @@ TODO.
TODO.
<!--
- $ make install 2>&1 | tee log_install
+ $ make install_root="$PWD".install install 2>&1 | tee log_install
[...]
This takes up around 50 MiB, and needs roughly 1 min on kepler.SCHWINGE and 3
@@ -539,6 +564,8 @@ There is quite a baseline of failures.
* `elf/tst-unique3lib.so`, `elf/tst-unique3lib2.so`, `elf/tst-unique4lib.so`
+ Only with GCC 4.4; no longer with 4.5 or 4.6:
+
/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486/elf/tst-unique3lib.os:(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
diff --git a/open_issues/glibc/debian.mdwn b/open_issues/glibc/debian.mdwn
index ce6ba9d2..331632f3 100644
--- a/open_issues/glibc/debian.mdwn
+++ b/open_issues/glibc/debian.mdwn
@@ -37,10 +37,28 @@ fail. (Same for `libc6-dev_extra_pkg_install` in `debian/sysdeps/i386.mk`, for
example.) Why is this special handling only done for `xen`, but not for
`i686`?
+> Samuel: Historically because it's done that way in linux-i386. I don't know
+> the real reason.
+
Do `export LC_ALL=C` before building, otherwise the testsuite/make error
messages will be different from those stored in the
-`debian/testsuite-checking/expected-results-*` files.
+`debian/testsuite-checking/expected-results-*` files, resulting in a spurious
+build failure.
+
+Run `debian/rules build-arch DEB_BUILD_OPTIONS=parallel=2 [EGLIBC_PASSES=...]`
+to build (or `build` instead of `build-arch` to build the arch-independent
+stuff, too). Can interrupt with `C-c` during locale stuff or testsuite if only
+interested in the build tree.
+
+Run `fakeroot debian/rules binary DEB_BUILD_OPTIONS=parallel=2
+[EGLIBC_PASSES=...]` to build Debian packages or `binary-arch` for just the
+architecture-dependent ones.
+
+The latter two steps can also be combined as `dpkg-buildpackage -R'debian/rules
+EGLIBC_PASSES=libc' -nc -b -uc`. `-nc` will prevent the *clean step* which
+would first try to un-patch, which may conflict if you have done any edits
+apter applying patches.
-Run `debian/rules build-arch DEB_BUILD_OPTIONS=parallel=2 [EGLIBC_PASSES=...]`.
-Can stop with `C-c` during locale stuff or testsuite if only interested in the
-build tree.
+If the Debian symbol versioning file is not up to date and the build of Debian
+packages fails due to this, putting `DPKG_GENSYMBOLS_CHECK_LEVEL=0` in the
+environment \`\`helps''; see `man dpkg-gensymbols`.
diff --git a/open_issues/glibc/t/tls.mdwn b/open_issues/glibc/t/tls.mdwn
new file mode 100644
index 00000000..14ef36e4
--- /dev/null
+++ b/open_issues/glibc/t/tls.mdwn
@@ -0,0 +1,66 @@
+[[!meta copyright="Copyright © 2011 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_glibc open_issue_libpthread]]
+
+# To Do
+
+ * Discuss d2431f633e6139a62e1575ec18830f7e81160cf0 with Samuel.
+
+ * `TLS_INIT_TP_EXPENSIVE` is unused; Hurd def. can be removed.
+
+
+# Documentation
+
+[[!taglink open_issue_documentation]]
+
+ * IRC, freenode, #hurd, 2011-11-26
+
+ <tschwinge> In glibc multiarch support (strcasecmp for i686 SSE3, etc.)
+ there is access to memory via gs: -- this will need to be changed for
+ us, right?
+ <youpi> depends on the access
+ <tschwinge> * `optimized strcasecmp and strncasecmp for x86-32`
+ (multiarch),
+ <tschwinge> 76e3966e9efc3808a9e7ad09121c5dfc1211c20b +
+ <tschwinge> 6abf346582ba678f4850a88b4a5950593841df1d +
+ <tschwinge> 5583a0862cf94f71cbcde91c4043a20af65facca. `gs`
+ access.
+ <youpi> + movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax
+ <youpi> that's handled by the linker fine
+ <youpi> it's only the things held in the tcb_t structure which can pose
+ problem
+ <tschwinge> tcbhead_t?
+ <tschwinge> I'm looking at this.
+ <tschwinge> So, at gs:0, there is the TCB.
+ <tschwinge> And we have the same layout as NPTL/Linux, just that we
+ don't have as much data there as they have.
+ <tschwinge> We're missing multiple_threads, sysinfo, sttack_guard,
+ pointer_guard, gscope_flag, private_futex, __private_tm[5].
+ <tschwinge> So, if one of these is referenced (be it my name or by
+ numeric offset), this is invalid for us.
+ <tschwinge> Anything else should work equivalently.
+ <youpi> yes
+ <youpi> usually the only numeric offset being used is 0
+ <youpi> so it would simply not build
+ <tschwinge> And the other offsers are generated via tcb-offsets.sym.
+ <tschwinge> glibc's elf/stackguard-macros.h is wrong for us (but not
+ used anywhere apart from elf/tst-stackguard1.c, I think).
+ <tschwinge> __thread __locale_t __libc_tsd_LOCALE = &_nl_global_locale;
+ -- this means that a __libc_tsd_LOCALE values will be in the TLS
+ segment, and this is what is being accessed from the assembler code
+ with %gs:__libc_tsd_LOCALE@NTPOFF, and the linker will resolve this.
+ <youpi> yes
+ <youpi> see in the nm output, the libc_tsd symbols
+ <youpi> these provide the offsets
+ <tschwinge> youpi: Thank you, I'm now understanding this part of TLS
+ much better.
+ <youpi> have you had a look at the tls.pdf from Uli ?
+ <youpi> all the gory details are there :)
diff --git a/open_issues/libpthread_pthread_key_create_reuse.mdwn b/open_issues/libpthread_pthread_key_create_reuse.mdwn
deleted file mode 100644
index ca2da2f5..00000000
--- a/open_issues/libpthread_pthread_key_create_reuse.mdwn
+++ /dev/null
@@ -1,82 +0,0 @@
-[[!meta copyright="Copyright © 2011 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]]."]]"""]]
-
-[[!meta title="libpthread: pthread_key_create, reuse"]]
-
-[[!tag open_issue_libpthread]]
-
-IRC, FreeNode, #hurd, 2011-07-02:
-
- < pinotree> hm, maybe i found a libpthread bug
- * pinotree tries a testcase
- < pinotree> yesssss, found the bug :)
- < pinotree> youpi: it's a problem of the key reuse in pthread_key_create()
- < youpi> it doesn't reset it?
- < youpi> were you looking at the licq issue?
- < pinotree> no, gtest
- < youpi> k
- < youpi> licq has a failing threadspecific issue
- < youpi> [ FAILED ] ThreadSpecificData.dataDeletedWhenThreadExits
- < pinotree> basically, pthread_key_delete() does not delete the key values
- from the "thread_specifics" ihash
- < pinotree> but those were new keys, so i'm not sure it is allowed to
- return values of previous keys?
- < pinotree> after all, the actual key value is an implementation detail,
- applications shouldn't care about it being reused
- < pinotree> (imho)
- < youpi> Upon key creation, the value NULL shall be associated with the new
- key in all active threads.
- < youpi> ok, so we have to clear it in all threads
- < youpi> that's a pity
- < pinotree> or just remove the entry from the hash on key removal
- < youpi> pinotree: from all the hashes, you mean?
- < pinotree> youpi: from how i see it, adding a snippet like
- http://paste.debian.net/121690/ in pthread_key_delete() should do the job
- < youpi> that only drops from the current thread
- < pinotree> ah hm, other threads
- < youpi> we need to drop from all threads
- < youpi> that's the pity part
- < pinotree> youpi: the licq case could look like a similar issue, at a
- veeery quick glance
-
-Test program: [[pthread_key_create_reuse.c]]
-
-
-2011-11-01:
-
- <pinotree> youpi: about the bug with pthread keys (reuse): would be an
- acceptable solution having a mutex for the thread_specifics of each
- thread?
- <youpi> you mean one per thread, one global, or one per key, or ?
- <youpi> what is it supposed to protect?
- <pinotree> the thread_specifics of each thread
- <youpi> pinotree: but against what?
- <pinotree> the idea would be: when destroying a key, iterate over all the
- exiting threads and remove the key data from the thread_specifics of each
- thread
- <youpi> one of the issue is getting to browse through the whole list of
- threads
- <youpi> the other is concurrency between that, and a thread dying
- <pinotree> there's the __pthread_threads_lock rwlock
- <youpi> it should be enough to keep it locked during the iteration
- <pinotree> but that wouldn't be enough when one thread is destroying a key,
- and another one is doing {get,set}specific() on that key
- <youpi> that's not supposed to happen
- <pinotree> mmm
- <youpi> “The effect of calling pthread_getspecific() or
- pthread_setspecific() with a key value not obtained from
- pthread_key_create() or after key has been deleted with
- pthread_key_delete() is undefined.”
- <youpi> undefined -> you are allowed to just blow up
- <pinotree> but it's not been deleted yet... :)
- <youpi> it could be, just a matter of time
- <youpi> you're not supposed to rely on time-luckyness :)
- <pinotree> mmm
- <pinotree> bah, you've convinced me ( :) )
diff --git a/open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c b/open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c
deleted file mode 100644
index f7f5874e..00000000
--- a/open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <assert.h>
-
-#define DEBUG
-
-void del(void *x __attribute__((unused)))
-{
-}
-
-void work(int val)
-{
- pthread_key_t key1;
- pthread_key_t key2;
-
-#ifdef DEBUG
- printf("work/%d: start\n", val);
-#endif
- assert(pthread_key_create(&key1, &del) == 0);
- assert(pthread_key_create(&key2, &del) == 0);
-#ifdef DEBUG
- printf("work/%d: pre-setspecific: %p,%p\n", val, pthread_getspecific(key1), pthread_getspecific(key2));
-#else
- assert(pthread_getspecific(key1) == NULL);
- assert(pthread_getspecific(key2) == NULL);
-#endif
- assert(pthread_setspecific(key1, (void *)(0x100 + val)) == 0);
- assert(pthread_setspecific(key2, (void *)(0x200 + val)) == 0);
-#ifdef DEBUG
- printf("work/%d: post-setspecific: %p,%p\n", val, pthread_getspecific(key1), pthread_getspecific(key2));
-#else
- assert(pthread_getspecific(key1) == (void *)(0x100 + val));
- assert(pthread_getspecific(key2) == (void *)(0x200 + val));
-#endif
- assert(pthread_key_delete(key1) == 0);
- assert(pthread_key_delete(key2) == 0);
-}
-
-int main()
-{
- int i;
-
- for (i = 0; i < 8; ++i) {
- work(i + 1);
- }
-
- return 0;
-}
diff --git a/open_issues/multithreading.mdwn b/open_issues/multithreading.mdwn
index 1fc2c318..0f6b9f19 100644
--- a/open_issues/multithreading.mdwn
+++ b/open_issues/multithreading.mdwn
@@ -24,7 +24,7 @@ Hurd servers / VFS libraries are multithreaded.
# Design
-Roughly using one thread per
+See [[hurd/libports]]: roughly using one thread per
incoming request. This is not the best approach: it doesn't really make sense
to scale the number of worker threads with the number of incoming requests, but
instead they should be scaled according to the backends' characteristics.
diff --git a/open_issues/performance/io_system/binutils_ld_64ksec.mdwn b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn
index 37fe9c53..931fd0ee 100644
--- a/open_issues/performance/io_system/binutils_ld_64ksec.mdwn
+++ b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn
@@ -27,10 +27,6 @@ extracted from cdf7c161ebd4a934c9e705d33f5247fd52975612 sources, 2010-10-24.
On the idle grubber, this one repeatedly takes a few minutes wall time to
complete successfully, contrary to a few seconds on a GNU/Linux system.
-> On order of slowness may in fact be due to a Xen-specific issue, see
-> [[xen_lseek]]. (But there are probably still one or two orders left, even
-> without Xen.)
-
While processing the object files, there is heavy interaction with the relevant
[[hurd/translator/ext2fs]] process. Running [[hurd/debugging/rpctrace]] on
the testee shows that (primarily) an ever-repeating series of `io_seek` and
@@ -38,17 +34,6 @@ the testee shows that (primarily) an ever-repeating series of `io_seek` and
shows the equivalent thing (`_llseek`, `read`) -- but Linux' I/O system isn't
as slow as the Hurd's.
----
-
-IRC, freenode, #hurd, 2011-09-01:
-
- <youpi> hum, f951 does myriads of 71->io_seek_request (32768 0) = 0 32768
- <youpi> no wonder it's slow
- <youpi> unfortunately that's also what it does on linux, the system call is
- just less costly
- <youpi> apparently gfortran calls io_seek for, like, every token of the
- sourced file
- <youpi> (fgetpos actually, but that's the same)
- <youpi> and it is indeed about 10 times slower under Xen for some reason
-
-[[!tag open_issue_xen]]
+As Samuel figured out later, this slowness may in fact be due to a Xen-specific
+issue, see [[Xen_lseek]]. After the latter has been addressed, we can
+re-evaluate this issue here.
diff --git a/open_issues/posix_fadv_volatile.mdwn b/open_issues/posix_fadv_volatile.mdwn
new file mode 100644
index 00000000..6bd25e3e
--- /dev/null
+++ b/open_issues/posix_fadv_volatile.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="POSIX_FADV_VOLATILE"]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+May be interesting to watch what happens: LWN, Jonathan Corbet,
+[`POSIX_FADV_VOLATILE`](http://lwn.net/Articles/468896/), 2011-11-22.
diff --git a/open_issues/ti-rpc_then_nfs.mdwn b/open_issues/ti-rpc_then_nfs.mdwn
new file mode 100644
index 00000000..aa36e020
--- /dev/null
+++ b/open_issues/ti-rpc_then_nfs.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2011 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_hurd open_issue_porting]]
+
+TI-RPC replaces glibc's Sun RPC implementation, [[!message-id
+"4D0632C5.1040107@RedHat.com"]].
+
+It needs some work on our side, [[!message-id
+"20101214213212.GU1095@kepler.schwinge.homeip.net"]].
+
+Then, the Hurd's [[hurd/translator/nfs]] translator and [[hurd/nfsd]] can be
+re-enabled, [[!message-id "87hb2j7ha7.fsf@gnu.org"]].
diff --git a/open_issues/translators_set_up_by_untrusted_users.mdwn b/open_issues/translators_set_up_by_untrusted_users.mdwn
index 97f48bba..044d5411 100644
--- a/open_issues/translators_set_up_by_untrusted_users.mdwn
+++ b/open_issues/translators_set_up_by_untrusted_users.mdwn
@@ -282,6 +282,9 @@ and [Hardlink
Protection](https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#Hardlink_Protection)
do bear some similarity with the issue we're discussing here.
+Likewise, Kees Cook, [fs: symlink restrictions on sticky
+directories](http://lwn.net/Articles/468215/), 2011-11-18.
+
# IRC, freenode, #hurd, 2011-08-31
diff --git a/open_issues/xen_lseek.mdwn b/open_issues/xen_lseek.mdwn
index accc7c8f..756abf5e 100644
--- a/open_issues/xen_lseek.mdwn
+++ b/open_issues/xen_lseek.mdwn
@@ -10,6 +10,17 @@ License|/fdl]]."]]"""]]
[[!tag open_issue_xen]]
+IRC, freenode, #hurd, 2011-09-01:
+
+ <youpi> hum, f951 does myriads of 71->io_seek_request (32768 0) = 0 32768
+ <youpi> no wonder it's slow
+ <youpi> unfortunately that's also what it does on linux, the system call is
+ just less costly
+ <youpi> apparently gfortran calls io_seek for, like, every token of the
+ sourced file
+ <youpi> (fgetpos actually, but that's the same)
+ <youpi> and it is indeed about 10 times slower under Xen for some reason
+
IRC, freenode, #hurd, 2011-11-02:
<youpi> btw, we have a performance issue with xen
@@ -33,3 +44,14 @@ IRC, freenode, #hurd, 2011-11-02:
http://www.gnu.org/software/hurd/open_issues/performance/io_system/binutils_ld_64ksec.html
[[performance/io_system/binutils_ld_64ksec]].
+
+Also see the simple testcases [[test-lseek.c]] and [[test-mach.c]].
+
+IRC, freenode, #hurd, 2011-11-05:
+
+ <youpi> [test-mach.c is] mostly as a reference for the trap overhead
+ <youpi> 0.56µs (xen) vs 0.48µs(kvm) on test-mach
+ <youpi> 455µs(xen) vs 16µs(kvm) on test-lseek
+ <youpi> that might simply be an issue in the RPC mechanism, which behaves
+ badly with the xen memory management
+ <youpi> yes, about 0.5ms for an lseek, that's quite high :)
diff --git a/open_issues/xen_lseek/test-lseek.c b/open_issues/xen_lseek/test-lseek.c
new file mode 100644
index 00000000..667dce66
--- /dev/null
+++ b/open_issues/xen_lseek/test-lseek.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <math.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/time.h>
+#define N 100000
+int main(void) {
+ int fd = open("test.c", O_RDONLY);
+ struct timeval tv1, tv2;
+ int i;
+ gettimeofday(&tv1, NULL);
+ for (i = 0; i < N; i++)
+ lseek(fd, 0, SEEK_CUR);
+ gettimeofday(&tv2, NULL);
+ printf("%fµs\n", (float)((tv2.tv_sec-tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec)/N);
+ return 0;
+}
diff --git a/open_issues/xen_lseek/test-mach.c b/open_issues/xen_lseek/test-mach.c
new file mode 100644
index 00000000..90337346
--- /dev/null
+++ b/open_issues/xen_lseek/test-mach.c
@@ -0,0 +1,19 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <fcntl.h>
+#include <mach/mach.h>
+#define N 1000000
+int main(void) {
+ struct timeval tv1, tv2;
+ int i;
+ task_t task;
+ task = mach_task_self();
+ mach_port_urefs_t refs;
+ gettimeofday(&tv1, NULL);
+ for (i = 0; i < N; i++) {
+ mach_port_get_refs(task, task, MACH_PORT_RIGHT_RECEIVE, &refs);
+ }
+ gettimeofday(&tv2, NULL);
+ printf("%fµs\n", (float)((tv2.tv_sec-tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec)/N);
+ return 0;
+}