costin      02/04/18 15:52:33

  Modified:    jk/native2/jni jk_jni_aprImpl.c
  Log:
  Few fixes. Now the scoreboard works from the java side as well.
  
  Started work on the mutexes.
  
  Revision  Changes    Path
  1.12      +128 -3    jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c
  
  Index: jk_jni_aprImpl.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- jk_jni_aprImpl.c  17 Apr 2002 22:51:02 -0000      1.11
  +++ jk_jni_aprImpl.c  18 Apr 2002 22:52:33 -0000      1.12
  @@ -199,9 +199,28 @@
       apr_status_t rv;
       apr_shm_t *aprShm;
       
  +    rv = apr_shm_attach(&aprShm, fname, pool);
  +
  +    (*jniEnv)->ReleaseStringUTFChars(jniEnv, fileJ, fname);
  +    
  +    if (rv != APR_SUCCESS) {
  +        return (jlong)NULL;
  +    }
  +    return (jlong)(long)(void *)aprShm;
  +}
  +
  +JNIEXPORT jlong JNICALL 
  +Java_org_apache_jk_apr_AprImpl_shmCreate(JNIEnv *jniEnv, jobject _jthis, jlong 
poolJ,
  +                                         jlong size, jstring fileJ)
  +{
  +    char *fname=(char *)(*jniEnv)->GetStringUTFChars(jniEnv, fileJ, 0);
  +    apr_pool_t *pool=(apr_pool_t *)(void *)(long)poolJ;
  +    apr_status_t rv;
  +    apr_shm_t *aprShm;
  +    
       apr_file_remove(fname, pool); /* ignore errors */
       
  -    rv = apr_shm_attach(&aprShm, fname, pool);
  +    rv = apr_shm_create(&aprShm, size, fname, pool);
   
       (*jniEnv)->ReleaseStringUTFChars(jniEnv, fileJ, fname);
       
  @@ -218,8 +237,10 @@
   {
       apr_shm_t *shm=(apr_shm_t *)(void *)(long)shmP;
       void *sb_shared;
  -    
  +
  +    fprintf(stderr, "GET BASE ADDR %p", shmP ); 
       sb_shared = apr_shm_baseaddr_get(shm);
  +    fprintf(stderr, "GOt BASE ADDR %p", sb_shared ); 
       return (jlong)(long)(void *)sb_shared;
   }
        
  @@ -251,6 +272,56 @@
       return apr_shm_destroy(shm);
   }
   
  +
  +JNIEXPORT jint JNICALL 
  +Java_org_apache_jk_apr_AprImpl_shmRead(JNIEnv *jniEnv, jobject _jthis, 
  +                                       jlong poolJ, jlong mP, 
  +                                       jbyteArray bufJ, jint from, jint cnt)
  +{
  +    apr_pool_t *pool=(apr_pool_t *)(void *)(long)poolJ;
  +    char *mem=(char *)(void *)(long)mP;
  +    jbyte *nbuf;
  +    int rd;
  +    jboolean iscommit;
  +
  +    nbuf = (*jniEnv)->GetByteArrayElements(jniEnv, bufJ, &iscommit);
  +    if( ! nbuf ) {
  +        return -1;
  +    }
  +
  +    memcpy( nbuf + from, mem, cnt ); 
  +    
  +    (*jniEnv)->ReleaseByteArrayElements(jniEnv, bufJ, nbuf, 0);
  +    return (jint)cnt;
  +}
  +
  +JNIEXPORT jint JNICALL 
  +Java_org_apache_jk_apr_AprImpl_shmWrite(JNIEnv *jniEnv, jobject _jthis, 
  +                                       jlong poolJ, jlong mP, 
  +                                       jbyteArray bufJ, jint from, jint cnt)
  +{
  +    apr_status_t status;
  +    apr_pool_t *pool=(apr_pool_t *)(void *)(long)poolJ;
  +    jbyte *nbuf;
  +    char *mem=(char *)(void *)(long)mP;
  +    int rd;
  +    jboolean iscommit;
  +
  +    nbuf = (*jniEnv)->GetByteArrayElements(jniEnv, bufJ, &iscommit);
  +    if( ! nbuf ) {
  +        return -1;
  +    }
  +
  +    /* write */
  +    memcpy( mem, nbuf + from,  cnt ); 
  +    
  +    (*jniEnv)->ReleaseByteArrayElements(jniEnv, bufJ, nbuf, 0);
  +    return (jint)rd;
  +}
  +
  +
  +
  +
   #else
   
   
  @@ -261,6 +332,12 @@
       return (jlong)0;
   }
   
  +JNIEXPORT jlong JNICALL 
  +Java_org_apache_jk_apr_AprImpl_shmCreate(JNIEnv *jniEnv, jobject _jthis, jlong 
poolJ,
  +                                         jstring fileJ)
  +{
  +        return (jlong)0;
  +}
   
   JNIEXPORT jlong JNICALL 
   Java_org_apache_jk_apr_AprImpl_shmBaseaddrGet(JNIEnv *jniEnv, jobject _jthis, jlong 
pool,
  @@ -296,7 +373,7 @@
   /* -------------------- interprocess mutexes -------------------- */
   
   JNIEXPORT jlong JNICALL 
  -Java_org_apache_jk_apr_AprImpl_mutexCreate(JNIEnv *jniEnv, jobject _jthis, jlong 
pool,
  +Java_org_apache_jk_apr_AprImpl_mutexCreate(JNIEnv *jniEnv, jobject _jthis, jlong 
poolP,
                                              jstring fileJ,
                                              jint mechJ )
   {
  @@ -309,6 +386,54 @@
       st=apr_proc_mutex_create( &mutex, fname, mech, pool );
       
       return (jlong)(long)(void *)mutex;
  +}
  +
  +JNIEXPORT jlong JNICALL 
  +Java_org_apache_jk_apr_AprImpl_mutexLock(JNIEnv *jniEnv, jobject _jthis, jlong 
poolP,
  +                                         jlong mutexP )
  +{
  +    apr_proc_mutex_t *mutex=(apr_proc_mutex_t *)(void *)(long)mutexP;
  +    apr_status_t  st;
  +    
  +    st=apr_proc_mutex_lock( mutex );
  +    
  +    return (jlong)(long)st;
  +}
  +
  +JNIEXPORT jlong JNICALL 
  +Java_org_apache_jk_apr_AprImpl_mutexTryLock(JNIEnv *jniEnv, jobject _jthis, jlong 
poolP,
  +                                         jlong mutexP )
  +{
  +    apr_proc_mutex_t *mutex=(apr_proc_mutex_t *)(void *)(long)mutexP;
  +    apr_status_t  st;
  +    
  +    st=apr_proc_mutex_trylock( mutex );
  +    
  +    return (jlong)(long)st;
  +}
  +
  +JNIEXPORT jlong JNICALL 
  +Java_org_apache_jk_apr_AprImpl_mutexUnLock(JNIEnv *jniEnv, jobject _jthis, jlong 
poolP,
  +                                         jlong mutexP )
  +{
  +    apr_proc_mutex_t *mutex=(apr_proc_mutex_t *)(void *)(long)mutexP;
  +    apr_status_t  st;
  +    
  +    st=apr_proc_mutex_unlock( mutex );
  +    
  +    return (jlong)(long)st;
  +}
  +
  +JNIEXPORT jlong JNICALL 
  +Java_org_apache_jk_apr_AprImpl_mutexDestroy(JNIEnv *jniEnv, jobject _jthis, jlong 
poolP,
  +                                            jlong mutexP )
  +{
  +    apr_proc_mutex_t *mutex=(apr_proc_mutex_t *)(void *)(long)mutexP;
  +    apr_status_t  st;
  +    
  +    st=apr_proc_mutex_destroy( mutex );
  +    
  +    return (jlong)(long)st;
   }
   
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to