From 46e1995ef071f61cd1e21e61857c7ce66cac2022 Mon Sep 17 00:00:00 2001
From: Glenn Elliott <gelliott@cs.unc.edu>
Date: Thu, 2 Jun 2011 16:12:13 -0400
Subject: [PATCH] LibLitmus2010 changes to support klitirqd and Nvidia GPUs.  Changes mostly related to k-FMLP.

---
 include/litmus.h |   12 +++++++++++-
 src/syscalls.c   |   10 ++++++++++
 2 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/include/litmus.h b/include/litmus.h
index 52435d8..035d1c3 100644
--- a/include/litmus.h
+++ b/include/litmus.h
@@ -49,7 +49,8 @@ int sporadic_task_ns(
 /* file descriptor attached shared objects support */
 typedef enum  {
 	FMLP_SEM	= 0,
-	SRP_SEM		= 1,
+	KFMLP_SEM	= 1,
+	SRP_SEM		= 2,
 } obj_type_t;
 
 int od_openx(int fd, obj_type_t type, int obj_id, void* config);
@@ -64,6 +65,10 @@ static inline int od_open(int fd, obj_type_t type, int obj_id)
 int litmus_lock(int od);
 int litmus_unlock(int od);
 
+/* nvidia graphics cards */
+int register_nv_device(int nv_device_id);
+int unregister_nv_device(int nv_device_id);
+
 /* job control*/
 int get_job_no(unsigned int* job_no);
 int wait_for_job_release(unsigned int job_no);
@@ -120,6 +125,11 @@ static inline int open_fmlp_sem(int fd, int name)
 	return od_open(fd, FMLP_SEM, name);
 }
 
+static inline int open_kfmlp_sem(int fd, int name, void* arg)
+{
+	return od_openx(fd, KFMLP_SEM, name, arg);
+}
+
 static inline int open_srp_sem(int fd, int name)
 {
 	return od_open(fd, SRP_SEM, name);
diff --git a/src/syscalls.c b/src/syscalls.c
index d800141..b0fee23 100644
--- a/src/syscalls.c
+++ b/src/syscalls.c
@@ -88,3 +88,13 @@ int null_call(cycles_t *timestamp)
 {
 	return syscall(__NR_null_call, timestamp);
 }
+
+int register_nv_device(int nv_device_id)
+{
+	return syscall(__NR_register_nv_device, nv_device_id, 1);
+}
+
+int unregister_nv_device(int nv_device_id)
+{
+	return syscall(__NR_register_nv_device, nv_device_id, 0);
+}
-- 
1.7.0.4

