harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Varlamov" <alexey.v.varla...@gmail.com>
Subject Re: [vmi] Retrieving system properties
Date Thu, 14 Dec 2006 07:22:48 GMT
Fixed svn as agreed, both classlib and drlvm impl.
The only minor issue remained, comment and code in the
modules\luni\src\main\native\luni\shared\luniglob.c:99 seems outdated
now:

       /* Should we check if bootclasspath is already set to avoid
unexpected overriding? */
       /*  But this seems to conflict with default IBM VME settings...*/
       /* (*vmInterface)->GetSystemProperty (vmInterface,
BOOTCLASSPATH_PROPERTY, &bootPath);*/
       if (!bootPath)
       <do readClassPathFromPropertiesFile>

I suppose we may drop it now.

--
Alexey

2006/12/13, Tim Ellison <t.p.ellison@gmail.com>:
> yep, just need to fix the comment too
> > +    VMI_ERROR_ILLEGAL_ARG = 5,          /**< The requested system property was
not found */
>
> Regards,
> Tim
>
> Oliver Deakin wrote:
> > Tim Ellison wrote:
> >> GetSystemProperty will return VMI_ERROR_NONE and a string value for
> >> existing properties, or NULL value for a non-existent property.
> >>
> >> We then rename VMI_ERROR_NOT_FOUND to VMI_ERROR_ILLEGAL_ARG and
> >> SetSystemProperty will return VMI_ERROR_NONE for setting an existing
> >> property to a string value, or VMI_ILLEGAL_ARG if there is an attempt to
> >> set the property value to NULL.
> >>
> >> How does that sound?
> >>
> >
> > +1 to that - was writing the same thing but my machine blue screened :(
> > So I imagine the classlib patch would look something like:
> >
> > Index: modules/luni/src/main/native/include/shared/vmi.h
> > ===================================================================
> > --- modules/luni/src/main/native/include/shared/vmi.h    (revision 486074)
> > +++ modules/luni/src/main/native/include/shared/vmi.h    (working copy)
> > @@ -44,7 +44,7 @@
> >     VMI_ERROR_UNIMPLEMENTED = 2,        /**< Function has not been
> > implemented */
> >     VMI_ERROR_UNSUPPORTED_VERSION = 3,  /**< The requested VM interface
> > version is not supported */
> >     VMI_ERROR_OUT_OF_MEMORY = 4,        /**< Not enough memory was
> > available to complete the request */
> > -    VMI_ERROR_NOT_FOUND = 5,            /**< The requested system
> > property was not found */
> > +    VMI_ERROR_ILLEGAL_ARG = 5,          /**< The requested system
> > property was not found */
> >     VMI_ERROR_READ_ONLY = 6,            /**< An attempt was made to
> > modify a read-only item */
> >     vmiErrorEnsureWideEnum = 0x1000000  /* ensure 4-byte enum */
> >   } vmiError;
> > @@ -220,8 +220,13 @@
> >
> >  /**
> >   * @fn VMInterfaceFunctions_::GetSystemProperty(VMInterface * vmi, char
> > *key, char **valuePtr)
> > -  * Retrieve the value of a VM system property.
> > +  * Retrieve the value of a VM system property.
> >   *
> > +  * If the property exists, returns VMI_ERROR_NONE and *valuePtr
> > +  * will be the address of the string value.
> > +  * If the propery does not exist, returns VMI_ERROR_NONE and
> > +  * *valuePtr will be NULL.
> > +  *
> >   * @note The returned string is owned by the VM, and should not be freed.
> >   */
> >   vmiError JNICALL GetSystemProperty (VMInterface * vmi, char *key,
> > @@ -230,7 +235,10 @@
> > /**
> >  * @fn VMInterfaceFunctions_::SetSystemProperty(VMInterface * vmi, char
> > *key, char *value)
> >  * Override the value of a VM system property
> > - *
> > + *
> > + * Returns VMI_ERROR_NONE if the property is set successfully.
> > + * Returns VMI_ERROR_ILLEGAL_ARG if value is NULL.
> > + *
> >  * @code vmiError JNICALL SetSystemProperty(VMInterface* vmi, char* key,
> > char* value); @endcode
> >  *
> >  * @param[in] vmi  The VM interface pointer
> > Index: modules/luni/src/main/native/luni/shared/luniglob.c
> > ===================================================================
> > --- modules/luni/src/main/native/luni/shared/luniglob.c    (revision
> > 486569)
> > +++ modules/luni/src/main/native/luni/shared/luniglob.c    (working copy)
> > @@ -269,14 +269,18 @@
> >         /* Make a string version of the CP separator */
> >         char cpSeparator[] = {(char)hysysinfo_get_classpathSeparator (),
> > '\0'};
> >        -        /* Read current value of bootclasspath property */
> > +        /* Read current value of bootclasspath property - sets
> > +           bootstrapClassPath = NULL if the property does not exist */
> >         rcGetProperty = (*vmInterface)->GetSystemProperty (vmInterface,
> >             BOOTCLASSPATH_PROPERTY,
> >             &bootstrapClassPath);
> >
> > -        /* Gregory - no property is found, VM bootclasspath is not
> > defined */
> > +        /* There has been an error getting the property - cleanup and
> > exit */
> >         if (VMI_ERROR_NONE != rcGetProperty)
> > -            bootstrapClassPath = NULL;
> > +        {
> > +            returnCode = JNI_ERR;
> > +            goto cleanup;
> > +        }
> >
> >         qsort(props, number, sizeof(key_value_pair), props_compare);
> >
> >
> > Regards,
> > Oliver
> >
> >> Tim
> >>
> >>
> >>
> >>
> >
>

Mime
View raw message