« Return to Thread: [rvm-research] to utilize methods in syscall

Re: [rvm-research] to utilize methods in syscall

by Daniel Frampton :: Rate this Message:

Reply to Author | View in Thread

Syscalls are written in C, so I don't understand your first comment.

Regarding the second comment, you can reserve virtual memory at boot
image build time by creating a 'space'. Have a look at the spaces
(e.g., immortalSpace) created in Plan.java, or nurserySpace in
Gen.java.

At run-time, as space is required calls are made from the space
classes into classes within the org.mmtk.utility.heap package. Have a
look there, in particular at Mmapper and the PageResource classes.
These classes are responsible for making the syscalls to actually map
memory. If you have some special initialization that is required you
can insert it around (or instead of) these calls.

Cheers,
Daniel.

On Fri, Jun 19, 2009 at 6:12 PM, Liangliang Tong<lltong@...> wrote:

> Daniel Frampton wrote:
>> Spaces are allocated by global plan classes.
>> MMTk/src/org/mmtk/plan/Plan.java is the base class.
>>
>> It seems that the 'right' thing to do is to wait for for MMTk to mmap
>> memory in the space, and then use syscalls after (or instead) to set
>> the 'special attributes'.
>>
> there comes the problem. These "special attributes" concern with cache
> and hardware counters, which can in no way be seen by rvm, thus I wrote
> the corresponding codes in C/C++.
>> In any case there is no way you can use vmRequest at runtime, which is
>> the only time you can use syscalls. vmRequest is for the bootimage
>> build-time partitioning of the space.
>>
> I understand the errors prompted by the rvm now. Then if I want to map
> the special memory space, I need to setup this memory space at the
> boot-image build time?
> Could you briefly describe the process of initializing heap region or
> give me any references?
> Thanks.
>
>> Cheers,
>> Daniel.
>>
>> On Fri, Jun 19, 2009 at 5:38 PM, Liangliang Tong<lltong@...> wrote:
>>
>>> Dear Robin,
>>> Using a custom function, I can create an address space with special
>>> attributes. Now I want to use this address chunk as the nursery space of
>>> a generational collector.
>>> I originally, as described in the first mail, want to use the sysCalls
>>> and VMRequest class. That is, to build the custom function into the
>>> sysCalls, and use the vmRequest.create(Address address, Extent extent)
>>> method to map the special address space into the nursery. It doesn't
>>> work, as you see.
>>> Then, I am wondering, are there any other ways that I can resort to?
>>> Thanks.
>>>
>>> Regards,
>>> Liangliang
>>>
>>> Robin Garner wrote:
>>>
>>>> Liangliang Tong wrote:
>>>>
>>>>
>>>>> Dear Robin,
>>>>>
>>>>> Thanks for your reply.
>>>>> I am just taking sysMalloc as an example, the actual method I called is
>>>>> another custom allocation function implemented by myself. This function
>>>>> applies special characteristics to the allocated memory chunk, which I
>>>>> hope to use as a nursery space. Rawpagespace does not help.
>>>>> In this case, what am I supposed to do in order to achieve my target?
>>>>> Thanks.
>>>>>
>>>>>
>>>>>
>>>> I'm not sure I understand what your target is - perhaps you could use a
>>>> better example ?
>>>>
>>>> I've outlined the steps you need to follow in order to make an arbitrary
>>>> syscall (and for more details, follow a method like 'dzmmap' through the
>>>> interface).
>>>>
>>>> If you want to implement a new allocator (at the object level), then
>>>> what you want to do is sub-class Space and Allocator for the global and
>>>> thread-local components of the allocator.  If you want to change how a
>>>> Space acquires pages from the OS, then you should create a new
>>>> PageResource and define or modify a sub-class of Space that uses it.
>>>>
>>>> If you need more explanation, please tell us in more detail what it is
>>>> you're trying to do.
>>>>
>>>> Regards,
>>>> Robin
>>>>
>>>>
>>>>> Regards,
>>>>> Liangliang
>>>>>
>>>>> Robin Garner wrote:
>>>>>
>>>>>
>>>>>
>>>>>> Liangliang Tong wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Dear all,
>>>>>>>
>>>>>>> In org.mmtk.plan.generational.Gen.java, I want to modify the vmRequest
>>>>>>> to request for an explicit region of memory, like the following:
>>>>>>>    private static final VMRequest vmRequest =
>>>>>>> VMRequest.create(sysCall.sysMalloc(1 << 20),  Extent.fromIntSignExtend(1
>>>>>>> << 20));
>>>>>>> correspondingly I add a new import statement:
>>>>>>>  import static org.jikesrvm.runtime.SysCall.sysCall;
>>>>>>>
>>>>>>> Yet when I complied the generational copy plan, it prompts these errors:
>>>>>>> compile-mmtk:
>>>>>>>     [javac] Compiling 1 source file to
>>>>>>> /home/lltong/jikesrvm/target/mmtk/classes
>>>>>>>     [javac]
>>>>>>> /home/lltong/jikesrvm/MMTk/src/org/mmtk/plan/crgenerational/CRGen.java:33:
>>>>>>> package org.jikesrvm.runtime does not exist
>>>>>>>     [javac] import static org.jikesrvm.runtime.SysCall.sysCall;
>>>>>>>     [javac]                                   ^
>>>>>>>     [javac]
>>>>>>> /home/lltong/jikesrvm/MMTk/src/org/mmtk/plan/crgenerational/CRGen.java:33:
>>>>>>> static import only from classes and interfaces
>>>>>>>     [javac] import static org.jikesrvm.runtime.SysCall.sysCall;
>>>>>>>     [javac] ^
>>>>>>>     [javac]
>>>>>>> /home/lltong/jikesrvm/MMTk/src/org/mmtk/plan/crgenerational/CRGen.java:91:
>>>>>>> cannot find symbol
>>>>>>>     [javac] symbol  : variable sysCall
>>>>>>>     [javac] location: class org.mmtk.plan.crgenerational.CRGen
>>>>>>>
>>>>>>> Why should this happen? Thanks in advance.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> Hi Liangliang,
>>>>>>
>>>>>> As far as I can see, you are trying to request a 1MB chunk of memory,
>>>>>> and you don't care where in the heap it is.  Is this right ?
>>>>>>
>>>>>>
>>>>>> MMTk uses the 'Space' class to abstract over various ways to allocate
>>>>>> memory.  If you simply want a 1MB chunk of raw memory, then you can do
>>>>>>
>>>>>>   RawPageSpace mySpace = new RawPageSpace("mySpace", Integer.MAX_VALUE,
>>>>>> VMRequest.create());
>>>>>>   Address chunkAddr = mySpace.acquire(1<<(20-LOG_BYTES_IN_PAGE));
>>>>>>
>>>>>> If you're using memory as storage for your collector, you should
>>>>>> probably allocate it in the existing metaDataSpace.  If you're
>>>>>> allocating it to give to the mutator, you should probably define a new
>>>>>> space for it.
>>>>>>
>>>>>> Note that a VMRequest is simply a way to communicate your virtual memory
>>>>>> layout requirements to the Space class, and passing it a chunk of
>>>>>> 'malloc'ed memory doesn't make a great deal of sense.  In fact MMTk
>>>>>> itself generally takes the place of 'malloc' in the virtual machine.
>>>>>>
>>>>>>
>>>>>> The reason you can't directly call sysMalloc from MMTk is that MMTk
>>>>>> separates itself from JikesRVM (and its various other host environments)
>>>>>> via the org.mmtk.vm package (the VM interface).  In order to call a new
>>>>>> method on the JikesRVM side of the fence you need to:
>>>>>>
>>>>>> - Choose an interface class to host the method (eg org.mmtk.vm.Memory)
>>>>>> - Add an abstract method to the interface class
>>>>>> - Add a concrete method to the implementation on the VM side of the
>>>>>> fence (for JikesRVM that is org.jikesrvm.mm.mmtk, in the
>>>>>> MMTk/ext/vm/jikesrvm directory)
>>>>>>
>>>>>> but I think it would generally be a bad idea for you to allocate memory
>>>>>> for JikesRVM using sysMalloc.
>>>>>>
>>>>>> Regards,
>>>>>> Robin
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>>>>> Check out the new simplified licensing option that enables unlimited
>>>>>> royalty-free distribution of the report engine for externally facing
>>>>>> server and web deployment.
>>>>>> http://p.sf.net/sfu/businessobjects
>>>>>> _______________________________________________
>>>>>> Jikesrvm-researchers mailing list
>>>>>> Jikesrvm-researchers@...
>>>>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>> ------------------------------------------------------------------------------
>>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>>> Check out the new simplified licensing option that enables unlimited
>>>> royalty-free distribution of the report engine for externally facing
>>>> server and web deployment.
>>>> http://p.sf.net/sfu/businessobjects
>>>> _______________________________________________
>>>> Jikesrvm-researchers mailing list
>>>> Jikesrvm-researchers@...
>>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>>
>>>>
>>>>
>>> --
>>> Regards,
>>> Liangliang Tong
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>> Check out the new simplified licensing option that enables unlimited
>>> royalty-free distribution of the report engine for externally facing
>>> server and web deployment.
>>> http://p.sf.net/sfu/businessobjects
>>> _______________________________________________
>>> Jikesrvm-researchers mailing list
>>> Jikesrvm-researchers@...
>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>
>>>
>>
>> ------------------------------------------------------------------------------
>> Crystal Reports - New Free Runtime and 30 Day Trial
>> Check out the new simplified licensing option that enables unlimited
>> royalty-free distribution of the report engine for externally facing
>> server and web deployment.
>> http://p.sf.net/sfu/businessobjects
>> _______________________________________________
>> Jikesrvm-researchers mailing list
>> Jikesrvm-researchers@...
>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>
>>
>
>
> --
> Regards,
> Liangliang Tong
>
>
> ------------------------------------------------------------------------------
> Crystal Reports - New Free Runtime and 30 Day Trial
> Check out the new simplified licensing option that enables unlimited
> royalty-free distribution of the report engine for externally facing
> server and web deployment.
> http://p.sf.net/sfu/businessobjects
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

 « Return to Thread: [rvm-research] to utilize methods in syscall