summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2016-05-18 12:53:00 +0200
committerThomas Schwinge <thomas@codesourcery.com>2016-05-18 12:53:00 +0200
commita443afde27a74f8d8bc13e1184ecf16d513d6147 (patch)
tree706d01d5ec6581778dfa0e56fe6085fabdb60935
parent2781d32ebd97fe0c93cb1b428c8b85ae0f23515e (diff)
parent60f15d9a60e7e0754c30bd8ec458982cd35540d3 (diff)
Merge remote-tracking branch 'savannah/master'
Conflicts: open_issues/profiling.mdwn
-rw-r--r--community/gsoc.mdwn6
-rw-r--r--contributing.mdwn6
-rw-r--r--hurd/porting/guidelines.mdwn12
-rw-r--r--hurd/running/debian/qemu_image.mdwn2
-rw-r--r--hurd/running/qemu.mdwn28
-rw-r--r--microkernel/mach/gnumach.mdwn1
-rw-r--r--microkernel/mach/gnumach/profiling.mdwn30
-rw-r--r--news/2015-10-31-releases.mdwn4
-rw-r--r--open_issues/64-bit_port.mdwn5
-rw-r--r--open_issues/problematic_packages.mdwn5
-rw-r--r--open_issues/profiling.mdwn2
-rw-r--r--sidebar.mdwn8
12 files changed, 63 insertions, 46 deletions
diff --git a/community/gsoc.mdwn b/community/gsoc.mdwn
index 1e2d813..b5df8ef 100644
--- a/community/gsoc.mdwn
+++ b/community/gsoc.mdwn
@@ -20,25 +20,23 @@ We're in! The GNU Hurd project is again participating in the [Google Summer of
Code](https://summerofcode.withgoogle.com/) under the [GNU
umbrella](http://www.gnu.org/software/soc-projects/).
-<!--
This year's *student application period* is over. Thanks for sending in your
applications! We're now reviewing and discussing these, so please pay
attention to any questions posted on your proposal's page. The Google site's
notification system should be sending out emails, too.
--->
Per the [program timeline](https://summerofcode.withgoogle.com/how-it-works/),
<!--
we are awaiting for the approval of GNU as a mentoring organization.
-->
+<!--
from 2016-03-14 to 2016-03-25, it's the *student application period*, which
is plenty of time for preparing and discussing your applications -- but please
don't wait to the last minute!
-<!--
+-->
we're now waiting for Google to announce the number of slots that the whole GNU
project gets, and we'll be discussing with our GNU peers about how to split
these up among all the GNU subprojects.
--->
As we only have finite resources (meaning that we won't be able to accept all
GNU Hurd applications even if we wanted to), we will eventually need to make a
diff --git a/contributing.mdwn b/contributing.mdwn
index 95f4cb3..4674713 100644
--- a/contributing.mdwn
+++ b/contributing.mdwn
@@ -95,10 +95,6 @@ with".
file_get_fs_options and fsys_set_options RPCs.
* Extend `device_read`/`device_write` into supporting > 2TiB disk sizes.
* Make the Hurd [[hurd/console]]'s configuration use [[xkb layout/variant instead of keymap|hurd/console/discussion]].
-* Add a [[futex kernel trap|microkernel/mach/gnumach/interface#futex]] to GNU Mach.
-This can be useful for nicer locking
-primitives, including inter-process primitives. `vm_allocate` can be used as an
-example in the `gnumach` source tree for how to add a kernel trap. [[!GNU_Savannah_task 6231]]
* Add NX protection support to GNU Mach.
* Write a partfs translator, to which one gives a disk image, and
which exposes the partitions of the disk image, using parted, and
@@ -115,6 +111,8 @@ lookups|hurd/interface/dir_lookup]] work.
* Add a relatime or lazytime option to ext2fs.
* Fix our [[open_issues/symlink_translator]].
* Fix chmod on fifos: mkfifo foo ; sudo chmod g+w foo
+* Strengthen httpfs: it should append '/' to URL automatically, it should not fallback index.html itself, etc. probably a lot more small easy issues.
+* Fix `O_NOATIME`, see <https://buildd.debian.org/status/fetch.php?pkg=borgbackup&arch=hurd-i386&ver=1.0.2-1&stamp=1460838100>
<a name="porting"></a>
## Porting Packages
diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn
index 66c6ae2..a76ffc8 100644
--- a/hurd/porting/guidelines.mdwn
+++ b/hurd/porting/guidelines.mdwn
@@ -1,5 +1,5 @@
[[!meta copyright="Copyright © 2002, 2003, 2005, 2007, 2008, 2009, 2010, 2011,
-2012, 2013, 2014 Free Software Foundation, Inc."]]
+2012, 2013, 2014, 2016 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
@@ -321,19 +321,19 @@ These are not POSIX, `sys/types.h` and `stdint.h` should be used instead.
Not supported and actually very dangerous (permits userland to completely disable interruptions...). Replace with `ioperm(0, 65536, 1)`.
-## <a name="iopl"> `semget`, `sem_open` </a>
+## <a name="sem_open"> `semget`, `sem_open` </a>
-Not implemented, will always fail. Use `sem_init()` instead if possible.
+Not implemented yet, will always fail. Use `sem_init()` instead if possible. `sem_init` with pshared=1 is not available yet either.
## <a name="net/..."> `net/if_arp.h`, `net/ethernet.h`, etc. </a>
Not implemented, not POSIX. Try to disable the feature in the package.
-## <a name="parport"> <linux/parport.h> <linux/ppdev.h> </a>
+## <a name="parport"> `linux/parport.h` `linux/ppdev.h` </a>
There is no programming interface for the parallel port on GNU/Hurd yet.
-## <a name="cdrom"> <linux/cdrom.h> </a>
+## <a name="cdrom"> `linux/cdrom.h` </a>
Use <sys/cdrom.h> instead.
@@ -343,7 +343,7 @@ This is not actually standard; cfsetspeed, cfsetispeed, or cfsetospeed should be
## <a name="termios"> IUCLC </a>
-IUCLC is a GNU extension. `#define _GNU_SOURCE' thus has to be used to get the definition (even if Linux unconditionally provides it, it should not).
+IUCLC is a GNU extension. `#define _GNU_SOURCE` thus has to be used to get the definition (even if Linux unconditionally provides it, it should not).
## <a name="errno"> `errno` values </a>
diff --git a/hurd/running/debian/qemu_image.mdwn b/hurd/running/debian/qemu_image.mdwn
index 1f42507..a17ff89 100644
--- a/hurd/running/debian/qemu_image.mdwn
+++ b/hurd/running/debian/qemu_image.mdwn
@@ -16,7 +16,7 @@ Usage:
$ wget http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz
$ tar -xz < debian-hurd.img.tar.gz
- $ kvm -m 512 -drive cache=writeback,file=$(echo debian-hurd-*.img)
+ $ kvm -m 1G -drive cache=writeback,file=$(echo debian-hurd-*.img)
Please also read the README file: <http://people.debian.org/~sthibault/hurd-i386/README>
diff --git a/hurd/running/qemu.mdwn b/hurd/running/qemu.mdwn
index dfc9cdd..ef89ec1 100644
--- a/hurd/running/qemu.mdwn
+++ b/hurd/running/qemu.mdwn
@@ -1,5 +1,5 @@
[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
-2013, 2014 Free Software Foundation, Inc."]]
+2013, 2014, 2016 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
@@ -32,7 +32,7 @@ Note that the following images are unofficial ones: they have been prepared by
volunteers and may not have been tested extensively.
* [Disk image](http://draketo.de/dateien/hurd/bab-hurd-qemu-2008-10-29.img.tar.bz2)
- with a short intro on translators. Just start it with `qemu -m 512
+ with a short intro on translators. Just start it with `qemu -m 1G
-drive cache=writeback,file=disk_image.img`.
It should work without any of the configuration below. If you want to know what you can do
with it, please have a look at [[its_wikipage|hurd/running/qemu/babhurd_image]]. And when
@@ -50,12 +50,6 @@ Also you can use QEMU to easily try one of the
Instructions for creating a qemu image from the install CDs from debian installer can be found in the README alongside the d-i Hurd images: <http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/>
-## Old method
-
-1. First thing is to install [[/QEMU]].
-2. A [[grub]] boot disk for the floppy disk image needed for booting. The [0\.97 version](ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.ext2fs) works fine. I downloaded it and renamed to `floppy.img`. Alternatively, the Debian grub-disk package (up till version 0.97-28) is fine as well.
-3. You will need a [Debian/Hurd installation CD](http://www.debian.org/ports/hurd/hurd-cd). K16 works fine.
-
# KVM acceleration
Check if your CPU supports kvm:
@@ -117,11 +111,6 @@ IRC, freenode, #hurd, 2012-08-29:
<gnu_srs> seems like kvm -h says: -no-kvm-irqchip and man kvm says:
-machine kernel_irqchip=off
-/!\ Note that there are known performance issues with KVM on Linux 2.6.39
-kernels, compared to 2.6.32: [[!debbug 634149]]. We're preparing on a change
-on our side to work around this.
-
-
# HAP/EPT/NPT acceleration
Performance will be yet better if HAP (EPT or NPT) is available:
@@ -139,7 +128,7 @@ First off you will need to create a disk image using `qemu-img`. I have set mine
Next you will want to start up QEMU and begin the installation process.
- $ qemu -m 512 -drive cache=writeback,file=hd0.img -cdrom debian-7.0-hurd-i386-NETINST-1.iso -net nic,model=rtl8139 -net user
+ $ qemu -m 1G -drive cache=writeback,file=hd0.img -cdrom debian-7.0-hurd-i386-NETINST-1.iso -net nic,model=rtl8139 -net user
Now at his point do the regular install using `hd0` as your harddrive. Partition it and install the base system.
@@ -187,7 +176,7 @@ Once you have finished installing the base system (might take some time) the sys
Starting qemu/qemu-kvm:
- $ kvm -m 512 -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img -vga vmware
+ $ kvm -m 1G -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img -vga vmware
vmsvga_value_write: guest runs Linux.
Note: See below on port forwarding in the networking section.
@@ -301,8 +290,9 @@ If you want to connect from the host system to the Hurd system running in QEMU,
<youpi> there's not much better to do than that
<youpi> (patching resolv.conf inside the guest, or apply the ipv6 patch)
+This is fixed in qemu 2.6
-## Port Forwarding in QEMU
+## Port Forwarding in QEMU/KVM
(In the following we assume we use kvm!)
#### Logging in to Hurd from a terminal in your host system
@@ -310,7 +300,7 @@ This is the recommended way to work with a Command Line Interface (CLI) since al
a) with ssh (assuming you have installed openssh-server)
- $ kvm -m 512 -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img &
+ $ kvm -m 1G -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img &
Logging in to the running Hurd:
@@ -327,7 +317,7 @@ Copying files:
b) with telnet (assuming you have installed a telnet server, like telnetd)
- $ kvm -m 512 -net nic -net user,hostfwd=tcp::5556-:23 -drive cache=writeback,file=hurd-install.qemu &
+ $ kvm -m 1G -net nic -net user,hostfwd=tcp::5556-:23 -drive cache=writeback,file=hurd-install.qemu &
Logging in to the running Hurd:
@@ -368,7 +358,7 @@ Now it is time to start-up your QEMU Hurd system and get networking going in the
**Important:** Remember you may need to use the `-M isapc` or `-isa` flag if using an older version of the gnumach package.
- $ qemu -m 512 -drive cache=writeback,file=hd0.img -cdrom debian-K9-hurd-i386-CD1.iso -fda floppy.img -boot a -net nic -net tap
+ $ qemu -m 1G -drive cache=writeback,file=hd0.img -cdrom debian-K9-hurd-i386-CD1.iso -fda floppy.img -boot a -net nic -net tap
Once you have logged in as `root` run the `pfinet` translator with values that apply to your network. Think of your QEMU client as another computer in your network.
diff --git a/microkernel/mach/gnumach.mdwn b/microkernel/mach/gnumach.mdwn
index 88aa143..ba970a0 100644
--- a/microkernel/mach/gnumach.mdwn
+++ b/microkernel/mach/gnumach.mdwn
@@ -79,6 +79,7 @@ GNU/Hurd.
* [[Reference_Manual]]
* [[Building]]
* [[Debugging]]
+ * [[Profiling]]
* [[Boot_Trace]]
* [[Memory_Management]]
* [[Continuation]]s
diff --git a/microkernel/mach/gnumach/profiling.mdwn b/microkernel/mach/gnumach/profiling.mdwn
new file mode 100644
index 0000000..a15fab5
--- /dev/null
+++ b/microkernel/mach/gnumach/profiling.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 2016 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]]."]]"""]]
+
+Here is some guide to profile the GNU Mach kernel uses for a userland process.
+
+[[!toc levels=2]]
+
+First, it needs to be enabled: since this will leak kernel addresses to userland, it is not enabled by default. Pass `--enable-kernelsample` to the `./configure` invocation, and rebuild the kernel.
+
+Then you need to get the start and end of the text portion of the kernel:
+
+ nm gnumach | grep " _start$"
+ nm gnumach | grep " etext$"
+
+And you need to patch glibc to use these start and end instead of the userland starts and ends: in `glibc/csu/gmon-start.c`, in the `__monstartup` call, replace `TEXT_START` and `&etext` with the start and end addresses obtained above. Rebuild libc (`make lib` is enough). Install `csu/gcrt[01].o` in `/usr/lib/i386-gnu/`.
+
+Now, you can rebuild your application with `-pg`, run it (for translators, use `settrans -a`, work with it, and use `settrans -fga` to terminate it nicely), you will get a `gmon.out` file. Normally you would just run `gprof application` to get the profiling, but here we need to get symbols from the kernel:
+
+ nm -n gnumach > /tmp/list
+
+and then we can run `gprof -S /tmp/list application`, and the kernel profiling will show up.
+
+You will probably notice that `spl0` will show up a lot, more precisely the `sti` instruction. This is because all the kernel code running with interrupts disabled can't be profiled, and will be accounted for on that instruction (which triggers the profiling interrupts which should have happened while the interrupts were disabled).
diff --git a/news/2015-10-31-releases.mdwn b/news/2015-10-31-releases.mdwn
index 57cd7ec..a4404e7 100644
--- a/news/2015-10-31-releases.mdwn
+++ b/news/2015-10-31-releases.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2015 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2015, 2016 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
@@ -124,7 +124,7 @@ We're pleased to announce new releases!
[[**GNU MIG**|microkernel/mach/mig/gnu_mig]] is the GNU distribution of the
[[Mach 3.0 Interface Generator (MIG)|microkernel/mach/mig]]. This tool
- translates [[Remore Procedure Call (RPC)|rpc]] definition files to C code,
+ translates [[Remote Procedure Call (RPC)|rpc]] definition files to C code,
and is required to compile any packages that are receiving or invoking
RPCs, such as GNU Mach, GNU Hurd, and the GNU C Library (glibc) when
compiled for the Hurd. More detailed:
diff --git a/open_issues/64-bit_port.mdwn b/open_issues/64-bit_port.mdwn
index 0427363..7475808 100644
--- a/open_issues/64-bit_port.mdwn
+++ b/open_issues/64-bit_port.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2011, 2012, 2013, 2014 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2011, 2012, 2013, 2014, 2016 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
@@ -14,6 +14,7 @@ License|/fdl]]."]]"""]]
There is a `master-x86_64` GNU Mach branch. As of 2012-11-20, it only supports
the [[microkernel/mach/gnumach/ports/Xen]] platform.
+See http://lists.gnu.org/archive/html/bug-hurd/2012-04/msg00000.html
# IRC, freenode, #hurd, 2011-10-16
diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn
index 3e11c0e..7ce9c5c 100644
--- a/open_issues/problematic_packages.mdwn
+++ b/open_issues/problematic_packages.mdwn
@@ -20,6 +20,7 @@ This page lists the few packages whose build makes the Debian buildd box crash a
* ruby-hiredis
* libxs
* subversion testsuite
+ * socket-wrapper
* breaks cron
@@ -28,3 +29,7 @@ This page lists the few packages whose build makes the Debian buildd box crash a
* ext2fs gets stuck
* emacs24
+
+* loops and eats memory
+
+ * pygobject
diff --git a/open_issues/profiling.mdwn b/open_issues/profiling.mdwn
index 13ac86e..12690af 100644
--- a/open_issues/profiling.mdwn
+++ b/open_issues/profiling.mdwn
@@ -19,6 +19,8 @@ done for [[performance analysis|performance]] reasons.
* [[gprof]]
+ * [[profiling GNU Mach|microkernel/mach/gnumach/profiling]]
+
* [[glibc]]'s sotruss
* [[ltrace]]
diff --git a/sidebar.mdwn b/sidebar.mdwn
index 57245da..0cd1101 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -11,14 +11,6 @@ License|/fdl]]."]]"""]]
Welcome to... [[!img /logo/boxes-redrawn.png link=/logo]] ... the GNU Hurd!
-[[!template id=highlight text="""**Breaking News**
-
----
-
-The **Google Summer of Code 2016** is on! If you're a student, consider
-applying for a GNU Hurd project -- details to be found on our
-[[community/GSoC]] and [[community/gsoc/project_ideas]] pages."""]]
-
---
* **[[Home|/index]]**