X-Git-Url: https://git.ti.com/gitweb?p=ipc%2Fipcdev.git;a=blobdiff_plain;f=linux%2Fsrc%2Fapi%2FMultiProc.c;h=015955abed9fac4f6f3d631ebdc2da0fbb40147c;hp=0a8435f1d1bacf67e4406ef911fe5746ac634137;hb=d8e7b6ecb9b97522d58f7e6f5a1662793ed5f9ca;hpb=ce35c999f5c3368e387740a38aef3358290579b3 diff --git a/linux/src/api/MultiProc.c b/linux/src/api/MultiProc.c index 0a8435f..015955a 100644 --- a/linux/src/api/MultiProc.c +++ b/linux/src/api/MultiProc.c @@ -102,3 +102,51 @@ Void MultiProc_getConfig (MultiProc_Config * cfg) return; } + +/* + * ======== MultiProc_rprocSetId ======== + */ +Int MultiProc_rprocSetId(UInt16 procId, UInt rprocId) +{ + Int status; + LAD_ClientHandle handle; + struct LAD_CommandObj cmd; + union LAD_ResponseObj rsp; + UInt16 clusterId; + + + handle = LAD_findHandle(); + + if (handle == LAD_MAXNUMCLIENTS) { + PRINTVERBOSE1("MultiProc_rprocSetId: can't find connection to daemon " + "for pid %d\n", getpid()) + return (-1); + } + + cmd.cmd = LAD_RPROC_SETID; + cmd.clientId = handle; + cmd.args.rprocSetId.procId = procId; + cmd.args.rprocSetId.rprocId = rprocId; + + if ((status = LAD_putCommand(&cmd)) != LAD_SUCCESS) { + PRINTVERBOSE1("MultiProc_rprocSetId: sending LAD command failed, " + "status=%d\n", status) + return (status); + } + + if ((status = LAD_getResponse(handle, &rsp)) != LAD_SUCCESS) { + PRINTVERBOSE1("MultiProc_rprocSetId: no LAD response, status=%d\n", + status) + return (status); + } + status = rsp.status; + + PRINTVERBOSE2("MultiProc_rprocSetId: got LAD response for client %d, " + "status=%d\n", handle, status) + + /* update configuration in api state */ + clusterId = procId - _MultiProc_cfg.baseIdOfCluster; + _MultiProc_cfg.rprocList[clusterId] = rprocId; + + return (status); +}