summary refs log tree commit diff stats
path: root/src/common/thread.c
diff options
context:
space:
mode:
authorberkeviktor@aol.com <berkeviktor@aol.com>2011-02-28 19:18:32 +0100
committerberkeviktor@aol.com <berkeviktor@aol.com>2011-02-28 19:18:32 +0100
commit6355e6a76e73dfd3b8f49fcec524e7d2bbb5a11c (patch)
tree3f24aeb80bebcc90465b6e723d9fc10aa5e41d61 /src/common/thread.c
parentd3330fbe6f3cdcf3cc43550bb61c3393eb7cd794 (diff)
parentdd58a0aa9e29efc87bcdb287b37018c1c6fd132e (diff)
merge with xchat r1490
Diffstat (limited to 'src/common/thread.c')
-rw-r--r--src/common/thread.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/common/thread.c b/src/common/thread.c
new file mode 100644
index 00000000..02b17cfb
--- /dev/null
+++ b/src/common/thread.c
@@ -0,0 +1,33 @@
+#include <fcntl.h>
+#include "thread.h"
+
+thread *
+thread_new (void)
+{
+	thread *th;
+
+	th = calloc (1, sizeof (*th));
+	if (!th)
+	{
+		return NULL;
+	}
+
+	if (_pipe (th->pipe_fd, 4096, _O_BINARY) == -1)
+	{
+		free (th);
+		return NULL;
+	}
+
+	return th;
+}
+
+int
+thread_start (thread *th, void *(*start_routine)(void *), void *arg)
+{
+	DWORD id;
+
+	CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)start_routine, arg, 0, (DWORD *)&id));
+	th->threadid = id;
+
+	return 1;
+}