forked from M-Labs/artiq
1
0
Fork 0

firmware, compiler: rename rpc functions to be more consistent.

This commit is contained in:
whitequark 2017-02-25 14:12:58 +00:00
parent 13c6e96760
commit d04e611232
4 changed files with 17 additions and 17 deletions

View File

@ -340,11 +340,11 @@ class LLVMIRGenerator:
llty = ll.FunctionType(llvoid, []) llty = ll.FunctionType(llvoid, [])
elif name == "memcmp": elif name == "memcmp":
llty = ll.FunctionType(lli32, [llptr, llptr, lli32]) llty = ll.FunctionType(lli32, [llptr, llptr, lli32])
elif name == "send_rpc": elif name == "rpc_send":
llty = ll.FunctionType(llvoid, [lli32, llsliceptr, llptrptr]) llty = ll.FunctionType(llvoid, [lli32, llsliceptr, llptrptr])
elif name == "send_async_rpc": elif name == "rpc_send_async":
llty = ll.FunctionType(llvoid, [lli32, llsliceptr, llptrptr]) llty = ll.FunctionType(llvoid, [lli32, llsliceptr, llptrptr])
elif name == "recv_rpc": elif name == "rpc_recv":
llty = ll.FunctionType(lli32, [llptr]) llty = ll.FunctionType(lli32, [llptr])
elif name == "now": elif name == "now":
llty = lli64 llty = lli64
@ -359,7 +359,7 @@ class LLVMIRGenerator:
llglobal = ll.Function(self.llmodule, llty, name) llglobal = ll.Function(self.llmodule, llty, name)
if name in ("__artiq_raise", "__artiq_reraise", "llvm.trap"): if name in ("__artiq_raise", "__artiq_reraise", "llvm.trap"):
llglobal.attributes.add("noreturn") llglobal.attributes.add("noreturn")
if name in ("rtio_log", "send_rpc", "send_async_rpc", if name in ("rtio_log", "rpc_send", "rpc_send_async",
"watchdog_set", "watchdog_clear", "watchdog_set", "watchdog_clear",
self.target.print_function): self.target.print_function):
llglobal.attributes.add("nounwind") llglobal.attributes.add("nounwind")
@ -1242,10 +1242,10 @@ class LLVMIRGenerator:
self.llbuilder.store(llargslot, llargptr) self.llbuilder.store(llargslot, llargptr)
if fun_type.async: if fun_type.async:
self.llbuilder.call(self.llbuiltin("send_async_rpc"), self.llbuilder.call(self.llbuiltin("rpc_send_async"),
[llservice, lltagptr, llargs]) [llservice, lltagptr, llargs])
else: else:
self.llbuilder.call(self.llbuiltin("send_rpc"), self.llbuilder.call(self.llbuiltin("rpc_send"),
[llservice, lltagptr, llargs]) [llservice, lltagptr, llargs])
# Don't waste stack space on saved arguments. # Don't waste stack space on saved arguments.
@ -1257,7 +1257,7 @@ class LLVMIRGenerator:
# T result = { # T result = {
# void *ret_ptr = alloca(sizeof(T)); # void *ret_ptr = alloca(sizeof(T));
# void *ptr = ret_ptr; # void *ptr = ret_ptr;
# loop: int size = recv_rpc(ptr); # loop: int size = rpc_recv(ptr);
# // Non-zero: Provide `size` bytes of extra storage for variable-length data. # // Non-zero: Provide `size` bytes of extra storage for variable-length data.
# if(size) { ptr = alloca(size); goto loop; } # if(size) { ptr = alloca(size); goto loop; }
# else *(T*)ret_ptr # else *(T*)ret_ptr
@ -1278,12 +1278,12 @@ class LLVMIRGenerator:
llphi = self.llbuilder.phi(llslotgen.type, name="rpc.ptr") llphi = self.llbuilder.phi(llslotgen.type, name="rpc.ptr")
llphi.add_incoming(llslotgen, llprehead) llphi.add_incoming(llslotgen, llprehead)
if llunwindblock: if llunwindblock:
llsize = self.llbuilder.invoke(self.llbuiltin("recv_rpc"), [llphi], llsize = self.llbuilder.invoke(self.llbuiltin("rpc_recv"), [llphi],
llheadu, llunwindblock, llheadu, llunwindblock,
name="rpc.size.next") name="rpc.size.next")
self.llbuilder.position_at_end(llheadu) self.llbuilder.position_at_end(llheadu)
else: else:
llsize = self.llbuilder.call(self.llbuiltin("recv_rpc"), [llphi], llsize = self.llbuilder.call(self.llbuiltin("rpc_recv"), [llphi],
name="rpc.size.next") name="rpc.size.next")
lldone = self.llbuilder.icmp_unsigned('==', llsize, ll.Constant(llsize.type, 0), lldone = self.llbuilder.icmp_unsigned('==', llsize, ll.Constant(llsize.type, 0),
name="rpc.done") name="rpc.done")

View File

@ -86,9 +86,9 @@ static mut API: &'static [(&'static str, *const ())] = &[
api!(watchdog_set = ::watchdog_set), api!(watchdog_set = ::watchdog_set),
api!(watchdog_clear = ::watchdog_clear), api!(watchdog_clear = ::watchdog_clear),
api!(send_rpc = ::send_rpc), api!(rpc_send = ::rpc_send),
api!(send_async_rpc = ::send_async_rpc), api!(rpc_send_async = ::rpc_send_async),
api!(recv_rpc = ::recv_rpc), api!(rpc_recv = ::rpc_recv),
api!(cache_get = ::cache_get), api!(cache_get = ::cache_get),
api!(cache_put = ::cache_put), api!(cache_put = ::cache_put),

View File

@ -121,7 +121,7 @@ extern fn abort() -> ! {
loop {} loop {}
} }
extern fn send_rpc(service: u32, tag: CSlice<u8>, data: *const *const ()) { extern fn rpc_send(service: u32, tag: CSlice<u8>, data: *const *const ()) {
while !rpc_queue::empty() {} while !rpc_queue::empty() {}
send(&RpcSend { send(&RpcSend {
async: false, async: false,
@ -131,7 +131,7 @@ extern fn send_rpc(service: u32, tag: CSlice<u8>, data: *const *const ()) {
}) })
} }
extern fn send_async_rpc(service: u32, tag: CSlice<u8>, data: *const *const ()) { extern fn rpc_send_async(service: u32, tag: CSlice<u8>, data: *const *const ()) {
while rpc_queue::full() {} while rpc_queue::full() {}
rpc_queue::enqueue(|mut slice| { rpc_queue::enqueue(|mut slice| {
let length = { let length = {
@ -153,7 +153,7 @@ extern fn send_async_rpc(service: u32, tag: CSlice<u8>, data: *const *const ())
}) })
} }
extern fn recv_rpc(slot: *mut ()) -> usize { extern fn rpc_recv(slot: *mut ()) -> usize {
send(&RpcRecvRequest(slot)); send(&RpcRecvRequest(slot));
recv!(&RpcRecvReply(ref result) => { recv!(&RpcRecvReply(ref result) => {
match result { match result {
@ -281,7 +281,7 @@ unsafe fn attribute_writeback(typeinfo: *const ()) {
attributes = attributes.offset(1); attributes = attributes.offset(1);
if (*attribute).tag.len() > 0 { if (*attribute).tag.len() > 0 {
send_async_rpc(0, (*attribute).tag, [ rpc_send_async(0, (*attribute).tag, [
&object as *const _ as *const (), &object as *const _ as *const (),
&(*attribute).name as *const _ as *const (), &(*attribute).name as *const _ as *const (),
(object as usize + (*attribute).offset) as *const () (object as usize + (*attribute).offset) as *const ()

View File

@ -4,7 +4,7 @@
from artiq.language.core import * from artiq.language.core import *
from artiq.language.types import * from artiq.language.types import *
# CHECK: call void @send_async_rpc # CHECK: call void @rpc_send_async
@rpc(flags={"async"}) @rpc(flags={"async"})
def foo(): def foo():