Mass Deface
Email Grabber
>= 1
entry += 1
if entry == nr_entries:
break
if entry == nr_entries:
break
return bitmasklist
def cpustring_to_list(cpustr):
"""Convert a string of numbers to an integer list.
Given a string of comma-separated numbers and number ranges,
return a simple sorted list of the integers it represents.
This function will throw exceptions for badly-formatted strings.
Returns a list of integers."""
fields = cpustr.strip().split(",")
cpu_list = []
for field in fields:
ends = field.split("-")
if len(ends) > 2:
raise "Syntax error"
if len(ends) == 2:
cpu_list += range(int(ends[0]), int(ends[1])+1)
else:
cpu_list += [int(ends[0])]
return list(set(cpu_list))
def show_settings(pid, when, cpu_list_mode):
affinity = schedutils.get_affinity(pid)
if cpu_list_mode:
mask = ",".join([str(a) for a in affinity])
else:
mask = ",".join(["%x" % a for a in hexbitmask(affinity)])
print "pid %d's %s affinity mask: %s" % (pid, when, mask)
def change_settings(pid, affinity, cpu_list_mode):
if cpu_list_mode:
try:
affinity = [ int(a) for a in affinity.split(",") ]
except:
affinity = cpustring_to_list(affinity)
else:
affinity = bitmasklist(affinity)
try:
schedutils.set_affinity(pid, affinity)
except SystemError, err:
print "sched_setaffinity: %s" % err[1]
print "failed to set pid %d's affinity" % pid
def main():
args = sys.argv[1:]
if not args:
usage()
return
cpu_list_mode = False
while True:
o = args.pop(0)
if o in ("-h", "--help"):
usage()
return
elif o in ("-c", "--cpu-list"):
cpu_list_mode = True
elif o in ("-p", "--pid"):
if len(args) > 1:
affinity = args.pop(0)
pid = int(args.pop(0))
show_settings(pid, "current", cpu_list_mode)
change_settings(pid, affinity, cpu_list_mode)
show_settings(pid, "new", cpu_list_mode)
else:
pid = int(args.pop(0))
show_settings(pid, "current", cpu_list_mode)
return
else:
break
affinity = o
change_settings(0, affinity, cpu_list_mode)
os.execvp(args[0], args)
if __name__ == '__main__':
main()