On 30.09.19 21:13, Andrej Utz wrote:
> From: Ralf Ramsauer <[email protected]>
> 
> Move the next part to the new class: the whole file parser.
> 
> For the moment, this leaves an ugly one-liner in parse_iomem_file, but let's
> keep it for the moment -- we'll clean that up later.
> 
> Signed-off-by: Ralf Ramsauer <[email protected]>
> ---
>  pyjailhouse/sysfs_parser.py | 50 ++++++++++++++++++++-----------------
>  1 file changed, 27 insertions(+), 23 deletions(-)
> 
> diff --git a/pyjailhouse/sysfs_parser.py b/pyjailhouse/sysfs_parser.py
> index a179461d..b72be367 100644
> --- a/pyjailhouse/sysfs_parser.py
> +++ b/pyjailhouse/sysfs_parser.py
> @@ -834,6 +834,32 @@ class IORegionTree:
>  
>          return level, TargetClass(int(region[0], 16), int(region[1], 16), 
> type)
>  
> +    @staticmethod
> +    def parse_io_file(filename, TargetClass):
> +        root = IOMemRegionTree(None, 0)
> +        f = input_open(filename)
> +        lastlevel = 0
> +        lastnode = root
> +        for line in f:
> +            level, r = IORegionTree.parse_io_line(line, TargetClass)

Style.

> +            t = IOMemRegionTree(r, level)
> +            if t.level > lastlevel:
> +                t.parent = lastnode
> +            if t.level == lastlevel:
> +                t.parent = lastnode.parent
> +            if t.level < lastlevel:
> +                p = lastnode.parent
> +                while t.level < p.level:
> +                    p = p.parent
> +                t.parent = p.parent
> +
> +            t.parent.children.append(t)
> +            lastnode = t
> +            lastlevel = t.level
> +        f.close()
> +
> +        return root
> +
>  
>  class IOMemRegionTree:
>      def __init__(self, region, level):
> @@ -877,29 +903,7 @@ class IOMemRegionTree:
>  
>      @staticmethod
>      def parse_iomem_file():
> -        root = IOMemRegionTree(None, 0)
> -        f = input_open('/proc/iomem')
> -        lastlevel = 0
> -        lastnode = root
> -        for line in f:
> -            level, r = IORegionTree.parse_io_line(line, MemRegion)
> -            t = IOMemRegionTree(r, level)
> -            if (t.level > lastlevel):
> -                t.parent = lastnode
> -            if (t.level == lastlevel):
> -                t.parent = lastnode.parent
> -            if (t.level < lastlevel):
> -                p = lastnode.parent
> -                while(t.level < p.level):
> -                    p = p.parent
> -                t.parent = p.parent
> -
> -            t.parent.children.append(t)
> -            lastnode = t
> -            lastlevel = t.level
> -        f.close()
> -
> -        return root
> +        return IORegionTree.parse_io_file('/proc/iomem', MemRegion)
>  
>      # find specific regions in tree
>      @staticmethod
> 

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT 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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jailhouse-dev/555f58d6-8497-3cbd-dc33-5731df8ca2af%40siemens.com.

Reply via email to