You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/08/20 17:54:11 UTC
svn commit: r806228 -
/commons/sandbox/runtime/trunk/src/main/native/shared/sema.c
Author: mturk
Date: Thu Aug 20 15:54:10 2009
New Revision: 806228
URL: http://svn.apache.org/viewvc?rev=806228&view=rev
Log:
Few more semaphore wrapper API's
Modified:
commons/sandbox/runtime/trunk/src/main/native/shared/sema.c
Modified: commons/sandbox/runtime/trunk/src/main/native/shared/sema.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/sema.c?rev=806228&r1=806227&r2=806228&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/sema.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/sema.c Thu Aug 20 15:54:10 2009
@@ -37,3 +37,76 @@
return semo;
}
+ACR_JNI_EXPORT_DECLARE(jint, Semaphore, close0)(ACR_JNISTDARGS,
+ jobject semd)
+{
+ int rc = ACR_EBADF;
+ int sd;
+ UNREFERENCED_O;
+
+ sd = ACR_DescriptorGetInt(_E, semd);
+ if (sd > 0) {
+ ACR_DescriptorClear(_E, semd);
+ rc = ACR_SemaphoreClose(_E, sd);
+ }
+ return rc;
+}
+
+ACR_JNI_EXPORT_DECLARE(jboolean, Semaphore, wait0)(ACR_JNISTDARGS,
+ jobject semd)
+{
+ int rc = ACR_EBADF;
+ int sd;
+ UNREFERENCED_O;
+
+ sd = ACR_DescriptorGetInt(_E, semd);
+ if (sd > 0) {
+ rc = ACR_SemaphoreWait(_E, sd);
+ }
+ if (rc == ACR_SUCCESS)
+ return JNI_TRUE;
+ else {
+ if (rc != ACR_EBUSY) {
+ ACR_THROW_IO_IF_ERR(rc);
+ }
+ return JNI_FALSE;
+ }
+}
+
+ACR_JNI_EXPORT_DECLARE(jboolean, Semaphore, wait1)(ACR_JNISTDARGS,
+ jobject semd)
+{
+ int rc = ACR_EBADF;
+ int sd;
+ UNREFERENCED_O;
+
+ sd = ACR_DescriptorGetInt(_E, semd);
+ if (sd > 0) {
+ rc = ACR_SemaphoreTryWait(_E, sd);
+ }
+ if (rc == ACR_SUCCESS)
+ return JNI_TRUE;
+ else {
+ if (rc != ACR_EBUSY) {
+ ACR_THROW_IO_IF_ERR(rc);
+ }
+ return JNI_FALSE;
+ }
+}
+
+ACR_JNI_EXPORT_DECLARE(jboolean, Semaphore, release0)(ACR_JNISTDARGS,
+ jobject semd)
+{
+ int rc = ACR_EBADF;
+ int sd;
+ UNREFERENCED_O;
+
+ sd = ACR_DescriptorGetInt(_E, semd);
+ if (sd > 0) {
+ rc = ACR_SemaphoreRelease(_E, sd);
+ }
+
+ ACR_THROW_IO_IF_ERR(rc);
+ return rc ? JNI_FALSE : JNI_TRUE;
+}
+