summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-01-06 16:24:51 +0000
committerrodri <rgl@antares-labs.eu>2024-01-06 16:24:51 +0000
commit97f4b9b97c470501d25ac82cad771bdff75e9b59 (patch)
tree9c4031842c4af0608219d42a1f143019946d7ee6
parent21d0ffbbf001fd209208e33503890ad6847105db (diff)
parent5a0e28438fe4c0f8cc55430c388c2016cc185cbf (diff)
downloadbrokentoys-97f4b9b97c470501d25ac82cad771bdff75e9b59.tar.gz
brokentoys-97f4b9b97c470501d25ac82cad771bdff75e9b59.tar.bz2
brokentoys-97f4b9b97c470501d25ac82cad771bdff75e9b59.zip
merged
-rw-r--r--chansend.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/chansend.c b/chansend.c
new file mode 100644
index 0000000..445db42
--- /dev/null
+++ b/chansend.c
@@ -0,0 +1,40 @@
+#include <u.h>
+#include <libc.h>
+#include <thread.h>
+
+void
+recvthread(void *arg)
+{
+ Channel *c = arg;
+ int n;
+
+ while(recv(c, &n) > 0)
+ fprint(2, "got %x\n", n);
+}
+
+void
+threadmain()
+{
+ Channel *c;
+ Alt a[2];
+ int n;
+
+ c = chancreate(sizeof(int), 1);
+ n = 0xB00B5;
+
+ a[0].op = CHANSND;
+ a[0].c = c;
+ a[0].v = &n;
+ a[1].op = CHANEND;
+
+ threadcreate(recvthread, c, mainstacksize);
+
+ for(;;)
+ switch(alt(a)){
+ case -1:
+ return;
+ case 0:
+ fprint(2, "sent %x\n", n);
+ break;
+ }
+}