diff --git a/repos/libports/run/libc_counter.run b/repos/libports/run/libc_counter.run
index 13dbf63472..15658184f3 100644
--- a/repos/libports/run/libc_counter.run
+++ b/repos/libports/run/libc_counter.run
@@ -39,7 +39,7 @@ append config {
-
+
@@ -48,7 +48,7 @@ append config {
-
+
@@ -79,6 +79,6 @@ append qemu_args "-nographic -m 64"
# Execute test case
#
-run_genode_until forever
+run_genode_until "child \"test-libc_counter-sink\" exited with exit value 0.*\n" 30
# vi: set ft=tcl :
diff --git a/repos/libports/run/libc_select.run b/repos/libports/run/libc_select.run
index e888b78ef7..3c26f0aefb 100644
--- a/repos/libports/run/libc_select.run
+++ b/repos/libports/run/libc_select.run
@@ -36,7 +36,7 @@ set config {
-
+
@@ -77,6 +77,6 @@ build_boot_image $boot_modules
append qemu_args " -m 128 -nographic "
-run_genode_until ".*child.*test-libc_select.*exited with exit value 0.*\n" 120
+run_genode_until "child \"test-libc_select\" exited with exit value 0.*\n" 120
# vi: set ft=tcl :
diff --git a/repos/libports/run/libc_vfs_counter.run b/repos/libports/run/libc_vfs_counter.run
new file mode 100644
index 0000000000..125f4166bf
--- /dev/null
+++ b/repos/libports/run/libc_vfs_counter.run
@@ -0,0 +1,96 @@
+#
+# Build
+#
+
+set build_components {
+ core init drivers/timer server/terminal_crosslink server/vfs
+ test/libc_counter
+}
+
+build $build_components
+
+create_boot_directory
+
+#
+# Generate config
+#
+
+append config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+install_config $config
+
+#
+# Boot modules
+#
+
+
+set boot_modules {
+ core init timer terminal_crosslink vfs
+ test-libc_counter-source test-libc_counter-sink
+ ld.lib.so libc.lib.so libm.lib.so
+}
+
+build_boot_image $boot_modules
+
+append qemu_args "-nographic -m 64"
+
+#
+# Execute test case
+#
+
+run_genode_until "child \"test-libc_counter-sink\" exited with exit value 0.*\n" 30
+
+# vi: set ft=tcl :
diff --git a/repos/libports/run/libc_vfs_select.run b/repos/libports/run/libc_vfs_select.run
new file mode 100644
index 0000000000..a30d6ad316
--- /dev/null
+++ b/repos/libports/run/libc_vfs_select.run
@@ -0,0 +1,91 @@
+set build_components {
+ core init drivers/timer server/terminal_crosslink server/vfs
+ test/libc_select test/libc_counter
+}
+
+build $build_components
+
+create_boot_directory
+
+set config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+install_config $config
+
+set boot_modules {
+ core init timer terminal_crosslink vfs
+ test-libc_counter-source test-libc_select
+ ld.lib.so libc.lib.so libm.lib.so stdcxx.lib.so pthread.lib.so
+ libc_pipe.lib.so
+}
+
+build_boot_image $boot_modules
+
+append qemu_args " -m 128 -nographic "
+
+run_genode_until "child \"test-libc_select\" exited with exit value 0.*\n" 120
+
+# vi: set ft=tcl :
diff --git a/repos/libports/src/test/libc_counter/source/main.cc b/repos/libports/src/test/libc_counter/source/main.cc
index f2f2a56db3..339d2c3908 100644
--- a/repos/libports/src/test/libc_counter/source/main.cc
+++ b/repos/libports/src/test/libc_counter/source/main.cc
@@ -24,6 +24,9 @@ int main(int argc, char **argv)
{
fprintf(stderr, "--- counter source started ---\n");
+ /* idle some time, so the sink has a chance to block ;-) */
+ sleep(2);
+
static char buf[32];
/* stdin/stdout are connected to the source */