#!/usr/bin/env python # Copyright (c) 2018 Arista Networks, Inc. All rights reserved. # Arista Networks, Inc. Confidential and Proprietary. # Reboot script for 7050QX-32S from __future__ import print_function import sys import mmap, os import subprocess from struct import pack, unpack class MmapResource( object ): """Resource implementation for a directly-mapped memory region.""" def __init__( self, path ): try: fd = os.open( path, os.O_RDWR ) except EnvironmentError: print( "FAIL can not open scd memory-map resource file" ) print( "FAIL are you running on the proper platform?" ) sys.exit( 1 ) try: size = os.fstat( fd ).st_size except EnvironmentError: print( "FAIL can not fstat scd memory-map resource file" ) print( "FAIL are you running on the proper platform?" ) sys.exit( 1 ) try: self.mmap_ = mmap.mmap( fd, size, mmap.MAP_SHARED, mmap.PROT_READ | mmap.PROT_WRITE ) except EnvironmentError: print( "FAIL can not map scd memory-map file" ) print( "FAIL are you running on the proper platform?" ) sys.exit( 1 ) finally: try: # Note that closing the file descriptor has no effect on the memory map os.close( fd ) except EnvironmentError: print( "FAIL failed to close scd memory-map file" ) sys.exit( 1 ) def read32( self, addr ): return unpack( '