diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2011-05-24 22:26:34 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2011-05-26 10:43:07 -0500 |
commit | 87e1858b0157163c48dd8e96d1f7370306eec9ab (patch) | |
tree | bbb96cdeaff30f5ebc0232f8b9e848be188828e8 /src/lib | |
parent | 97399f8e048f3fe76bc9fe179546990b8ba54562 (diff) | |
download | talos-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.C | 24 |
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); +} |