diff options
author | Doug Gilbert <dgilbert@us.ibm.com> | 2011-11-04 12:12:01 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-01-05 11:06:04 -0600 |
commit | 7de0708eac63bb81786c2a5e794c5d6fbef069c4 (patch) | |
tree | b47aeb4c9827851d61b44d5cb922704f73257693 /src/lib/syscall_msg.C | |
parent | 048789fdce6b406de3b7149f8171afd63eea1829 (diff) | |
download | blackbird-hostboot-7de0708eac63bb81786c2a5e794c5d6fbef069c4.tar.gz blackbird-hostboot-7de0708eac63bb81786c2a5e794c5d6fbef069c4.zip |
Interrupt presenter implementation
Change-Id: If6b499d819b71298b8a64e096e1eb83c639ad645
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/517
Tested-by: Jenkins Server
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/lib/syscall_msg.C')
-rw-r--r-- | src/lib/syscall_msg.C | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/lib/syscall_msg.C b/src/lib/syscall_msg.C index 08fafcbef..1b0ea500a 100644 --- a/src/lib/syscall_msg.C +++ b/src/lib/syscall_msg.C @@ -21,6 +21,7 @@ // // IBM_PROLOG_END #include <sys/msg.h> +#include <sys/interrupt.h> #include <sys/syscall.h> #include <sys/vfs.h> @@ -42,11 +43,20 @@ int msg_q_register(msg_q_t q, const char* name) { if (0 == strcmp(VFS_ROOT, name)) { - return (int64_t)_syscall1(MSGQ_REGISTER_ROOT, q); + return (int64_t)_syscall2(MSGQ_REGISTER_ROOT, + reinterpret_cast<void*>(MSGQ_ROOT_VFS), + q); + } + else if (0 == strcmp(INTR_MSGQ, name)) + { + return (int64_t)_syscall2(MSGQ_REGISTER_ROOT, + reinterpret_cast<void*>(MSGQ_ROOT_INTR), + q); } else { - msg_q_t vfsQ = (msg_q_t)_syscall0(MSGQ_RESOLVE_ROOT); + msg_q_t vfsQ = (msg_q_t)_syscall1(MSGQ_RESOLVE_ROOT, + reinterpret_cast<void*>(MSGQ_ROOT_VFS)); msg_t* msg = msg_allocate(); msg->type = VFS_MSG_REGISTER_MSGQ; msg->data[0] = (uint64_t) q; @@ -61,11 +71,18 @@ msg_q_t msg_q_resolve(const char* name) { if (0 == strcmp(VFS_ROOT, name)) { - return (msg_q_t)_syscall0(MSGQ_RESOLVE_ROOT); + return (msg_q_t)_syscall1(MSGQ_RESOLVE_ROOT, + reinterpret_cast<void*>(MSGQ_ROOT_VFS)); + } + else if (0 == strcmp(INTR_MSGQ, name)) + { + return (msg_q_t)_syscall1(MSGQ_RESOLVE_ROOT, + reinterpret_cast<void*>(MSGQ_ROOT_INTR)); } else { - msg_q_t vfsQ = (msg_q_t)_syscall0(MSGQ_RESOLVE_ROOT); + msg_q_t vfsQ = (msg_q_t)_syscall1(MSGQ_RESOLVE_ROOT, + reinterpret_cast<void*>(MSGQ_ROOT_VFS)); msg_t* msg = msg_allocate(); msg->type = VFS_MSG_RESOLVE_MSGQ; msg->extra_data = (void*) name; |