summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2011-05-24 22:26:34 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2011-05-26 10:43:07 -0500
commit87e1858b0157163c48dd8e96d1f7370306eec9ab (patch)
treebbb96cdeaff30f5ebc0232f8b9e848be188828e8 /src/lib
parent97399f8e048f3fe76bc9fe179546990b8ba54562 (diff)
downloadtalos-hostboot-87e1858b0157163c48dd8e96d1f7370306eec9ab.tar.gz
talos-hostboot-87e1858b0157163c48dd8e96d1f7370306eec9ab.zip
Userspace interfaces for processor affinity.
Change-Id: Id053edc0aa9be2e6e820ea7bf0d81bf5c38d4f54 Reviewed-on: http://gfwr801.rchland.ibm.com:8080/gerrit/101 Tested-by: Jenkins Server Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/syscall_task.C24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/lib/syscall_task.C b/src/lib/syscall_task.C
index 39530225b..fcedcb64b 100644
--- a/src/lib/syscall_task.C
+++ b/src/lib/syscall_task.C
@@ -36,7 +36,7 @@ tid_t task_gettid()
// GRP13.
register task_t* task;
- asm volatile("addi %0, 13, 0" : "=r"(task));
+ asm volatile("mr %0, 13" : "=r"(task));
return task->tid;
//return (tid_t)_syscall0(TASK_GETTID);
}
@@ -44,7 +44,7 @@ tid_t task_gettid()
cpuid_t task_getcpuid()
{
register task_t* task;
- asm volatile("addi %0, 13, 0" : "=r"(task));
+ asm volatile("mr %0, 13" : "=r"(task));
return task->cpu->cpu;
}
@@ -76,3 +76,23 @@ tid_t task_exec(const char* file, void* ptr)
msg_free(msg);
return child;
}
+
+void task_affinity_pin()
+{
+ // Get task structure.
+ register task_t* task;
+ asm volatile("mr %0, 13" : "=r"(task));
+
+ // Increment pin count.
+ __sync_add_and_fetch(&task->affinity_pinned, 1);
+}
+
+void task_affinity_unpin()
+{
+ // Get task structure.
+ register task_t* task;
+ asm volatile("mr %0, 13" : "=r"(task));
+
+ // Decrement pin count.
+ __sync_sub_and_fetch(&task->affinity_pinned, 1);
+}
OpenPOWER on IntegriCloud