From 42dbcdfacd363ec16b92438ad57fbc0bca884c47 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Janosch=20Gr=C3=A4f?= Date: Fri, 26 Dec 2008 03:03:47 +0100 Subject: [PATCH] libmeinos/rpc: ~rpc_call has a flag parameter now +flag SENDTO - send rpc to specific process --- apps/include/rpc.h | 7 +++++-- apps/lib/libmeinos/rpc.c | 12 +++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/apps/include/rpc.h b/apps/include/rpc.h index 17efccb..c6c6dda 100644 --- a/apps/include/rpc.h +++ b/apps/include/rpc.h @@ -27,14 +27,17 @@ #define RPC_SYNOPSIS_MAXLEN NAME_MAX +#define RPC_FLAG_RETPARAMS 1 +#define RPC_FLAG_SENDTO 2 + #define rpc_func(func,synopsis,paramsz) rpc_func_create(__STRING(func),func,synopsis,paramsz) pid_t rpc_curpid; int rpc_func_create(const char *name,void *func,const char *synopsis,size_t paramsz); int rpc_func_destroy(int id); -int rpc_vcall(const char *name,int ret_params,va_list args); -int rpc_call(const char *name,int ret_params,...); +int rpc_vcall(const char *name,int flags,va_list args); +int rpc_call(const char *name,int flags,...); int rpc_vcallself(const char *name,void *func,int ret_params,va_list args); int rpc_callself(const char *name,void *func,int ret_params,...); int rpc_poll(int id); diff --git a/apps/lib/libmeinos/rpc.c b/apps/lib/libmeinos/rpc.c index 0dc505c..7d9d10f 100644 --- a/apps/lib/libmeinos/rpc.c +++ b/apps/lib/libmeinos/rpc.c @@ -39,13 +39,15 @@ int rpc_func_destroy(int id) { return ret<0?-1:ret; } -int rpc_vcall(const char *name,int ret_params,va_list args) { +int rpc_vcall(const char *name,int flags,va_list args) { int ret,id,error; char synopsis[RPC_SYNOPSIS_MAXLEN]; size_t paramsz,i; pack_t params; + int ret_params = (flags&RPC_FLAG_RETPARAMS); + pid_t sendto = (flags&RPC_FLAG_SENDTO)?va_arg(args,pid_t):0; - id = syscall_call(SYSCALL_RPC_GETINFO,8,-1,name,0,0,¶msz,synopsis,RPC_SYNOPSIS_MAXLEN,0); + id = syscall_call(SYSCALL_RPC_GETINFO,8,-1,name,sendto,0,¶msz,synopsis,RPC_SYNOPSIS_MAXLEN,0); if (id>=0) { // pack parameters params = pack_malloc(paramsz); @@ -97,10 +99,10 @@ int rpc_vcall(const char *name,int ret_params,va_list args) { return -1; } -int rpc_call(const char *name,int ret_params,...) { +int rpc_call(const char *name,int flags,...) { va_list args; - va_start(args,ret_params); - int ret = rpc_vcall(name,ret_params,args); + va_start(args,flags); + int ret = rpc_vcall(name,flags,args); va_end(args); return ret; } -- 2.11.4.GIT