blob: f9f1862944c8e55070b523bd5ab4fd094dc76b4a [file] [log] [blame]
#! /usr/bin/python3
# -*- python -*-
# -*- coding: utf-8 -*-
#
# Copyright (C) 2007 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
from six.moves import range
def hexbitmask(l, nr_entries):
hexbitmask = []
bit = 0
mask = 0
for entry in range(nr_entries):
if entry in l:
mask |= (1 << bit)
bit += 1
if bit == 32:
bit = 0
hexbitmask.insert(0, mask)
mask = 0
if bit < 32 and mask != 0:
hexbitmask.insert(0, mask)
return hexbitmask
def bitmasklist(line, nr_entries):
hexmask = line.strip().replace(",", "")
bitmasklist = []
entry = 0
bitmask = bin(int(hexmask, 16))[2::]
for i in reversed(bitmask):
if int(i) & 1:
bitmasklist.append(entry)
entry += 1
if entry == nr_entries:
break
return bitmasklist