summaryrefslogtreecommitdiff
path: root/libmachdev
diff options
context:
space:
mode:
Diffstat (limited to 'libmachdev')
-rw-r--r--libmachdev/ds_routines.c7
-rw-r--r--libmachdev/mach_glue.h4
2 files changed, 11 insertions, 0 deletions
diff --git a/libmachdev/ds_routines.c b/libmachdev/ds_routines.c
index 93ac7ecc..d31e3a9b 100644
--- a/libmachdev/ds_routines.c
+++ b/libmachdev/ds_routines.c
@@ -61,12 +61,15 @@
#include <mach.h>
#include <cthreads.h>
+#include <ddekit/thread.h>
+
#include "vm_param.h"
#include "device_reply_U.h"
#include "io_req.h"
#include "dev_hdr.h"
#include "util.h"
#include "queue.h"
+#include "mach_glue.h"
static struct port_bucket *port_bucket;
static struct port_class *dev_class;
@@ -466,6 +469,10 @@ void reg_dev_emul (struct device_emulation_ops *ops)
void ds_server()
{
+ /* This thread calls Linux functions,
+ * so I need to make it known to the Linux environment. */
+ l4dde26_process_from_ddekit (ddekit_thread_myself ());
+
/* Launch. */
do
{
diff --git a/libmachdev/mach_glue.h b/libmachdev/mach_glue.h
index d1bd1fc7..770ea51b 100644
--- a/libmachdev/mach_glue.h
+++ b/libmachdev/mach_glue.h
@@ -4,6 +4,8 @@
/* network */
#include <arpa/inet.h>
+#include <ddekit/thread.h>
+
struct sk_buff;
struct net_device;
void skb_done_queue(struct sk_buff *skb);
@@ -34,4 +36,6 @@ struct block_device *open_block_dev (char *name, int part, dev_mode_t mode);
int block_dev_write (struct block_device *dev, int sectornr,
char *data, int count, void (*write_done) (int err));
+int l4dde26_process_from_ddekit(ddekit_thread_t *t);
+
#endif