summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2aacb16)
raw | patch | inline | side by side (parent: 2aacb16)
author | Justin Sobota <jsobota@ti.com> | |
Tue, 19 Feb 2013 22:31:26 +0000 (17:31 -0500) | ||
committer | Justin Sobota <jsobota@ti.com> | |
Tue, 19 Feb 2013 22:31:26 +0000 (17:31 -0500) |
device/k2h/global-resource-list.dtb | [new file with mode: 0644] | patch | blob |
device/k2h/global-resource-list.dts | [new file with mode: 0644] | patch | blob |
device/k2k/global-resource-list.dtb | [new file with mode: 0644] | patch | blob |
device/k2k/global-resource-list.dts | [new file with mode: 0644] | patch | blob |
src/rm.c | patch | blob | history | |
src/rm_services.c | patch | blob | history | |
test/rm_test.c | patch | blob | history |
diff --git a/device/k2h/global-resource-list.dtb b/device/k2h/global-resource-list.dtb
new file mode 100644 (file)
index 0000000..4dc93ee
Binary files /dev/null and b/device/k2h/global-resource-list.dtb differ
index 0000000..4dc93ee
Binary files /dev/null and b/device/k2h/global-resource-list.dtb differ
diff --git a/device/k2h/global-resource-list.dts b/device/k2h/global-resource-list.dts
--- /dev/null
@@ -0,0 +1,168 @@
+/dts-v1/;
+
+/ {
+ /* Device resource definitions based on current supported QMSS, CPPI, and
+ * PA LLD resources */
+
+ qmss {
+ linkram-control {
+ resource-range = <0 1>;
+ };
+ linkram {
+ resource-range = <0x00000000 0xFFFFFFFF>;
+ };
+ memory-regions {
+ resource-range = <0 64>;
+ };
+ firmware-pdsp {
+ resource-range = <0 8>;
+ };
+ queues {
+ resource-range = <0 16384>;
+ };
+ accumulator-ch {
+ resource-range = <0 48>;
+ };
+ qos-timer {
+ resource-range = <0 1>;
+ };
+ qos-cluster {
+ resource-range = <0 8>;
+ };
+ qos-queue {
+ resource-range = <0 64>;
+ };
+ }; /* qmss */
+
+ cppi {
+ srio-rx-ch {
+ resource-range = <0 16>;
+ };
+ srio-tx-ch {
+ resource-range = <0 16>;
+ };
+ srio-rx-flow-id {
+ resource-range = <0 20>;
+ };
+
+ aif-rx-ch {
+ resource-range = <0 129>;
+ };
+ aif-tx-ch {
+ resource-range = <0 129>;
+ };
+ aif-rx-flow-id {
+ resource-range = <0 129>;
+ };
+
+ fftc-a-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-a-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-a-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-b-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-b-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-b-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-c-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-c-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-c-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-d-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-d-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-d-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-e-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-e-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-e-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-f-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-f-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-f-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ pass-rx-ch {
+ resource-range = <0 24>;
+ };
+ pass-tx-ch {
+ resource-range = <0 9>;
+ };
+ pass-rx-flow-id {
+ resource-range = <0 32>;
+ };
+
+ qmss-qm1-rx-ch {
+ resource-range = <0 32>;
+ };
+ qmss-qm1-tx-ch {
+ resource-range = <0 32>;
+ };
+ qmss-qm1-rx-flow-id {
+ resource-range = <0 64>;
+ };
+
+ qmss-qm2-rx-ch {
+ resource-range = <0 32>;
+ };
+ qmss-qm2-tx-ch {
+ resource-range = <0 32>;
+ };
+ qmss-qm2-rx-flow-id {
+ resource-range = <0 64>;
+ };
+
+ bcp-rx-ch {
+ resource-range = <0 8>;
+ };
+ bcp-tx-ch {
+ resource-range = <0 8>;
+ };
+ bcp-rx-flow-id {
+ resource-range = <0 64>;
+ };
+ }; /* cppi */
+
+ pa {
+ pa-lut {
+ resource-range = <0 5>;
+ };
+ pa-firmware {
+ resource-range = <0 1>;
+ };
+ }; /* pa */
+
+};
diff --git a/device/k2k/global-resource-list.dtb b/device/k2k/global-resource-list.dtb
new file mode 100644 (file)
index 0000000..4dc93ee
Binary files /dev/null and b/device/k2k/global-resource-list.dtb differ
index 0000000..4dc93ee
Binary files /dev/null and b/device/k2k/global-resource-list.dtb differ
diff --git a/device/k2k/global-resource-list.dts b/device/k2k/global-resource-list.dts
--- /dev/null
@@ -0,0 +1,168 @@
+/dts-v1/;
+
+/ {
+ /* Device resource definitions based on current supported QMSS, CPPI, and
+ * PA LLD resources */
+
+ qmss {
+ linkram-control {
+ resource-range = <0 1>;
+ };
+ linkram {
+ resource-range = <0x00000000 0xFFFFFFFF>;
+ };
+ memory-regions {
+ resource-range = <0 64>;
+ };
+ firmware-pdsp {
+ resource-range = <0 8>;
+ };
+ queues {
+ resource-range = <0 16384>;
+ };
+ accumulator-ch {
+ resource-range = <0 48>;
+ };
+ qos-timer {
+ resource-range = <0 1>;
+ };
+ qos-cluster {
+ resource-range = <0 8>;
+ };
+ qos-queue {
+ resource-range = <0 64>;
+ };
+ }; /* qmss */
+
+ cppi {
+ srio-rx-ch {
+ resource-range = <0 16>;
+ };
+ srio-tx-ch {
+ resource-range = <0 16>;
+ };
+ srio-rx-flow-id {
+ resource-range = <0 20>;
+ };
+
+ aif-rx-ch {
+ resource-range = <0 129>;
+ };
+ aif-tx-ch {
+ resource-range = <0 129>;
+ };
+ aif-rx-flow-id {
+ resource-range = <0 129>;
+ };
+
+ fftc-a-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-a-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-a-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-b-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-b-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-b-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-c-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-c-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-c-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-d-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-d-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-d-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-e-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-e-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-e-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ fftc-f-rx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-f-tx-ch {
+ resource-range = <0 4>;
+ };
+ fftc-f-rx-flow-id {
+ resource-range = <0 8>;
+ };
+
+ pass-rx-ch {
+ resource-range = <0 24>;
+ };
+ pass-tx-ch {
+ resource-range = <0 9>;
+ };
+ pass-rx-flow-id {
+ resource-range = <0 32>;
+ };
+
+ qmss-qm1-rx-ch {
+ resource-range = <0 32>;
+ };
+ qmss-qm1-tx-ch {
+ resource-range = <0 32>;
+ };
+ qmss-qm1-rx-flow-id {
+ resource-range = <0 64>;
+ };
+
+ qmss-qm2-rx-ch {
+ resource-range = <0 32>;
+ };
+ qmss-qm2-tx-ch {
+ resource-range = <0 32>;
+ };
+ qmss-qm2-rx-flow-id {
+ resource-range = <0 64>;
+ };
+
+ bcp-rx-ch {
+ resource-range = <0 8>;
+ };
+ bcp-tx-ch {
+ resource-range = <0 8>;
+ };
+ bcp-rx-flow-id {
+ resource-range = <0 64>;
+ };
+ }; /* cppi */
+
+ pa {
+ pa-lut {
+ resource-range = <0 5>;
+ };
+ pa-firmware {
+ resource-range = <0 1>;
+ };
+ }; /* pa */
+
+};
diff --git a/src/rm.c b/src/rm.c
index b846210264c2c99ccabafa688029c94f3ed0374e..a23fd5c18e9875ef1c81c9596c4de478f1b4e6e1 100644 (file)
--- a/src/rm.c
+++ b/src/rm.c
@@ -299,46 +299,53 @@ static void transactionForwarder (Rm_Inst *rmInst, Rm_Transaction *transaction)
Rm_Packet *rmPkt = NULL;
Rm_PacketHandle pktHandle = NULL;
Rm_Packet *rmPkt = NULL;
Rm_PacketHandle pktHandle = NULL;
- if (rmInst->instType == Rm_instType_CLIENT) {
- dstTransport = rmTransportFindRemoteInstType(rmInst->transports, Rm_instType_CLIENT_DELEGATE);
-
- if (!dstTransport) {
+ /* Forward request if callback function has been plugged (request came from service handle)
+ * or remoteOriginatingId is populated (request came from another instance over transport) */
+ if (transaction->callback.serviceCallback || transaction->remoteOriginatingId) {
+ if (rmInst->instType == Rm_instType_CLIENT) {
+ dstTransport = rmTransportFindRemoteInstType(rmInst->transports, Rm_instType_CLIENT_DELEGATE);
+
+ if (!dstTransport) {
+ dstTransport = rmTransportFindRemoteInstType(rmInst->transports, Rm_instType_SERVER);
+ }
+ }
+ else if (rmInst->instType == Rm_instType_CLIENT_DELEGATE) {
dstTransport = rmTransportFindRemoteInstType(rmInst->transports, Rm_instType_SERVER);
}
dstTransport = rmTransportFindRemoteInstType(rmInst->transports, Rm_instType_SERVER);
}
- }
- else if (rmInst->instType == Rm_instType_CLIENT_DELEGATE) {
- dstTransport = rmTransportFindRemoteInstType(rmInst->transports, Rm_instType_SERVER);
- }
- /* Just queue transaction if transport hasn't been registered. Do not return error */
- if (dstTransport) {
- rmPkt = dstTransport->callouts.rmAllocPkt(dstTransport->appTransportHandle,
- sizeof(Rm_Packet), &pktHandle);
- if (!rmPkt || !pktHandle) {
- transaction->state = RM_ERROR_TRANSPORT_ALLOC_PKT_ERROR;
- goto errorExit;
- }
+ /* Just queue transaction if transport hasn't been registered. Do not return error */
+ if (dstTransport) {
+ rmPkt = dstTransport->callouts.rmAllocPkt(dstTransport->appTransportHandle,
+ sizeof(Rm_Packet), &pktHandle);
+ if (!rmPkt || !pktHandle) {
+ transaction->state = RM_ERROR_TRANSPORT_ALLOC_PKT_ERROR;
+ goto errorExit;
+ }
- switch (transaction->type) {
- case Rm_service_RESOURCE_ALLOCATE_INIT:
- case Rm_service_RESOURCE_ALLOCATE_USE:
- case Rm_service_RESOURCE_FREE:
- case Rm_service_RESOURCE_GET_BY_NAME:
- createResourceReqPkt(rmPkt, rmInst->instName, transaction);
- break;
- case Rm_service_RESOURCE_MAP_TO_NAME:
- case Rm_service_RESOURCE_UNMAP_NAME:
- createNsRequestPkt(rmPkt, rmInst->instName, transaction);
- break;
+ switch (transaction->type) {
+ case Rm_service_RESOURCE_ALLOCATE_INIT:
+ case Rm_service_RESOURCE_ALLOCATE_USE:
+ case Rm_service_RESOURCE_FREE:
+ case Rm_service_RESOURCE_GET_BY_NAME:
+ createResourceReqPkt(rmPkt, rmInst->instName, transaction);
+ break;
+ case Rm_service_RESOURCE_MAP_TO_NAME:
+ case Rm_service_RESOURCE_UNMAP_NAME:
+ createNsRequestPkt(rmPkt, rmInst->instName, transaction);
+ break;
+ }
+
+ if (dstTransport->callouts.rmSendPkt(dstTransport->appTransportHandle, pktHandle) < RM_OK) {
+ transaction->state = RM_ERROR_TRANSPORT_SEND_ERROR;
+ goto errorExit;
+ }
+ transaction->hasBeenForwarded = true;
+ /* Transaction not deleted. Waiting for response from RM CD or Server */
}
}
-
- if (dstTransport->callouts.rmSendPkt(dstTransport->appTransportHandle, pktHandle) < RM_OK) {
- transaction->state = RM_ERROR_TRANSPORT_SEND_ERROR;
- goto errorExit;
- }
- transaction->hasBeenForwarded = true;
- /* Transaction not deleted. Waiting for response from RM CD or Server */
}
}
+ else {
+ transaction->state = RM_ERROR_CALLBACK_NOT_PROVIDED;
+ }
errorExit:
return;
}
errorExit:
return;
}
diff --git a/src/rm_services.c b/src/rm_services.c
index 31b8f3ccdc72f7afc191b76056f252b95200834b..f8af02dcdfec633656a55286365093f0ead5df7e 100644 (file)
--- a/src/rm_services.c
+++ b/src/rm_services.c
return;
}
return;
}
- if (serviceRequest->callback.serviceCallback == NULL) {
- serviceResponse->serviceState = RM_ERROR_CALLBACK_NOT_PROVIDED;
- return;
- }
-
if (serviceRequest->type >= Rm_service_LAST) {
serviceResponse->serviceState = RM_ERROR_INVALID_SERVICE_TYPE;
return;
if (serviceRequest->type >= Rm_service_LAST) {
serviceResponse->serviceState = RM_ERROR_INVALID_SERVICE_TYPE;
return;
diff --git a/test/rm_test.c b/test/rm_test.c
index d742d52891e47f6b08d7da4275028ca85499ca92..6ac8ce1fe8f970a1238689ca8f2d97cd38335179 100644 (file)
--- a/test/rm_test.c
+++ b/test/rm_test.c
requestInfo.resourceBase = RM_RESOURCE_BASE_UNSPECIFIED;
requestInfo.resourceLength = 1;
requestInfo.resourceAlignment = 0;
requestInfo.resourceBase = RM_RESOURCE_BASE_UNSPECIFIED;
requestInfo.resourceLength = 1;
requestInfo.resourceAlignment = 0;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceBase = RM_RESOURCE_BASE_UNSPECIFIED;
requestInfo.resourceLength = 1;
requestInfo.resourceAlignment = RM_RESOURCE_ALIGNMENT_UNSPECIFIED;
requestInfo.resourceBase = RM_RESOURCE_BASE_UNSPECIFIED;
requestInfo.resourceLength = 1;
requestInfo.resourceAlignment = RM_RESOURCE_ALIGNMENT_UNSPECIFIED;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceBase = RM_RESOURCE_BASE_UNSPECIFIED;
requestInfo.resourceLength = 1;
requestInfo.resourceAlignment = 200;
requestInfo.resourceBase = RM_RESOURCE_BASE_UNSPECIFIED;
requestInfo.resourceLength = 1;
requestInfo.resourceAlignment = 200;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceBase = 1002;
requestInfo.resourceLength = 1;
requestInfo.resourceNsName = nameServerNameFavQ;
requestInfo.resourceBase = 1002;
requestInfo.resourceLength = 1;
requestInfo.resourceNsName = nameServerNameFavQ;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s creating NameServer object...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s creating NameServer object...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameMemRegion;
requestInfo.resourceBase = 12;
requestInfo.resourceLength = 1;
requestInfo.resourceName = resourceNameMemRegion;
requestInfo.resourceBase = 12;
requestInfo.resourceLength = 1;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s Trying to reserve memory region taken by Linux...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s Trying to reserve memory region taken by Linux...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 14;
requestInfo.resourceLength = 5;
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 14;
requestInfo.resourceLength = 5;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 19;
requestInfo.resourceLength = 31;
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 19;
requestInfo.resourceLength = 31;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s Allocating resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 25;
requestInfo.resourceLength = 3;
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 25;
requestInfo.resourceLength = 3;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 34;
requestInfo.resourceLength = 3;
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 34;
requestInfo.resourceLength = 3;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 28;
requestInfo.resourceLength = 6;
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 28;
requestInfo.resourceLength = 6;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 53;
requestInfo.resourceLength = 2;
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 53;
requestInfo.resourceLength = 2;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 2;
requestInfo.resourceLength = 2;
requestInfo.resourceName = resourceNameAifRxCh;
requestInfo.resourceBase = 2;
requestInfo.resourceLength = 2;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s freeing resource...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameGpQ;
requestInfo.resourceBase = 6543;
requestInfo.resourceLength = 10;
requestInfo.resourceName = resourceNameGpQ;
requestInfo.resourceBase = 6543;
requestInfo.resourceLength = 10;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s Allocating resource for init...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s Allocating resource for init...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameGpQ;
requestInfo.resourceBase = 6543;
requestInfo.resourceLength = 10;
requestInfo.resourceName = resourceNameGpQ;
requestInfo.resourceBase = 6543;
requestInfo.resourceLength = 10;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s Allocating same resource for use...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s Allocating same resource for use...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
requestInfo.resourceName = resourceNameInfraQ;
requestInfo.resourceBase = 805;
requestInfo.resourceLength = 1;
requestInfo.resourceName = resourceNameInfraQ;
requestInfo.resourceBase = 805;
requestInfo.resourceLength = 1;
- requestInfo.callback.serviceCallback = testServiceCallback;
System_printf("Core %d: %s Attempting to allocate infrastructure queue taken by Linux...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
System_printf("Core %d: %s Attempting to allocate infrastructure queue taken by Linux...\n", MultiProc_self(), rmServerName);
rmServerServiceHandle->Rm_serviceHandler(rmServerServiceHandle->rmHandle, &requestInfo, &responseInfo);
responseInfo.serviceState);
}
responseInfo.serviceState);
}
+ /* Attempt to request a service from an instance that requires a blocking operation to satisfy
+ * the request without providing a callback function. */
+ memset((void *) &requestInfo, 0, sizeof(Rm_ServiceReqInfo));
+ requestInfo.type = Rm_service_RESOURCE_ALLOCATE_INIT;
+ requestInfo.resourceName = resourceNameGpQ;
+ requestInfo.resourceBase = 7000;
+ requestInfo.resourceLength = 1;
+
+ System_printf("Core %d: %s Attempting service request without callback function...\n", MultiProc_self(), rmClientName);
+ rmClientServiceHandle->Rm_serviceHandler(rmClientServiceHandle->rmHandle, &requestInfo, &responseInfo);
+ if ((responseInfo.serviceState == RM_SERVICE_APPROVED) ||
+ (responseInfo.serviceState == RM_SERVICE_PROCESSING)) {
+ if (blockForResponse(&responseInfo)) {
+ System_printf("Core %d: %s allocate resource: %s base: %d length: %d\n", MultiProc_self(),
+ rmClientName,
+ requestInfo.resourceName,
+ requestInfo.resourceBase,
+ requestInfo.resourceLength);
+ }
+ }
+ else {
+ System_printf("Core %d: Static allocation failed with error: %d\n", MultiProc_self(),
+ responseInfo.serviceState);
+ }
+
/* Release the syncObj so Server can print results of resource allocations */
releaseSyncObj();
}
/* Release the syncObj so Server can print results of resource allocations */
releaseSyncObj();
}