aboutsummaryrefslogtreecommitdiffstats
path: root/c/ptest.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/ptest.c')
-rw-r--r--c/ptest.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/c/ptest.c b/c/ptest.c
new file mode 100644
index 0000000..88b7d30
--- /dev/null
+++ b/c/ptest.c
@@ -0,0 +1,19 @@
+#include "gbos.h"
+/* ptest: exercise the kernel pipe in one process - write some bytes, read them
+ back, then close the write end and confirm the reader sees EOF. */
+void main(void) {
+ unsigned char pr = pipe();
+ unsigned char pw = pr + 1;
+ int c;
+ if (pr == NOFD) { puts("pipe: none free"); nl(); return; }
+ fputc(pw, 'H'); fputc(pw, 'i'); fputc(pw, '!');
+ c = fgetc(pr); putc(c);
+ c = fgetc(pr); putc(c);
+ c = fgetc(pr); putc(c);
+ nl();
+ close(pw); /* last writer gone */
+ c = fgetc(pr);
+ if (c < 0) puts("EOF"); else { puts("got "); putc(c); }
+ nl();
+ close(pr);
+}