diff options
-rw-r--r-- | glibc.mdwn | 6 | ||||
-rw-r--r-- | glibc/mmap.mdwn | 82 | ||||
-rw-r--r-- | open_issues/boehm_gc.mdwn | 11 | ||||
-rw-r--r-- | open_issues/git_nfs_mmap.mdwn | 9 | ||||
-rw-r--r-- | open_issues/glibc.mdwn | 2 | ||||
-rw-r--r-- | open_issues/libnetfs_io_map.mdwn | 15 | ||||
-rw-r--r-- | open_issues/wayland.mdwn | 33 |
7 files changed, 153 insertions, 5 deletions
@@ -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 @@ -78,6 +78,8 @@ Some of these are well-known as [[UNIX]] [[system call]]s. * [[fork]] + * [[mmap]] + * [[poll]] diff --git a/glibc/mmap.mdwn b/glibc/mmap.mdwn new file mode 100644 index 00000000..d0c492e9 --- /dev/null +++ b/glibc/mmap.mdwn @@ -0,0 +1,82 @@ +[[!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]]."]]"""]] + +There are two implementations of `mmap` for GNU Hurd: +`sysdeps/mach/hurd/mmap.c` (main implementation) and +`sysdeps/mach/hurd/dl-sysdep.c` (*Minimal mmap implementation sufficient for +initial loading of shared libraries.*). + + * `MAP_COPY` + + What exactly is that? `elf/dl-load.c` has some explanation. + <http://lkml.indiana.edu/hypermail/linux/kernel/0110.1/1506.html> + + It is only handled in `dl-sysdep.c`, when `flags & (MAP_COPY|MAP_PRIVATE)` + is used for `vm_map`'s `copy` parameter, and `mmap.c` uses `! (flags & + MAP_SHARED)` instead. + + +# `io_map` Failure + +[[libnetfs: `io_map`|open_issues/libnetfs_io_map]] issue. + +[[!tag open_issue_glibc]] + +Review of `mmap` usage in generic bits of glibc, based on +a1bcbd4035ac2483dc10da150d4db46f3e1744f8 (2012-03-11), listing these cases +where failure (due to `io_map` failing; that is, invocations where a `fd` is +passed) is not properly handled. + +`catgets/open_catalog.c`, `iconv/gconv_cache.c`, `intl/loadmsgcat.c`, +`locale/loadlocale.c` have fallback code for the `MAP_FAILED` case. + +[[tschwinge]]'s current plan is to make the following cases do the same (if +that is possible); probably by introducing a generic `mmap_or_read` function, +that first tries `mmap` (and that will succeed on Linux-based systems and also +on Hurd-based, if it's backed by [[hurd/libdiskfs]]), and if that fails tries +`mmap` on anonymous memory and then fills it by `read`ing the required data -- +but this would probably means all :-/ `PT_LOAD` segments for the ELF case? In +parallel, it should be researched how Linux (or any other kernel) implements +`mmap` on NFS and similar file systems, and then implement the same in +[[hurd/libnetfs]]/[[hurd/translator/nfs]]. + + * `elf/cache.c` + + * `elf/dl-load.c` + + * `elf/dl-misc.c` + + * `elf/dl-profile.c` + + * `elf/readlib.c` + + * `elf/sprof.c` + + * `locale/loadarchive.c` + + * `locale/programs/locale.c` + + * `locale/programs/locarchive.c` + + * `nscd/connections.c` + + * `nscd/nscd_helper.c` + + * `nss/makedb.c` + + * `nss/nss_db/db-open.c` + + * Omitted: + + * `nptl/` + + * `sysdeps/unix/sparc/` + + * `sysdepts/unix/sysv/linux/` diff --git a/open_issues/boehm_gc.mdwn b/open_issues/boehm_gc.mdwn index e7f849f2..ca2063a5 100644 --- a/open_issues/boehm_gc.mdwn +++ b/open_issues/boehm_gc.mdwn @@ -321,3 +321,14 @@ It has last been run and compared on 2010-11-10, based on CVS HEAD sources from <pinotree> hmm... <pinotree> apparently enabling MMAP_ANON in mono's libgc copy was a good step, let's see + + +### IRC, OFTC, #debian-hurd, 2012-03-18 + + <pinotree> youpi: mono is afflicted by the SIGUSR1/2 conflict with libgc + <youpi> pinotree: didn't we have a solution for that? + <pinotree> well, it works just for one signal + <pinotree> the ideal solution would be having a range for RT signals, and + make libgc use RTMIN+5/6, like done on most of other OSes + <youpi> but we don't have RT signals, do we? + <pinotree> right :( diff --git a/open_issues/git_nfs_mmap.mdwn b/open_issues/git_nfs_mmap.mdwn index b7e86491..21067022 100644 --- a/open_issues/git_nfs_mmap.mdwn +++ b/open_issues/git_nfs_mmap.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]] +[[!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 @@ -8,7 +8,7 @@ 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]] +[[!tag open_issue_porting]] $ git-new-workdir /media/kepler-data/home/thomas/tmp/source/binutils/git master master fatal: Out of memory? mmap failed: No such device @@ -46,3 +46,8 @@ fails, and it isn't prepared to cope with that: 64->proc_mark_exit_request (32768 0) = 0 task3741-> 2008 () = 0 Child 3741 exited with 128 + +This is the [[libnetfs: `io_map`|open_issues/libnetfs_io_map]] issue. + +There is a `NO_MMAP` conditional in Git's source code, but it is a compile-time +conditional. diff --git a/open_issues/glibc.mdwn b/open_issues/glibc.mdwn index 3160c86f..943f44bb 100644 --- a/open_issues/glibc.mdwn +++ b/open_issues/glibc.mdwn @@ -210,6 +210,8 @@ Last reviewed up to the [[Git mirror's d40c5d54cb551acba4ef1617464760c5b3d41a14 * `sys/epoll.h` + Used by [[wayland]], for example. + * `sys/eventfd.h` * `sys/inotify.h` diff --git a/open_issues/libnetfs_io_map.mdwn b/open_issues/libnetfs_io_map.mdwn index b340de90..9a6d8167 100644 --- a/open_issues/libnetfs_io_map.mdwn +++ b/open_issues/libnetfs_io_map.mdwn @@ -12,7 +12,16 @@ License|/fdl]]."]]"""]] [[!tag open_issue_hurd]] -This hampers [[hurd/translator/nfs]] usability, for example. +This hampers [[hurd/translator/nfs]] usability, for example: + + $ fsysopts ./ + /hurd/nfs [...] + $ cp -a /bin/true ./ + cp: failed to preserve authorship for `./true': Operation not supported + $ ./true + $ /lib/ld.so /bin/true + $ /lib/ld.so $PWD/true + [...]/true: error while loading shared libraries: [...]/true: failed to map segment from shared object: Error 1073741869 IRC, freenode, #hurd, 2012-03-14: @@ -28,3 +37,7 @@ IRC, freenode, #hurd, 2012-03-14: for network file systems <civodul> which is why it doesn't have it <civodul> the GCS says "thou shall not require mmap" ;-) + + * [[glibc/mmap]] + + * <http://lists.gnu.org/archive/html/bug-hurd/2001-10/msg00306.html> diff --git a/open_issues/wayland.mdwn b/open_issues/wayland.mdwn new file mode 100644 index 00000000..67f78b1d --- /dev/null +++ b/open_issues/wayland.mdwn @@ -0,0 +1,33 @@ +[[!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_porting]] + +IRC, freenode, #hurd, 2012-03-18: + + <antrik> Wayland should be very portable. all the system dependencies are + in the infrastructure, such as DRI + <antrik> we have had a DRI task (for X.Org) for years + <antrik> (in fact I would be the right person to implement this, + considering my background -- by quite frankly, I doubt I'll ever do it) + <tschwinge> http://xorg.freedesktop.org/wiki/Hurd_Porting + +IRC, freenode, #hurd, 2012-03-20: + + <youlysses> Is wayland something that will be semi-easy to port to the + hurd? I saw GNOME is heading in this direction. + <pinotree> wayland at the moment is linux only + <tschwinge> youlysses: A DRI implementation will be needed. + <pinotree> that, and libdrm compiling + <youlysses> So it will take some work ... but theres no *HUGE* design + decison that would inhibit it? + <pinotree> i know it uses epoll, for instance + <tschwinge> youlysses: I cannot judge how complex a DRI system is, and how + much needs to be designed vs. implemented. |