On Mon, Jun 15, 2020 at 11:29 AM Utkarsh Rai <utkarsh.ra...@gmail.com> wrote:
>
>
>
>
> On Mon, Jun 15, 2020 at 6:46 PM Joel Sherrill <j...@rtems.org> wrote:
>>
>>
>>
>> On Wed, Jun 10, 2020 at 7:34 PM Utkarsh Rai <utkarsh.ra...@gmail.com> wrote:
>>>
>>> Hello,
>>> For my GSoC project, user-configurable thread stack protection, I need to 
>>> track, allocate, and manipulate attributes of shared as well as protected 
>>> stacks. Dr.Gedare suggested that tracking them with score objects would be 
>>> a good idea. He also indicated a good place to start and understand score 
>>> objects would be through this ticket.
>>>
>>> From the information that I could find in docs, my understanding of score 
>>> objects is that they are a type of directive that helps introduce 
>>> modularity to RTEMS as various types of RTEMS objects like message queues, 
>>> semaphores, etc. can use the same set of directives for 
>>> allocation/deallocation and control of their object types.
>>
>>
>> It is probably easier for you to think about the score as a collection of 
>> core classes that are reused across the public APIs. They do have strong 
>> modularity but they also ensure that the correct and optimized behavior is 
>> present across both the Classic and POSIX APIs. For example, a mutex can be 
>> optimized and made computer science correct just once and both the POSIX and 
>> Classic APIs benefit. Whether you call this layering, modularity, packaging, 
>> or classes is OK.
>>
>> If you look at the Doxygen, you will see there is even a bit of inheritance.
>>
>>>
>>> Some of the examples of the implementation that I could find used 
>>> _Object_Iniitialize_information()
>>> to initialize the object type, then _Object_Allocate()/Free() 
>>> allocate/de-allocate the object. Object_Id is used to control the object 
>>> type. My confusion is, how do we use object IDs to refer to and control the 
>>> allocated objects?
>>
>>
>> Every public API with an ID uses the score Object Handler to convert that ID 
>> into an instance to an object (base class) which is cast to an instance of 
>> the proper API type. An object has a name, ID, and a chain node. Any object 
>> can be put on lists. This is important because that's how the inactive set 
>> of each class of objects is managed. Various things are put on FIFO lists.
>>
>> The Chain handler which defines the Node structure and the Red-Black Tree 
>> are the foundation of many RTEMS data structures/algorithms.
>
>
> In the case of my project, I need to track and set the attributes of 
> protected and shared stacks. The current implementation looks like this, 
> maybe the APIs need to be in the public space, and if not, the stacks need to 
> be tracked by score objects. I suppose the important question is,  what are 
> the expectations as to how a mergeable implementation of this should look 
> like?
>

Any resource managed by RTEMS should offer some API and mechanisms to
configure it. The current mmap/shm implementation missed that point
when I created it, and should be fixed.

>>
>>>
>>>
>>> I also have some confusion in the above-mentioned ticket, it says-
>>> 'The mmap_h handler should construct a mapping object. A destructor is 
>>> currently missing. Maybe the mmap_h handler should use a flag to deal with 
>>> construction and destruction.'
>>>  I am unclear as to how the mmap_h handler should precisely look like and 
>>> where should it be defined?
>>
>>
>> I don't think this will be useful for your project. This is only used to 
>> provide a BSP specific mechanism to attach memory. This is primarily used in 
>> paravirtualized environments to allow the BSP to map memory shared with 
>> other address spaces. Without a hypervisor or host under RTEMS, this isn't 
>> going to be used. Although I think Gedare has at least one use case beyond 
>> this for it.
>>

There might be uses for it in libbsd, where there are portability
issues for applications that expect a functional mmap to exist. I
don't remember right off the top of my head though.

>> I think the stack allocator/deallocator hooks will be more useful.
>>
>>
>>>
>>> I would be grateful if you can provide some help in figuring this out.
>>>
>>> Regards,
>>> Utkarsh
>>>
>>> _______________________________________________
>>> devel mailing list
>>> devel@rtems.org
>>> http://lists.rtems.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to