diff options
-rw-r--r-- | microkernel.mdwn | 2 | ||||
-rw-r--r-- | microkernel/x15.mdwn | 24 | ||||
-rw-r--r-- | open_issues/glibc.mdwn | 114 |
3 files changed, 83 insertions, 57 deletions
diff --git a/microkernel.mdwn b/microkernel.mdwn index c7fc0995..7c0e34c2 100644 --- a/microkernel.mdwn +++ b/microkernel.mdwn @@ -57,3 +57,5 @@ A 2002 article about [[microkernel_FUD|FUD]] (Fear, Uncertainty, Doubt). * [[Viengoos]] * [[Genode]] + + * [[x15]] diff --git a/microkernel/x15.mdwn b/microkernel/x15.mdwn new file mode 100644 index 00000000..b56c97fc --- /dev/null +++ b/microkernel/x15.mdwn @@ -0,0 +1,24 @@ +[[!meta copyright="Copyright © 2013 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]]."]]"""]] + +The x15 microkernel is under development by Richard Braun. Overall, x15 is intended to provide better performance because of simpler IPC and data structures and better scalability because of improved data structure algorithms and concurrency. + +The following specific features are intended to distinguish x15 from other microkernels. However, it should be noted that the microkernel is under heavy development and so the list may (and almost certainly will) change. + +* SMP support +* Lockless synchronisation à la RCU +* Support for large amounts of physical memory. GNU Mach does the same as Linux, physical memory is mapped in kernel space so you can't have more physical memory than you have kernel space which is why GNU Mach can't handle more than 1.8G right now, it's a 2/2 split. In x15, the kernel maps what it needs and can map it from anywhere in physical memory the drawback is that it needs to update kernel page tables more often. +* Virtual memory operations are planned to be completely concurrent on x15, similar to what is described in radixvm +* Intended to efficiently run a Hurd-like system providing a POSIX interface +* Providing both synchronisation IPC and signals, as opposed to just synchronisation IPC +* Port names which will transparently identify as file descriptors +* Light reference counting +* A restriction on IPC that only allows reliable transfers across network to machines with same arch and endianness +* etc. diff --git a/open_issues/glibc.mdwn b/open_issues/glibc.mdwn index b453b44f..0c702144 100644 --- a/open_issues/glibc.mdwn +++ b/open_issues/glibc.mdwn @@ -22,7 +22,7 @@ Here's what's to be done for maintaining glibc. # [[Sources|source_repositories/glibc]] -# [[Debian]] Cheat Sheet +# [[Debian Cheat Sheet|debian]] # Configuration @@ -39,24 +39,24 @@ git log --reverse --topo-order --pretty=fuller --stat=$COLUMNS,$COLUMNS -w -p -C Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 (2013-05-24) sources|source_repositories/glibc]]. - * `t/hurdsig-fixes` + * <a id=t_hurdsig-fixes>`t/hurdsig-fixes`</a> hurdsig.c: In function '_hurd_internal_post_signal': hurdsig.c:1188:26: warning: 'pending' may be used uninitialized in this function [-Wmaybe-uninitialized] hurdsig.c:1168:12: note: 'pending' was declared here - * `t/host-independency` + * <a id=t_host-independency>`t/host-independency`</a> [[!message-id "87bougerfb.fsf@kepler.schwinge.homeip.net"]], [[!message-id "20120525202732.GA31088@intel.com"]], commit 918b56067a444572f1c71b02f18255ae4540b043. [[!GCC_PR 53183]], GCC commit c05436a7e361b8040ee899266e15bea817212c37. - * `t/pie-sbrk` + * <a id=t_pie-sbrk>`t/pie-sbrk`</a> [[gcc/PIE]]. - * `t/sysvshm` + * <a id=t_sysvshm>`t/sysvshm`</a> ../sysdeps/mach/hurd/shmat.c: In function '__shmat': ../sysdeps/mach/hurd/shmat.c:57:7: warning: implicit declaration of function '__close' [-Wimplicit-function-declaration] @@ -65,11 +65,11 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 ../sysdeps/mach/hurd/shmget.c:102:8: warning: 'dir' may be used uninitialized in this function [-Wmaybe-uninitialized] ../sysdeps/mach/hurd/shmget.c:102:8: warning: 'file' may be used uninitialized in this function [-Wmaybe-uninitialized] - * [[`t/tls`|t/tls]] + * <a id=t_tls>[[`t/tls`|t/tls]]</a> - * [[`t/tls-threadvar`|t/tls-threadvar]] + * <a id=t_tls-threadvar>[[`t/tls-threadvar`|t/tls-threadvar]]</a> - * t/verify.h + * <a id=t_verify.h>`t/verify.h`</a> People didn't like this too much. @@ -77,7 +77,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 * 11988f8f9656042c3dfd9002ac85dff33173b9bd -- `static_assert` - * [[toolchain/cross-gnu]], without `--disable-multi-arch` + * <a id=toolchain_cross-gnu>[[toolchain/cross-gnu]], without `--disable-multi-arch`</a> i686-pc-gnu-gcc ../sysdeps/i386/i686/multiarch/strcmp.S -c [...] ../sysdeps/i386/i686/multiarch/../strcmp.S: Assembler messages: @@ -87,7 +87,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 Might simply be a missing patch(es) from master. - * `--disable-multi-arch` + * <a id=disable-multi-arch>`--disable-multi-arch`</a> IRC, freenode, #hurd, 2012-11-22 @@ -116,12 +116,12 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 <tschwinge> Ah, I probably have been thinking about open_issues/ifunc and open_issues/libc_variant_selection. - * --build=X + * <a id=buildX>--build=X</a> `long double` test: due to `cross_compiling = maybe` wants to execute a file, which fails. Thus `--build=X` has to be set. - * Check what all these are: + * <a id=check>Check what all these are:</a> running configure fragment for sysdeps/mach/hurd checking Hurd header version... ok @@ -157,19 +157,19 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 checking for i386_set_gdt in mach_i386.defs... yes checking whether i586-pc-gnu-mig supports the retcode keyword... yes - * `sysdeps/i386/stackguard-macros.h` + * <a id=stackguard>`sysdeps/i386/stackguard-macros.h`</a> See [[t/tls|t/tls]]. - * Verify 77c84aeb81808c3109665949448dba59965c391e against - `~/shared/glibc/make_TAGS.patch`. + * <a id=77c84aeb81808c3109665949448dba59965c391e>Verify 77c84aeb81808c3109665949448dba59965c391e against + `~/shared/glibc/make_TAGS.patch`.</a> - * `HP_SMALL_TIMING_AVAIL` not defined anywhere. + * <a id=HP_SMALL_TIMING_AVAIL>`HP_SMALL_TIMING_AVAIL` not defined anywhere.</a> - * Unify `CPUCLOCK_WHICH` stuff in `clock_*` files. + * <a id=CPUCLOCK_WHICH>Unify `CPUCLOCK_WHICH` stuff in `clock_*` files.</a> - * Not all tests are re-run in a `make -k tests; make tests-clean; make -k - tests` cycle. For example, after `make tests-clean`: + * <a id=tests-clean>Not all tests are re-run in a `make -k tests; make tests-clean; make -k + tests` cycle. For example, after `make tests-clean`:</a> $ find ./ -name \*.out ./localedata/tst-locale.out @@ -196,7 +196,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 ./check-local-headers.out ./begin-end-check.out - * `CPUCLOCK_WHICH`, `t/cpuclock` + * <a id=t_cpuclock>`CPUCLOCK_WHICH`, `t/cpuclock`</a> /media/boole-data/thomas/tmp/gnu-0/src/glibc.obj/rt/librt_pic.a(clock_settime.os): In function `clock_settime': /media/boole-data/thomas/tmp/gnu-0/src/glibc/rt/../sysdeps/unix/clock_settime.c:113: undefined reference to `CPUCLOCK_WHICH' @@ -208,7 +208,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 make[1]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/glibc' make: *** [all] Error 2 - * Missing interfaces, amongst many more. + * <a id=missing>Missing interfaces, amongst many more.</a> Many more are missing, some of which have been announced in `NEWS`, others typically haven't (like new flags to existing functions). Typically, @@ -228,7 +228,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 Check also the content of `gnu/stubs.h`, which lists all the functions marked as stub which only return `ENOSYS`. - * `chflags` + * <a id=chflags>`chflags`</a> Patch sent, [[!message-id "20120427012130.GZ19431@type.famille.thibault.fr"]]. @@ -259,25 +259,25 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 <youpi> so I'd say ignore the error for now, we'll add the declaration - * [[t/tls-threadvar]] + * <a id=t_tls-threadvar>[[t/tls-threadvar]]</a> - * `futimesat` + * <a id=futimesat>`futimesat`</a> If we have all of 'em (check Linux kernel), `#define __ASSUME_ATFCTS`. - * `bits/stat.h [__USE_ATFILE]`: `UTIME_NOW`, `UTIME_OMIT` + * <a id=bits_stat.h>`bits/stat.h [__USE_ATFILE]`: `UTIME_NOW`, `UTIME_OMIT`</a> - * `io/fcntl.h [__USE_ATFILE]` + * <a id=__USE_ATFILE>`io/fcntl.h [__USE_ATFILE]`</a> Do we support `AT_FDCWD` et al.? (80b4e5f3ef231702b24d44c33e8dceb70abb3a06.) - * `t/opendirat`: `opendirat` (`scandirat`, `scandirat64`) + * <a id=t_opendirat>`t/opendirat`: `opendirat` (`scandirat`, `scandirat64`)</a> Need changes equivalent to c55fbd1ea768f9fdef34a01377702c0d72cbc213 + 14d96785125abee5e9a49a1c3037f35a581750bd. - * `madvise`, `MADV_DONTNEED`, `MADV_DONTDUMP`, `MADV_DODUMP` + * <a id=madvise>`madvise`, `MADV_DONTNEED`, `MADV_DONTDUMP`, `MADV_DODUMP`</a> [[glibc_madvise_vs_static_linking]]. @@ -303,11 +303,11 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 [...] - Disable jemalloc on hurd and kfreebsd-*. No longer disabled upstream. - * `msync` + * <a id=msync>`msync`</a> Then define `_POSIX_MAPPED_FILES`, `_POSIX_SYNCHRONIZED_IO`. - * `epoll`, `sys/epoll.h` + * <a id=epoll>`epoll`, `sys/epoll.h`</a> Used by [[wayland]], for example. @@ -330,18 +330,18 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 clearly not a priority <nalaginrut> ok - * `sys/eventfd.h` + * <a id=sys_eventfd.h>`sys/eventfd.h`</a> - * `sys/inotify.h` + * <a id=sys_inotify.h>`sys/inotify.h`</a> - * `sys/signalfd.h` + * <a id=sys_signalfd.h>`sys/signalfd.h`</a> - * `sys/timerfd.h` + * <a id=sys_timerfd.h>`sys/timerfd.h`</a> - * `timespec_get` (74033a2507841cf077e31221de2481ff30b43d51, - 87f51853ce3671f4ba9a9953de1fff952c5f7e52) + * <a id=timespec_get>`timespec_get` (74033a2507841cf077e31221de2481ff30b43d51, + 87f51853ce3671f4ba9a9953de1fff952c5f7e52)</a> - * `waitflags.h` (`WEXITED`, `WNOWAIT`, `WSTOPPED`, `WCONTINUED`) + * <a id=waitflags.h>`waitflags.h` (`WEXITED`, `WNOWAIT`, `WSTOPPED`, `WCONTINUED`)</a> IRC, freenode, #hurd, 2012-04-20: @@ -368,9 +368,9 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 See `posix/tst-waitid.out` failure below. - * `getconf` things (see below the results of `tst-getconf.out`) + * <a id=getconf>`getconf` things (see below the results of `tst-getconf.out`)</a> - * `getsockopt`, `setsockopt` + * <a id=getsockopt>`getsockopt`, `setsockopt`</a> IRC, freenode, #hurd, 2013-02-14 @@ -415,7 +415,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 <braunr> no, linux is more permissive <braunr> (at least, on this matter) - * `getcontext`/`makecontext`/`setcontext`/`swapcontext` + * <a id=getcontext>`getcontext`/`makecontext`/`setcontext`/`swapcontext`</a> Support for these functions within the Hurd threadvar environment has been added, but for multi-threaded applications ([[libpthread]]), it is @@ -854,7 +854,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 <braunr> to check where those locks are held and determine the right order - * `recvmmsg`/`sendmmsg` (`t/sendmmsg`) + * <a id=recvmmsg>`recvmmsg`/`sendmmsg` (`t/sendmmsg`)</a> From [[!message-id "20120625233206.C000A2C06F@topped-with-meat.com"]], Roland McGrath: *They are generally useful interfaces and there is @@ -865,7 +865,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 Then perhaps the Linux fallback case should be that instead of stubs, too.* - * `SOCK_CLOEXEC` + * <a id=SOCK_CLOEXEC>`SOCK_CLOEXEC`</a> IRC, freenode, #hurd, 2013-09-02: @@ -994,19 +994,19 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 For specific packages: - * [[octave]] + * <a id=octave>[[octave]]</a> - * Create `t/cleanup_kernel-features.h`. + * <a id=t_cleanup_kernel-features.h>Create `t/cleanup_kernel-features.h`.</a> - * [[Secure_file_descriptor_handling]]. + * <a id=Secure_file_descriptor_handling>[[Secure_file_descriptor_handling]].</a> - * In `sysdeps/unix/sysv/linux/Makefile`, there are a bunch of - `-DHAVE_SENDFILE` -- but we do have `sendfile`, too. + * <a id=sendfile>In `sysdeps/unix/sysv/linux/Makefile`, there are a bunch of + `-DHAVE_SENDFILE` -- but we do have `sendfile`, too.</a> Define `__ASSUME_SENDFILE` to 1 in `kernel-features.h`, if `sendfile` works. - * `/usr/include/pthread.h` overwrite issue + * <a id=pthreadoverwrite>`/usr/include/pthread.h` overwrite issue</a> `make`, after editing `nss/nss_db/db-initgroups.c`: @@ -1027,9 +1027,9 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 install`, prepending an additional slash to `install_root` (that is, `install_root=//[...]`) is enough to obfuscate the Makefile rules. - * `sysdeps/unix/sysv/linux/syslog.c` + * <a id=syslog.c>`sysdeps/unix/sysv/linux/syslog.c`</a> - * `fsync` on a pipe + * <a id=fsync>`fsync` on a pipe</a> IRC, freenode, #hurd, 2012-08-21: @@ -1203,7 +1203,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 [[!message-id "1351231423.8019.19.camel@hp.my.own.domain"]]. - * `t/no-hp-timing` + * <a id=t_no-hp-timing>`t/no-hp-timing`</a> IRC, freenode, #hurd, 2012-11-16 @@ -1211,7 +1211,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 couldn't that file be just replaced by #include <sysdeps/generic/hp-timing.h>? - * `flockfile`/`ftrylockfile`/`funlockfile` + * <a id=flockfile>`flockfile`/`ftrylockfile`/`funlockfile`</a> IRC, freenode, #hurd, 2012-11-16 @@ -1350,7 +1350,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 <pinotree> provides a EXEC_PAGESIZE define in libio, so it makes it use mmap (like on linux) instead of malloc - `t/pagesize`. + * <a id=t_pagesize>`t/pagesize`.</a> <braunr> yes, the stub is used instead of the libpthreads code <braunr> tschwinge: ^ @@ -1468,7 +1468,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 <youpi> ok, so all god <youpi> +o - * `t/pagesize` + * <a id=t_pagesize2>`t/pagesize`</a> IRC, freenode, #hurd, 2012-11-16 @@ -1509,7 +1509,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 size <braunr> well they have to - * `LD_DEBUG` + * <a id=LD_DEBUG>`LD_DEBUG`</a> IRC, freenode, #hurd, 2012-11-22 @@ -1523,7 +1523,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 <pinotree> http://paste.debian.net/25934/ ← _hurd_thread_sigstate calls malloc, boom - * `conformtest` + * <a id=conformtest>`conformtest`</a> IRC, OFTC, #debian-hurd, 2013-09-22: @@ -1543,7 +1543,7 @@ Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8 type for some flock structure field) <youpi> s/by/be/ - * Verify baseline changes, if we need any follow-up changes: + * <a id=baselinechanges>Verify baseline changes, if we need any follow-up changes:</a> * a11ec63713ea3903c482dc907a108be404191a02 * 7e2b0c8562b35155820f87b5ff02a8b6850344cc |