Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[dsdp-tcf-dev] [Bug 271895] New: [tcf][api] Grouping service proposal

https://bugs.eclipse.org/bugs/show_bug.cgi?id=271895  
Product/Component: Target Management / TCF
           Summary: [tcf][api] Grouping service proposal
           Product: Target Management
           Version: 3.0
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P3
         Component: TCF
        AssignedTo: dsdp.tm.tcf-inbox@xxxxxxxxxxx
        ReportedBy: sidharth@xxxxxxxxxxxxx
         QAContact: martin.oberhuber@xxxxxxxxxxxxx
                CC: eugene.tarassov@xxxxxxxxxxxxx,
                    felix.burton@xxxxxxxxxxxxx, sidharth@xxxxxxxxxxxxx


We are targeting a multicore processor that allows creating groups of cores.
Based on that support, we would like to give users the ability to create core
groups and execute synchronous run control operations on such groups.

Here is a proposal for a simple grouping service, the purpose of which is the
creation and management of such groups of contexts.

-------------------------------------------------------------------------------
Grouping service


The grouping service allows grouping of a set of resources/contexts together in
order to combine them and to perform operations on all the contexts
collectively.

The context hierarchy of the grouping service contains all the elements which
can be possibly added to a group as well as the actually configured groups.


A service implementation can implement the Grouping service so that a resource
can only be added to a single group, by doing so it would provide a way to
reserve the resource for the client creating the group. However this behavior
is not mandatory and it is not enforced that only the client creating the group
is using the group or its children.


The grouping service on its own only provides the capabilities to create, list
and remove groups, it does not provide the operations for which the group was
built. In order to perform operations on groups, other services have to be
used. For example the standard RunControl service could expose and support
operations on a group context representing a set of cores with atomic resume
and suspend operations.


The service uses standard format for error reports, see Error Report Format in
the TCF specification.


Commands:


Get Context



C • <token> • Grouping • getContext • <string: context ID> •



R • <token> • <error report> • <context data> •



<context data>

    • null

    • <object>



The command retrieves context information for given context identifier.



Context data object shall, at least, contain the property “ID" : <string>.

The context data obtained is expected to be cached by clients.

A service implementation shall send the contextChanged event to notify changes
in context data.



Predefined group service context properties are:



 "ID" : <string> - Identifier of the context, same as getContext command
argument. The ID is chosen by the service implementation.

"Name" : <string> - The group name is given by the creator of the group. The
name is preferably unique, but this is not required or checked.



"ParentID" : <string> - Identifier of the parent context.



"supportsGrouping" : <boolean> - indicates is this context can be part of a
group.



"isGroup" : <boolean> - is true for contexts representing a group.




Get Children



C • <token> • Grouping • getChildren • <string: context ID> •



R • <token> • <error report> • <array of context IDs> •



<array of context IDs>

    - null
    - [ ]
    - [ <context ID list> ]


<context ID list>

    - <string: context ID>
    - <context ID list> • <string: context ID>



The command provides access to the context hierarchy of the grouping service.

The context hierarchy contains the resources which can be part of a group as
well as the grouping contexts themselves.

Grouping contexts contain the resource contexts that they are composed of as
children.


Create Group



C • <token> • Grouping • createGroup • <String: name> • <array of context IDs>
•



R • <token> • <error report> • <context data> •



This command creates a new group. The context identifiers used in other
services, most typically the RunControl service are used in order to list the
parts of the system which should build this new group. The creation of a group
will typically fail if another group already contains the same contexts. When a
group is created, the service shall send a contextAdded notification.




Remove Group



C • <token> • Grouping • removeGroup • <string: context ID> •



R • <token> • <error report> •



This command removes the group from the set of existing groups. When a group is
removed, the service shall send a contextRemoved notification.




Add Context



C • <token> • Grouping • addContext • <string: context ID> • <array of context
IDs> •



R • <token> • <error report> •



This command adds contexts to an existing group. The service shall send a
contextChanged event when a context is added to a group.




Remove Context



C • <token> • Grouping • removeContext • <string: context ID> • <array of
context IDs> •



R • <token> • <error report> •



This command removes contexts from a group. The service shall send a
contextChanged event when a context is removed from a group. 




Events


The grouping service broadcasts notification events when groups are created,
removed or when properties of existing groups change.



E • Grouping • contextAdded • <array of context data> •


This event is sent when new group contexts are added.



E • Grouping • contextRemoved • <array of context IDs> •


This event is sent when group contexts are removed.



E • Grouping • contextChanged • <array of context data> •


This event is sent when the properties of a group context, typically the
composition, are changed.


-------------------------------------------------------------------------------
Legal Message: I, Sidharth Kodikal, declare that I developed attached code
from scratch, without referencing any 3rd party materials except material
licensed under the EPL. {I am authorized by my employer to make this
contribution under the EPL.}


-- 
Configure bugmail: https://bugs.eclipse.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.

Back to the top