summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@schwinge.name>2011-11-05 23:07:10 +0100
committerThomas Schwinge <thomas@schwinge.name>2011-11-05 23:07:10 +0100
commitba985e9b5f15933e9b8c33d63cf903972c75e913 (patch)
treece6e548ba05439b6971062718e808c32a5faefcf
parent3ebdfe56c9cde5128b5f9da1be2f82104049fa7b (diff)
parent2e315ef11db39e8ee0a0decc054801521ee049dd (diff)
Merge commit '2e315ef11db39e8ee0a0decc054801521ee049dd'
-rw-r--r--hurd/porting/guidelines.mdwn4
-rw-r--r--open_issues/performance/io_system/binutils_ld_64ksec.mdwn2
-rw-r--r--open_issues/performance/io_system/test-lseek.c17
-rw-r--r--open_issues/performance/io_system/test-mach.c19
4 files changed, 42 insertions, 0 deletions
diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn
index efc8982a..7de9a6f2 100644
--- a/hurd/porting/guidelines.mdwn
+++ b/hurd/porting/guidelines.mdwn
@@ -306,6 +306,10 @@ Not implemented, not POSIX. Try to disable the feature in the package.
There is no programming interface for the parallel port on GNU/Hurd yet.
+## <a name="baud"> CBAUD </a>
+
+This is not actually standard; cfsetspeed, cfsetispeed, or cfsetospeed should be used instead.
+
## <a name="errno"> `errno` values </a>
When dealing with `errno`, you should always use the predefined error codes defined with the `E*` constants, instead of manually comparing/assigning/etc with their values.
diff --git a/open_issues/performance/io_system/binutils_ld_64ksec.mdwn b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn
index 37fe9c53..d0b8ea7f 100644
--- a/open_issues/performance/io_system/binutils_ld_64ksec.mdwn
+++ b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn
@@ -51,4 +51,6 @@ IRC, freenode, #hurd, 2011-09-01:
<youpi> (fgetpos actually, but that's the same)
<youpi> and it is indeed about 10 times slower under Xen for some reason
+Also see testcase [[test-lseek.c]] and [[test-mach.c]]
+
[[!tag open_issue_xen]]
diff --git a/open_issues/performance/io_system/test-lseek.c b/open_issues/performance/io_system/test-lseek.c
new file mode 100644
index 00000000..667dce66
--- /dev/null
+++ b/open_issues/performance/io_system/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/performance/io_system/test-mach.c b/open_issues/performance/io_system/test-mach.c
new file mode 100644
index 00000000..90337346
--- /dev/null
+++ b/open_issues/performance/io_system/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;
+}