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

  Ralf
> 
> Thanks,
> Jan
> 

-- 
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