On 2016-09-06 00:29, Ralf Ramsauer wrote:
> On 09/05/2016 10:17 AM, Jan Kiszka wrote:
>> On 2016-08-28 14:39, Ralf Ramsauer wrote:
>>> Directories in /sys/devices/jailhouse/cells/ formerly represented cell 
>>> names.
>>>
>>> This patch changes this structure. From now on, 
>>> /sys/devices/jailhouse/cells/
>>> will contain cell ids. The name of a specific cell got moved to
>>> /sys/devices/jailhouse/cells/<id>/name.
>>>
>>> This makes the sysfs interface easier to be parsed by applications.
>>>
>>> Also align documentation, jailhouse-cell-list and
>>> jailhouse-completion.bash to the changes.
>>>
>>> Signed-off-by: Ralf Ramsauer <[email protected]>
>>> ---
>>>  Documentation/sysfs-entries.txt |  4 ++--
>>>  driver/sysfs.c                  | 14 +++++++-------
>>>  tools/jailhouse-cell-list       |  4 ++--
>>>  tools/jailhouse-completion.bash | 14 +++++---------
>>>  4 files changed, 16 insertions(+), 20 deletions(-)
>>>
>>> diff --git a/Documentation/sysfs-entries.txt 
>>> b/Documentation/sysfs-entries.txt
>>> index 2845220..0fc315a 100644
>>> --- a/Documentation/sysfs-entries.txt
>>> +++ b/Documentation/sysfs-entries.txt
>>> @@ -11,8 +11,8 @@ can be used for monitoring the state of the hypervisor 
>>> and its cells.
>>>  |- remap_pool_size              - number of pages in hypervisor remapping 
>>> pool
>>>  |- remap_pool_used              - used pages of hypervisor remapping pool
>>>  `- cells
>>> -   |- <name of cell>
>>> -   |  |- id                     - unique numerical ID
>>> +   |- <id>                      - unique numerical ID
>>> +   |  |- name                   - cell name
>>>     |  |- state                  - "running", "running/locked", "shut 
>>> down", or
>>>     |  |                           "failed"
>>>     |  |- cpus_assigned          - bitmask of assigned logical CPUs
>>> diff --git a/driver/sysfs.c b/driver/sysfs.c
>>> index a18c2b9..8c2a11f 100644
>>> --- a/driver/sysfs.c
>>> +++ b/driver/sysfs.c
>>> @@ -139,12 +139,12 @@ static struct attribute_group stats_attr_group = {
>>>     .name = "statistics"
>>>  };
>>>  
>>> -static ssize_t id_show(struct kobject *kobj, struct kobj_attribute *attr,
>>> -                  char *buffer)
>>> +static ssize_t name_show(struct kobject *kobj, struct kobj_attribute *attr,
>>> +                    char *buffer)
>>>  {
>>>     struct cell *cell = container_of(kobj, struct cell, kobj);
>>>  
>>> -   return sprintf(buffer, "%u\n", cell->id);
>>> +   return sprintf(buffer, "%s\n", cell->name);
>>>  }
>>>  
>>>  static ssize_t state_show(struct kobject *kobj, struct kobj_attribute 
>>> *attr,
>>> @@ -212,14 +212,14 @@ static ssize_t cpus_failed_show(struct kobject *kobj,
>>>     return written;
>>>  }
>>>  
>>> -static struct kobj_attribute cell_id_attr = __ATTR_RO(id);
>>> +static struct kobj_attribute cell_name_attr = __ATTR_RO(name);
>>>  static struct kobj_attribute cell_state_attr = __ATTR_RO(state);
>>>  static struct kobj_attribute cell_cpus_assigned_attr =
>>>     __ATTR_RO(cpus_assigned);
>>>  static struct kobj_attribute cell_cpus_failed_attr = 
>>> __ATTR_RO(cpus_failed);
>>>  
>>>  static struct attribute *cell_attrs[] = {
>>> -   &cell_id_attr.attr,
>>> +   &cell_name_attr.attr,
>>>     &cell_state_attr.attr,
>>>     &cell_cpus_assigned_attr.attr,
>>>     &cell_cpus_failed_attr.attr,
>>> @@ -236,8 +236,8 @@ int jailhouse_sysfs_cell_create(struct cell *cell)
>>>  {
>>>     int err;
>>>  
>>> -   err = kobject_init_and_add(&cell->kobj, &cell_type, cells_dir, "%s",
>>> -                              cell->name);
>>> +   err = kobject_init_and_add(&cell->kobj, &cell_type, cells_dir, "%d",
>>> +                              cell->id);
>>>     if (err) {
>>>             jailhouse_cell_kobj_release(&cell->kobj);
>>>             return err;
>>> diff --git a/tools/jailhouse-cell-list b/tools/jailhouse-cell-list
>>> index 3b5bc20..d4123f6 100755
>>> --- a/tools/jailhouse-cell-list
>>> +++ b/tools/jailhouse-cell-list
>>> @@ -54,8 +54,8 @@ if len(sys.argv) > 1:
>>>  cells = []
>>>  for cell_path in glob.glob('/sys/devices/jailhouse/cells/*'):
>>>      cells.append({
>>> -        'name': os.path.basename(cell_path),
>>> -        'id': open(cell_path + "/id").readline().strip(),
>>> +        'id': os.path.basename(cell_path),
>>> +        'name': open(cell_path + "/name").readline().strip(),
>>>          'state': open(cell_path + "/state").readline().strip(),
>>>          'cpus_assigned': read_cpus(cell_path + "/cpus_assigned"),
>>>          'cpus_failed': read_cpus(cell_path + "/cpus_failed")
>>> diff --git a/tools/jailhouse-completion.bash 
>>> b/tools/jailhouse-completion.bash
>>> index a20ea3c..2e4b379 100644
>>> --- a/tools/jailhouse-completion.bash
>>> +++ b/tools/jailhouse-completion.bash
>>> @@ -66,12 +66,9 @@ function _jailhouse_get_id() {
>>>  
>>>             # get possible ids and names
>>>             if [ -d /sys/devices/jailhouse/cells ]; then
>>> -                   for i in /sys/devices/jailhouse/cells/*/id; do
>>> -                           ids="${ids} $(cat "${i}" | tr '\n' ' ')"
>>> -                   done
>>> -                   for n in /sys/devices/jailhouse/cells/*; do
>>> -                           _quote_readline_by_ref "${n##*/}" quoted
>>> -                           names="${names} ${quoted}"
>>> +                   for i in /sys/devices/jailhouse/cells/*; do
>>> +                           ids="${ids} ${i##*/}"
>>> +                           names="${names} $(<${i}/name)"
>>>                     done
>>>             fi
>>>  
>>> @@ -85,9 +82,8 @@ function _jailhouse_get_id() {
>>>  
>>>             # get possible names
>>>             if [ -d /sys/devices/jailhouse/cells ]; then
>>> -                   for n in /sys/devices/jailhouse/cells/*; do
>>> -                           _quote_readline_by_ref "${n##*/}" quoted
>>> -                           names="${names} ${quoted}"
>>> +                   for n in /sys/devices/jailhouse/cells/*/name; do
>>> +                           names="${names} $(<${n})"
>>>                     done
>>>             fi
>>>  
>>>
>>
>> We are getting closer: Could you also convert jailhouse-cell-stats? That
>> should be the last case, I hope.
> Yes, I can, but give me a couple of days. I'm not into

Sure.

> jailhouse-cell-stats, but after a first look, I think the sysfs
> interface in tools/jailhouse.c i recently introduced should make it easy
> to adopt existing behaviour.
> 
> cell-list uses curses. Maybe we can get rid of that as well. A simple
> ANSI clrscr might do all the magic.

You mean cell-stats, don't you? Surely welcome if it works equally well.

>>
>> I don't have other findings so far, still testing.
> Good to hear! Let me know if anything explodes :-)

See the other email I sent shortly after... ;)

Jan

-- 
Siemens AG, Corporate Technology, CT RDA ITP SES-DE
Corporate Competence Center Embedded Linux

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to