Changeset 33c058d3 in mainline


Ignore:
Timestamp:
2008-05-29T00:20:06Z (16 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e19d667
Parents:
ff48a15
Message:

add support for page size alignment

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/mktmpfs.py

    rff48a15 r33c058d3  
    3535import struct
    3636
     37def align_up(size, alignment):
     38        return (((size) + ((alignment) - 1)) & ~((alignment) - 1))
     39
    3740def usage(prname):
    3841        "Print usage syntax"
    39         print prname + " <PATH> <IMAGE>"
     42        print prname + " <ALIGNMENT> <PATH> <IMAGE>"
    4043
    4144def main():
    42         if (len(sys.argv) < 3):
     45        if (len(sys.argv) < 4):
    4346                usage(sys.argv[0])
    4447                return
    4548       
    46         path = os.path.abspath(sys.argv[1]);
     49        if (not sys.argv[1].isdigit()):
     50                print "<ALIGNMENT> must be a number"
     51                return
     52       
     53        align = int(sys.argv[1], 0)
     54        path = os.path.abspath(sys.argv[2])
    4755        if (not os.path.isdir(path)):
    4856                print "<PATH> must be a directory"
    4957                return
    5058       
    51         header_size = 18
     59        header_size = align_up(18, align)
    5260        payload_size = 0
    53         outf = file(sys.argv[2], "w")
     61        outf = file(sys.argv[3], "w")
    5462        outf.write(struct.pack("<" + ("%d" % header_size) + "x"))
    5563       
     
    8088                        payload_size += 5 + len(canon)
    8189       
     90        aligned_size = align_up(payload_size, align)
     91       
     92        if (aligned_size - payload_size > 0):
     93                outf.write(struct.pack("<" + ("%d" % (aligned_size - payload_size)) + "x"))
     94       
    8295        outf.seek(0)
    83         outf.write(struct.pack("<4sBBLQ", "HORD", 1, 1, header_size, payload_size))
     96        outf.write(struct.pack("<4sBBLQ", "HORD", 1, 1, header_size, aligned_size))
    8497        outf.close()
    8598
Note: See TracChangeset for help on using the changeset viewer.